Was ist die empfohlene Methode zum Einbetten von PDF in HTML?
- iFrame?
- Objekt?
- Einbetten?
Was sagt sich Adobe dazu?
In meinem Fall wird das PDF im laufenden Betrieb generiert, sodass es vor dem Leeren nicht auf eine Drittanbieterlösung hochgeladen werden kann.
Antworten:
Der wahrscheinlich beste Ansatz ist die Verwendung der PDF.JS- Bibliothek. Es ist ein reiner HTML5 / JavaScript- Renderer für PDF-Dokumente ohne Plugins von Drittanbietern.
Online-Demo: http://mozilla.github.com/pdf.js/web/viewer.html
GitHub: https://github.com/mozilla/pdf.js
quelle
<object>
: github.com/mozilla/pdf.js/blob/master/examples/helloworld/…Dies ist schnell, einfach und auf den Punkt gebracht und erfordert kein Skript von Drittanbietern:
UPDATE (1/2018):
Der Chrome-Browser unter Android unterstützt keine PDF-Einbettungen mehr. Sie können dies mithilfe des Google Drive PDF-Viewers umgehen
quelle
type='application/pdf'
es dem eingebetteten Tag hinzu<object>
Tag besser, da es alternative Inhalte in Browsern anzeigen kann, in denen keine PDFs angezeigt werden können. Kann sogar ein<embed>
Tag in ein<object>
Tag einfügen, wenn Sie möchten. Ref: stackoverflow.com/questions/1244788/embed-vs-objectZu diesem Zweck können Sie auch den Google PDF Viewer verwenden. Soweit ich weiß, handelt es sich nicht um eine offizielle Google-Funktion (irre ich mich?), Aber sie funktioniert für mich sehr gut und reibungslos. Sie müssen Ihr PDF vorher irgendwo hochladen und einfach die URL verwenden:
Wichtig ist, dass kein Flash Player benötigt wird, sondern JavaScript verwendet wird.
quelle
public
,sign-in required
undprivate
. Es ist definitiv eine offizielle Funktion, wenn man bedenkt, dass jedes Dokument in Google Text & Tabellen eineembed
Option hat.Sie haben eine gewisse Kontrolle darüber, wie die PDF-Datei im Browser angezeigt wird, indem Sie einige Optionen in der Abfragezeichenfolge übergeben. Ich war mit dieser Arbeit zufrieden, bis mir klar wurde, dass sie in IE8 nicht funktioniert. :(
Es funktioniert in Chrome 9 und Firefox 3.6, aber in IE8 wird die Meldung "Fügen Sie hier Ihre Fehlermeldung ein, wenn das PDF nicht angezeigt werden kann" angezeigt.
Ich habe jedoch noch keine älteren Versionen der oben genannten Browser getestet. Aber hier ist der Code, den ich trotzdem habe, falls er jemandem hilft. Dadurch wird der Zoom auf 85% eingestellt und Bildlaufleisten, Symbolleisten und Navigationsfenster werden entfernt. Ich werde meinen Beitrag aktualisieren, wenn ich auf etwas stoße, das auch im IE funktioniert.
quelle
Mit beiden
<object>
und<embed>
geben Ihnen eine größere Breite der Browser - Kompatibilität.quelle
embed
Tags für sichunsafe
und Chrome und Firefox als wichtig erachtet wurde.Konvertieren Sie es über ImageMagick in PNG und zeigen Sie das PNG an (schnell und schmutzig).
Dies ist eine gute Option, wenn Sie eine schnelle Lösung benötigen, Probleme mit der browserübergreifenden PDF-Anzeige vermeiden möchten und wenn die PDF-Datei nur ein oder zwei Seiten umfasst. Natürlich muss ImageMagick auf Ihrem Webserver installiert sein (was wiederum Ghostscript erfordert), eine Option, die in gemeinsam genutzten Hosting-Umgebungen möglicherweise nicht verfügbar ist. Es gibt auch eine PHP - Plugin (genannt imagick) , dass Werke wie diese , aber es hat seine eigene spezielle Anforderungen sind.
quelle
foreach($pdf->pages as $page)
für jede Seite ein Bild erstellenSuchen Sie nach diesem Code, um das PDF in HTML einzubetten
quelle
src
fürdata
, wie in @ Gayles Antwort, funktioniert.FDView kombiniert PDF2SWF (das selbst auf xpdf basiert ) mit einem SWF- Viewer, sodass Sie PDF-Dokumente im laufenden Betrieb auf Ihrem Server konvertieren und einbetten können.
xpdf ist kein perfekter PDF-Konverter. Wenn Sie bessere Ergebnisse benötigen, kann Ghostview PDF-Dokumente in andere Formate konvertieren, für die Sie möglicherweise einfacher einen Flash-Viewer erstellen können.
Für einfache PDF-Dokumente sollte FDView jedoch recht gut funktionieren.
quelle
Unser Problem ist, dass wir aus rechtlichen Gründen keine PDF-Dateien vorübergehend auf der Festplatte speichern dürfen . Außerdem sollte nicht die gesamte Seite neu geladen werden, wenn eine PDF-Datei als Vorschau im Browser angezeigt wird.
Zuerst haben wir PDF.jS ausprobiert. Es funktionierte mit Base64 im Viewer für Firefox und Chrome. Für unser PDF war es jedoch inakzeptabel langsam. IE / Edge hat überhaupt nicht funktioniert.
Wir haben es daher mit einer Base64-Zeichenfolge in einem HTML-Objekt-Tag versucht. Dies funktionierte wiederum nicht für IE / Edge (möglicherweise das gleiche Problem wie bei PDF.js). In Chrome / Firefox / Safari wieder kein Problem. Deshalb haben wir uns für eine Hybridlösung entschieden.IE / Edge verwenden wir einen IFrame und für alle anderen Browser das Objekt-Tag.
Die IFrame-Lösung würde natürlich auch für Chrome und Co. funktionieren. Der Grund, warum wir diese Lösung für Chrome nicht verwendet haben, ist, dass Chrome zwar korrekt angezeigt wird, Chrome jedoch eine neue Anfrage an den Server sendet, sobald Sie in der Vorschau auf "Herunterladen" klicken . Das erforderliche versteckten Feldern pdfHelperTransferData (zum Senden unserer für die PDF-Generierung erforderlichen Formulardaten) ist nicht mehr festgelegt, da das PDF in einem IFrame angezeigt wird. Für diese Funktion / diesen Fehler sieheChrome sendet beim Herunterladen einer PDF-Datei zwei Anfragen (und bricht eine davon ab) .
Jetzt bleiben die Problemkinder IE9 und IE10 bestehen. Für diese haben wir eine Vorschau-Lösung aufgegeben und das Dokument einfach durch Klicken auf die Vorschau-Schaltfläche als Download an den Benutzer (anstelle der Vorschau) gesendet. Wir haben viel versucht, aber selbst wenn wir eine Lösung gefunden hätten, wäre der zusätzliche Aufwand für diesen winzigen Teil der Benutzer den Aufwand nicht wert gewesen. Unsere Lösung für den Download finden Sie hier: Laden Sie PDF ohne Aktualisierung mit IFrame herunter .
Unser Javascript:
Unser HTML:
Informationen zum Überprüfen des Browsertyps für IE / Edge finden Sie hier: Wie kann ich Internet Explorer (IE) und Microsoft Edge mithilfe von JavaScript erkennen? Ich hoffe, dass diese Erkenntnisse jemand anderem die Zeit sparen.
quelle
Sie können den relativen Speicherort des gespeicherten PDF wie folgt verwenden:
Beispiel 1
Beispiel2
<iframe src="example.pdf" style="width:1000px; height:800px;" frameborder="0" allowfullscreen></iframe>
quelle
Erstellen Sie einen Container für Ihre PDF-Datei
Teilen Sie PDFObject mit, welches PDF eingebettet werden soll und wo es eingebettet werden soll
Optional können Sie CSS verwenden, um das visuelle Design festzulegen, einschließlich Bemaßungen, Rahmen, Ränder usw.
Quelle: https://pdfobject.com/
quelle
pdf.output('bloburl')
von lib jspdf verwendet, aber es scheint nicht auf IE11 zu funktionieren.Scribd erfordert nicht mehr, dass Sie Ihre Dokumente auf ihrem Server hosten. Wenn Sie ein Konto bei ihnen erstellen, erhalten Sie eine Publisher-ID. Es sind nur wenige Zeilen JavaScript-Code erforderlich, um auf Ihrem eigenen Server gespeicherte PDF-Dateien zu laden.
Weitere Informationen finden Sie unter Entwicklertools .
quelle
quelle
PdfToImageServlet mit ImageMagick's
convert
Befehl .Anwendungsbeispiel:
<img src='/webAppDirectory/PdfToImageServlet?pdfFile=/usr/share/cups/data/default-testpage.pdf'>
quelle
So habe ich es mit AXIOS und Vue.js gemacht:
füge urlPDF dynamisch zu HTML hinzu:
quelle
Eine der Optionen, die Sie in Betracht ziehen sollten, ist Notable PDF.
Es gibt einen kostenlosen Plan, es sei denn, Sie planen eine Online-Zusammenarbeit in Echtzeit für PDFs
Betten Sie Folgendes
iframe
in ein beliebiges HTML ein und genießen Sie die Ergebnisse:quelle
Informationen zum Streamen der Datei in den Browser finden Sie unter Frage zum Stapelüberlauf. So streamen Sie eine PDF-Datei mit .NET 2.0 als Binärdatei in den Browser Beachten Sie, dass dies mit geringfügigen Abweichungen funktionieren sollte, unabhängig davon, ob Sie eine Datei aus dem Dateisystem bereitstellen oder dynamisch generiert.
Vor diesem Hintergrund bietet der referenzierte MSDN-Artikel eine eher vereinfachte Ansicht der Welt. Daher möchten Sie möglicherweise auch erfolgreich einige PDF-Dateien über HTTPS in den Browser streamen, um einige der Header zu erhalten, die Sie möglicherweise bereitstellen müssen.
Mit diesem Ansatz ist ein Iframe wahrscheinlich der beste Weg. Lassen Sie ein Webformular die Datei streamen und platzieren Sie den Iframe auf einer anderen Seite, wobei das
src
Attribut auf das erste Formular festgelegt ist.quelle
Der URI für den Iframe sollte ungefähr so aussehen:
Jetzt zeigen FF, Chrome, IE 11 und Edge die PDF-Datei in einem Viewer im Iframe an, der über den Standard-Blob-URI in der URL übergeben wird.
quelle
Ich musste eine Vorschau eines PDF mit React anzeigen. Nachdem ich mehrere Bibliotheken ausprobiert hatte, bestand meine optimale Lösung darin, die Daten abzurufen und zu ebnen.
quelle
Wenn Sie PDF.JS nicht alleine hosten möchten, können Sie DocDroid ausprobieren . Es ähnelt dem Google Drive PDF-Viewer, ermöglicht jedoch ein benutzerdefiniertes Branding.
quelle
Ich fand, dass dies gut funktioniert und der Browser es in Firefox handhabt. Ich habe IE nicht überprüft ...
quelle