print open new mostrar convert javascript pdf

open - pdf download javascript



Abrir cadena PDF en una nueva ventana con javascript (9)

Éste trabajó para mí.

window.open("data:application/octet-stream;charset=utf-16le;base64,"+data64);

Este también funcionó

let a = document.createElement("a"); a.href = "data:application/octet-stream;base64,"+data64; a.download = "documentName.pdf" a.click();

Tengo una cadena de PDF formateada que se parece a

%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

Estoy tratando de abrir esta cadena en una nueva ventana como un archivo PDF. Cada vez que uso window.open () y escribo la cadena en la nueva pestaña, cree que el texto debe ser el contenido de un documento HTML. Quiero que reconozca que este es un archivo PDF.

Cualquier ayuda es muy apreciada


Basado en otras respuestas antiguas:

escape() ahora está obsoleta,

Utilice encodeURI() o encodeURIComponent() lugar.

Ejemplo que funcionó en mi situación:

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

Feliz Codificación!


Es posible que desee explorar utilizando el URI de datos. Se vería algo así como

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

No pude hacer esto inmediatamente, es posible porque formé la cadena binaria proporcionada. También usualmente uso datos codificados en base64 cuando uso el URI de datos. Si puede pasar el contenido desde el backend codificado, puede usar ...

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

Espero que esta sea la dirección correcta para lo que necesita. También tenga en cuenta que esto no funcionará en IE6 / 7 porque no son compatibles con los URI de datos.


Me doy cuenta de que esta es una pregunta bastante antigua, pero hoy surgió lo mismo y se me ocurrió la siguiente solución:

doSomethingToRequestData().then(function(downloadedFile) { // create a download anchor tag var downloadLink = document.createElement(''a''); downloadLink.target = ''_blank''; downloadLink.download = ''name_to_give_saved_file.pdf''; // convert downloaded data to a Blob var blob = new Blob([downloadedFile.data], { type: ''application/pdf'' }); // create an object URL from the Blob var URL = window.URL || window.webkitURL; var downloadUrl = URL.createObjectURL(blob); // set object URL as the anchor''s href downloadLink.href = downloadUrl; // append the anchor to document body document.body.appendChild(downloadLink); // fire a click event on the anchor downloadLink.click(); // cleanup: remove element and revoke object URL document.body.removeChild(downloadLink); URL.revokeObjectURL(downloadUrl); });


Póster por primera vez, así que espero que se vea bien.

Tuve este problema trabajando con una solicitud de envío de FedEx. Realizo la solicitud con AJAX. La respuesta incluye el seguimiento de #, costo, así como una cadena de pdf que contiene la etiqueta de envío.

Esto es lo que hice:

Agregar un formulario:

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

Use javascript para completar el valor del campo oculto con la cadena de PDF y publique el formulario.

Donde 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"]; ?>


Simplemente codifique su cadena de PDF formateada en la base 64. Luego debe hacer:

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

devuélvalo a javascript y ábralo en una nueva ventana:

window.open(return);


Solo para información, a continuación

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

ya no funciona en Chrome. Ayer, me encontré con el mismo problema e intenté con esta solución, pero no funcionó (es ''No se permite navegar en el marco superior a la URL de datos''). Ya no puedes abrir la URL de datos directamente en una nueva ventana. Pero, puede envolverlo en iframe y abrirlo en una nueva ventana como la siguiente. =)

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


Una sugerencia es usar una biblioteca en PDF como PDFJS.

Tengo que adjuntar, los siguientes "data:application/pdf;base64" + su cadena de PDF, y establecer el src de su elemento a eso.

Prueba con este ejemplo:

var pdfsrc = "data:application/pdf;base64" + "67987yiujkhkyktgiyuyhjhgkhgyi...n" <pdf-element id="pdfOpen" elevation="5" downloadable src="pdfsrc" ></pdf-element>

Espero eso ayude :)


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

El anterior pegando el contenido codificado en la URL. Eso hace que la restricción de la longitud del contenido en URL y, por lo tanto, la carga del archivo PDF falle (debido a contenido incompleto).