junté algo de código completo y era capaz de encontrar el problema con la solución a continuación:
var int8View = new Uint8Array(...); //populate int8View with the raw pdf data
PDFJS.getDocument(int8View).then(function(pdf) {
}
Al utilizar esta solución Corrí en el problema que otros usuarios han visto (@MurWade y @ user94154) - el mensaje de error stream must have data
. Parece que el problema está en la línea siguiente:
var int8View = new Uint8Array(...);
La matriz que contiene los datos no quede adecuadamente creado, ya que los datos no está en el formato esperado. Por lo tanto, esta línea funciona en algunos casos, pero podría no funcionar en el caso general.
He creado una solución completa, que parece funcionar mejor. Carga un archivo PDF y lo convierte en una secuencia de PDF sin formato. Esto es solo para fines de prueba, en un ejemplo del mundo real, la transmisión en PDF probablemente se recibirá de una manera diferente. Puede examinar la secuencia en un depurador y se mostrará como texto sin formato. A continuación se muestra la línea clave del código para que esta muestra funcione. En lugar de convertir la secuencia de PDF sin formato a una matriz, conviértala en datos.
var docInitParams = { data: pdfraw };
Luego continúe con la carga de los datos. A continuación se muestra la muestra de trabajo completa de cómo cargar un flujo de PDF sin formato estándar y mostrarlo. Solía PDF JS hello world sample como punto de partida. Por favor, hágamelo saber en los comentarios si alguna aclaración es necesaria sobre esto.
'use strict';
PDFJS.getDocument('helloworld.pdf').then(function(pdf) {
pdf.getData().then(function(arrayBuffer) {
var pdfraw = String.fromCharCode.apply(null, arrayBuffer);
var docInitParams = {
data: pdfraw
};
PDFJS.getDocument(docInitParams).then(function(pdfFromRaw) {
pdfFromRaw.getPage(1).then(function(page) {
var scale = 1.5;
var viewport = page.getViewport(scale);
var canvas = document.getElementById('the-canvas');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
var renderContext = {
canvasContext: context,
viewport: viewport
};
page.render(renderContext);
});
});
});
});
¡Agradable, aceptando esta respuesta ya que parece más completa que la original! – Swiss
¡Gracias! Avíseme si puedo hacer algo para mejorarlo. –
@ user94154, ¿la solución anterior responde su pregunta? –