Hola,
Estoy tratando de integrar la biblioteca pdf.js con la aplicación electron. La razón principal para hacerlo es tener un visor de PDF en la aplicación e imprimir el documento.
En primer lugar, intenté integrar la biblioteca de dos maneras:
Tengo las siguientes preguntas:
</div>
<canvas id="theCanvas"></canvas>
<div>
PDFJS.getDocument(pdfPath).then(function getPdfHelloWorld(pdf) {
pdf.getPage(1).then(function getPageHelloWorld(page) {
var scale = 1.5;
var viewport = page.getViewport(scale);
var canvas = document.getElementById('theCanvas');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
var renderContext = {
canvasContext: context,
viewport: viewport
};
page.render(renderContext);
});
});
Sin embargo, esto es solo parte de lo que quiero. Quiero los controles del visor como en viewer.html. Entonces, intenté abrir una nueva ventana directamente con viewer.html así:
var pdfPath = __dirname + '/pdfs/trial.pdf';
mainWindow.loadURL('file://' + __dirname + '/generic/web/viewer.html?file=' + pdfPath);
Pude ver el visor, pero mientras cargaba el archivo pdf, arroja este error en la consola:
No detectado (en promesa) TypeError: PDFJS.getDocument no es una función
en Object.pdfViewOpen como abierto
en webViewerInitialized (archivo: ///.../src/generic/web/viewer.js: 7686: 26)
No puedo entender qué estoy haciendo mal aquí. ¿Es esta la forma recomendada? Además, si quiero incrustar todo ese visor en algún lienzo o iframe, ¿cómo puedo hacerlo? Sería bueno tener una lista de API en el proyecto para realizar ciertas tareas comunes como la que estoy intentando. Lo siento, si ya está allí y no puedo encontrarlo.
Sería muy apreciado si alguien pudiera ayudarme aquí.
Gracias por adelantado...
Configuración:
Versión de PDF.js: 0.8.0
Esa es una versión realmente antigua. La versión ya compilada de nuestros lanzamientos (o gulp generic
one) funcionará bien, con la excepción de que puede cargar pdf en Uint8Array usted mismo.
PDFJS.getDocument no es una función
Eso indica que la biblioteca central PDF.js (archivo './build/pdf.js') no se cargó.
Gracias por tu pronta respuesta Yury.
Esa es una versión realmente antigua.
No estoy seguro de cómo obtuve esa versión anterior. No hice nada especial que git clone git://github.com/mozilla/pdf.js.git
para obtener el proyecto. Sin embargo, si veo aquí, el package.json todavía muestra 0.8.0.
La versión ya compilada de nuestros lanzamientos (o gulp genérica) funcionará bien, con la excepción de que puede cargar PDF en Uint8Array usted mismo.
¿Estás hablando de este zip preconstruido? .
Eso indica que la biblioteca central PDF.js (archivo './build/pdf.js') no se cargó.
Después de hacer gulp generic, obtuve pdf.js y pdf.worker.js en dos lugares. Uno fuera del directorio genérico y otro dentro del directorio genérico / build /. Actualmente estoy apuntando al exterior. ¿Me puede hacer saber si estoy apuntando al incorrecto?
¡De nuevo, gracias por la ayuda!
el package.json todavía muestra 0.8.0.
package.json no contiene la versión de la biblioteca construida, consulte el archivo pdf.js o la propiedad PDFJS.version para obtener el número de versión correcto.
¿Me puede hacer saber si estoy apuntando al incorrecto?
Ambos serán idénticos. Tienes que usar la carpeta "genérica /" completa, por lo que tendrás pdf.js en el lugar correcto.
consulte el archivo pdf.js o la propiedad PDFJS.version
Dice versión: 1.4.174
Además, descubrí el problema. Copié el material correcto del directorio genérico; sin embargo, cuando abro una ventana con la url viewer.html; la propiedad de la ventana debería tener esto:
webPreferences: {
nodeIntegration: false
}
Y ahora puede cargar bien.
¡Gracias por tu ayuda Yury!
Comentario más útil
Dice versión: 1.4.174
Además, descubrí el problema. Copié el material correcto del directorio genérico; sin embargo, cuando abro una ventana con la url viewer.html; la propiedad de la ventana debería tener esto:
webPreferences: { nodeIntegration: false }
Y ahora puede cargar bien.
¡Gracias por tu ayuda Yury!