Machen Sie eingebettete PDFs auf dem iPad scrollbar
Lesezeit: 7 Minuten
chrisnova10
Aus irgendeinem Grund kann der iPad-Safari-Browser eingebettete PDFs nicht gut verarbeiten. PDFs werden einzeln gut angezeigt, wenn sie eigenständig gestartet werden, jedoch nicht mit dem Objekt-Tag. Das Problem ist, dass sie nicht scrollen.
Ich habe eine JQuery-Seite mit einem eingebetteten PDF, das auf Mozilla und Chrome gut scrollt, aber auf Safari (iPad) bleibt das PDF auf der ersten Seite hängen und kann nicht gescrollt werden. Die Frage ist, wie mache ich das im iPad-Browser?
Eine ähnliche Frage wurde hier gepostet. Eingebettete PDF-Dateien auf dem iPad scrollbar machen, aber die Antwort ist nicht sehr gut. Sie betrügen, indem sie eine Höhe von 10000 Pixel verwenden, was bei einem kleinen Dokument viel Leerraum erzeugt und bei einem sehr großen Dokument möglicherweise nicht funktioniert:
Gibt es eine Möglichkeit, dies zu erreichen, ohne eine verrückte Höhe fest zu codieren?
Ist das PDF in die App eingebettet oder wird es von einem Server aus angezeigt? Gibt es also einen Grund, warum Sie das PDF in einem UIWebView oder einer mobilen Safari präsentieren müssen?
– Epatel
6. April 2013 um 18:38
Das PDF liegt auf dem Server. Letztendlich werden die PDFs dynamisch auf dem Server aktualisiert und in der App angezeigt, unabhängig von ihrer Form oder Größe. Der Rest der App wird in JQuery erstellt und das iPad ist die Präferenz unseres Benutzers. Im Moment öffne ich die PDFs in einem neuen Browserfenster, weil es funktioniert, aber idealerweise möchte ich sie in die Seite einbetten, damit sie sie nicht verlassen müssen.
– chrisnova10
6. April 2013 um 18:59
Es gibt keine native App?
– Epatel
6. April 2013 um 19:06 Uhr
Nein, nur eine Website – HTML 5 + JQuery
– chrisnova10
6. April 2013 um 19:18
Ich stehe vor dem gleichen Problem und möchte PDF.js nicht verwenden, da es zu kompliziert ist. Ich möchte nur PDF-Dateien mithilfe des Objekt-Tags auf dem iPad anzeigen, da dies auch für alle anderen Browser funktioniert. Irgendwelche Kommentare?
– Wenn nur
11. Januar 2016 um 10:20
MSD
Ich habe jahrelang versucht, eine Lösung für dieses Problem zu finden. Ich werde versuchen, jedem, der danach sucht, etwas Zeit zu ersparen: ES GIBT KEINE LÖSUNG FÜR DIESES PROBLEM. Die Art und Weise, wie Safari mit der PDF-Wiedergabe umgeht, steht in hoffnungslosem Widerspruch zum gesamten Konzept der Einbettung einer PDF-Datei in eine Webseite. Darüber hinaus ist es ERFORDERLICH, dass alle Browser auf einem iPad die Safari-Rendering-Engine verwenden, sodass Sie Benutzer nicht einmal anweisen können, einen anderen Browser zu installieren.
Die einzige Möglichkeit, ein PDF mit anständigen Ergebnissen einzubetten, besteht darin, ein Rendering-Dienstprogramm eines Drittanbieters zu verwenden. Es gibt einige jQuery-Lösungen, aber für meine Zwecke fand ich die einfachste Möglichkeit, dies zu tun, darin, einen Google Doc Viewer-Link in ein Objekt oder einen Iframe-Tag einzubetten. Dies ist relativ einfach durchzuführen und eine einfache Anleitung finden Sie hier:
So zeigen Sie den PDF-Link von Google Drive im Iframe an
Diese Lösung umfasst eine gute Anzeigewiedergabe sowie einfache Paginierungs- und Zoomsteuerungen. Stellen Sie sicher, dass Sie die Option &embedded=true einschließen, wenn Sie es in einen Iframe oder ein Objekt-Tag einbetten, da es sonst nicht funktioniert. Der Viewer benötigt eine öffentlich zugängliche URL zu Ihrem Dokument. Wenn Sie also wie ich Sicherheitsbedenken haben, müssen Sie einen Webdienst schreiben, um das Dokument über ein Einmal-Token bereitzustellen.
Es gibt eine gute Webseite, die mehrere andere Optionen auflistet, falls Sie etwas Robusteres suchen:
Der jqueryrain-Link leitete für mich zu einer betrügerisch aussehenden Seite mit der Aufschrift „Sie haben ein kostenloses iPhone gewonnen“ weiter. Ich frage mich, ob der Seiteninhalt woanders verfügbar ist?
– Jouni K. Seppänen
17. September 2017 um 18:35 Uhr
Ich sehe das. Ich schätze, ich hätte meinem Beitrag ein Ablaufdatum hinzufügen sollen. (Achtung: Links sind vier Jahre nach der Veröffentlichung nicht garantiert funktionsfähig…) oder so ähnlich. 8^P
– MSD
18. September 2017 um 20:30 Uhr
Ich denke, das ist der Grund, warum die Leute immer wieder sagen, wir sollten nicht nur Links posten, sondern deren Inhalt zusammenfassen.
– Jouni K. Seppänen
21. September 2017 um 13:15 Uhr
Ist das jetzt überhaupt eine Antwort? Danach ist der Link abgelaufen und es wurde kein Ersatz vorgenommen? Ekelhaft.
– Akasch
22. Okt. 2017 um 16:45 Uhr
PDF.js kann die richtige Wahl sein. Bei uns funktioniert es perfekt.
Am Ende haben wir diese Methode verwendet, sie hat gut funktioniert und war einfach zu implementieren.
– cjohansson
21. März 2017 um 11:18 Uhr
Hoffentlich kann dies in Zukunft anderen helfen. Ich habe den PDF-Viewer von Google verwendet, um ein PDF in einem Iframe scrollen zu können. Auf dem src-Tag steht also die URL
Danke, das ist die beste Antwort. Obwohl ich beim ersten Laden ein Problem habe. Also lade ich es zweimal in das Dokument.
– Doktor
2. Juni 2020 um 19:51
@Doctore Ich habe das gebunden, aber es ist keine Vorschau verfügbar und manchmal kommt es zu einem 400-Fehler
– Anoop LL
7. April 2021 um 12:10 Uhr
Die Antwort des MSD ist ziemlich genau. Ich habe versucht, dies auf viele verschiedene Arten zu tun, von einigen der vorgeschlagenen Bibliotheken bis hin zur Verwendung von Objekten, eingebetteten Elementen usw.
Auf jeden Fall scrollt es bei mir nicht (iPad Air 2 und Air 1 zumindest unter iOS 8). Oder es scrollt mit übermäßig gestreckten Buchstaben oder funktioniert nur bei kurzen 1-2-seitigen Dokumenten.
Der Lösung Was meiner Meinung nach am effizientesten ist, ist die Bereitstellung eines Links für iPad-Benutzer über den Benutzeragenten, über den sie direkt auf die Datei zugreifen können. Sie können sie dann auf der Registerkarte sehen und gut darin scrollen. Es lässt sich nicht einbetten, ist aber die effizienteste und funktionierendste Lösung, die ich für meine aktuellen Anforderungen finden konnte.
Ich hoffe, es hilft jemandem, der sich mit der gleichen Sache beschäftigt
Sie müssen die Höhe des Objekts nicht auf etwas Verrücktes einstellen, sondern einfach auf die gleiche Höhe wie Ihr Containerelement einstellen. Um mit dem hoffnungslosen Safari-Rendering-Objekt zu scrollen, müssen Sie es verwenden zwei Finger (sowohl nach oben/unten als auch nach links/rechts).
Ich habe auch diese Eigenschaften in meinem Containerelement eingerichtet:
Etwas, das ich nicht erreichen konnte, war, dass es die gesamte Breite des Containers ausfüllte, aber Sie können zumindest durch das Dokument navigieren.
coreehi
Eine andere Lösung (ohne Codierung) ist die Verwendung von Google, wenn Sie Einbettungen nur punktuell nutzen möchten.
Speichern Sie Ihr PDF in Ihrem Google Drive
Öffnen Sie es mit Vorschau.
Wählen Sie im Untermenü der drei Punkte „In neuem Fenster öffnen“.
Wählen Sie im neuen Fenster im Untermenü der drei Elemente „Element einbetten“.
Kopieren Sie den Iframe-Code und fügen Sie ihn in Ihre Seite ein.
Hier Dort finden Sie auch eine ausführliche Anleitung und unter Punkt 12 können Sie den Iframe-Code einsehen.
ajmccall
static downloadPdfChromeApp(linkSource: string) {
// Crea un div y dentro un object para luego destruirlo y abrir una nueva ventana enviando la data
const divpdf = document.createElement('div');
divpdf.innerHTML = '<div style="display:none;position:absolute">' +
'<object style="display:none;" id="docuFrame" type="application/pdf" width="1px" height="1px" data="' +
linkSource + '"></object></div>';
document.firstElementChild.appendChild(divpdf);
const frame = document.getElementById('docuFrame') as HTMLObjectElement;
window.open(frame.data);
divpdf.remove();
}
Hallo @andres. Möglicherweise möchten Sie eine Beschreibung hinzufügen, die erklärt, wie/warum Ihr Code die ursprüngliche Frage des Posters löst.
– ajmccall
29. Juli 2019 um 11:36 Uhr
14523300cookie-checkMachen Sie eingebettete PDFs auf dem iPad scrollbaryes
Ist das PDF in die App eingebettet oder wird es von einem Server aus angezeigt? Gibt es also einen Grund, warum Sie das PDF in einem UIWebView oder einer mobilen Safari präsentieren müssen?
– Epatel
6. April 2013 um 18:38
Das PDF liegt auf dem Server. Letztendlich werden die PDFs dynamisch auf dem Server aktualisiert und in der App angezeigt, unabhängig von ihrer Form oder Größe. Der Rest der App wird in JQuery erstellt und das iPad ist die Präferenz unseres Benutzers. Im Moment öffne ich die PDFs in einem neuen Browserfenster, weil es funktioniert, aber idealerweise möchte ich sie in die Seite einbetten, damit sie sie nicht verlassen müssen.
– chrisnova10
6. April 2013 um 18:59
Es gibt keine native App?
– Epatel
6. April 2013 um 19:06 Uhr
Nein, nur eine Website – HTML 5 + JQuery
– chrisnova10
6. April 2013 um 19:18
Ich stehe vor dem gleichen Problem und möchte PDF.js nicht verwenden, da es zu kompliziert ist. Ich möchte nur PDF-Dateien mithilfe des Objekt-Tags auf dem iPad anzeigen, da dies auch für alle anderen Browser funktioniert. Irgendwelche Kommentare?
– Wenn nur
11. Januar 2016 um 10:20