with - PDF String in neuem Fenster mit Javascript öffnen




javascript window.open popup (6)

Ich habe eine formatierte PDF-Zeichenfolge, die aussieht

%PDF-1.73 0 obj<<< /Type /Group /S /Transparency /CS /DeviceRGB >> /Resources 2 0 R/Contents 4 0 R>> endobj4 0 obj<> streamx��R=o�0��+��=|vL�R���l�-��ځ,���Ge�JK����{���Y5�����Z˯k�vf�a��`G֢ۢ��Asf�z�ͼ��`%��aI#�!;�t���GD?!���<�����B�b��

...

00000 n 0000000703 00000 n 0000000820 00000 n 0000000926 00000 n 0000001206 00000 n 0000001649 00000 n trailer << /Size 11 /Root 10 0 R /Info 9 0 R >>startxref2015%%EOF

Ich versuche, diese Zeichenfolge in einem neuen Fenster als PDF-Datei zu öffnen. Immer wenn ich window.open () benutze und die Zeichenfolge auf die neue Registerkarte schreibe, denkt sie, dass der Text der Inhalt eines HTML-Dokuments sein soll. Ich möchte, dass es erkennt, dass dies eine PDF-Datei ist.

Jede Hilfe wird sehr geschätzt


Basierend auf anderen alten Antworten:

escape() Funktion escape() ist jetzt veraltet,

Verwenden encodeURI() stattdessen encodeURI() oder encodeURIComponent() .

Beispiel, das in meiner Situation funktioniert:

window.open("data:application/pdf," + encodeURI(pdfString)); 

Glückliche Kodierung!


Codieren Sie einfach Ihre formatierte PDF-Zeichenfolge in Base 64. Dann sollten Sie Folgendes tun:

$pdf = 'data:application/pdf;base64,'.$base64EncodedString;

gib das auf Javascript zurück und öffne es in einem neuen Fenster:

window.open(return);

Ein Vorschlag ist, dass Sie eine PDF-Bibliothek wie PDFJS verwenden.

Sie müssen die folgenden "data:application/pdf;base64" + Ihre pdf-Zeichenkette anhängen und die src Ihres Elements darauf einstellen.

Versuchen Sie es mit diesem Beispiel:

var pdfsrc = "data:application/pdf;base64" + "67987yiujkhkyktgiyuyhjhgkhgyi...n"

<pdf-element id="pdfOpen" elevation="5" downloadable src="pdfsrc" ></pdf-element>

Ich hoffe es hilft :)


Erstplakat, ich hoffe, es sieht gut aus.

Ich hatte dieses Problem mit einer FedEx-Versandanfrage zu arbeiten. Ich führe die Anfrage mit AJAX durch. Die Antwort enthält Tracking #, Kosten sowie eine PDF-Zeichenfolge, die das Versandetikett enthält.

Folgendes habe ich getan:

Fügen Sie ein Formular hinzu:

<form id='getlabel' name='getlabel' action='getlabel.php' method='post' target='_blank'>
<input type='hidden' id='pdf' name='pdf'>
</form>

Verwenden Sie Javascript, um den Wert des versteckten Feldes mit der PDF-Zeichenfolge zu füllen und das Formular zu senden.

Wo getlabel.php:

<?
header('Content-Type: application/pdf');
header('Content-Length: '.strlen($_POST["pdf"]));
header('Content-Disposition: inline;');
header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: public');
print $_POST["pdf"];
?>

Nur für Informationen, die unten

window.open("data:application/pdf," + encodeURI(pdfString)); 

funktioniert in Chrome nicht mehr. Gestern stieß ich auf das gleiche Problem und probierte diese Lösung aus, aber es funktionierte nicht (es ist "nicht erlaubt, den oberen Frame zur Daten-URL zu navigieren"). Sie können die Daten-URL nicht mehr direkt in einem neuen Fenster öffnen. Aber Sie können es in iframe umschließen und es in einem neuen Fenster wie unten öffnen. =)

let pdfWindow = window.open("")
pdfWindow.document.write("<iframe width='100%' height='100%' src='data:application/pdf;base64, " + encodeURI(yourDocumentBase64VarHere)+"'></iframe>")

Vielleicht möchten Sie den Daten-URI erkunden. Es würde ungefähr so ​​aussehen.

window.open("data:application/pdf," + escape(pdfString));

Ich konnte das nicht sofort zur Arbeit bringen, möglich wegen der Formatierung der bereitgestellten binären Zeichenkette. Normalerweise verwende ich auch base64-kodierte Daten, wenn ich den Daten-URI verwende. Wenn Sie den Inhalt aus dem codierten Backend weitergeben können, können Sie ..

window.open("data:application/pdf;base64, " + base64EncodedPDF);

Hoffentlich ist dies die richtige Richtung für das, was Sie brauchen. Beachten Sie auch, dass dies in IE6 / 7 überhaupt nicht funktioniert, da sie keine Daten-URIs unterstützen.





pdf