Pdf.js: Ejecutando pdf.js con electron

Creado en 30 mar. 2016  ·  4Comentarios  ·  Fuente: mozilla/pdf.js

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:

  1. Clonando pdf.js en un directorio separado y ejecutando _gulp generic_ y todo lo que obtuve en el directorio de compilación, lo copié en el directorio src de mi proyecto.
  2. Incluyendo el módulo de nodo en mi proyecto desde aquí: https://www.npmjs.com/package/pdfjs-dist-for-node

Tengo las siguientes preguntas:

  • Siguiendo la primera ruta, puedo mostrar (básicamente renderizar) el archivo pdf (sin los controles del visor) en el lienzo de mi página html a través de este código:

</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.

  • Siguiendo la segunda ruta, pude incluir el módulo de nodo; pero la preocupación que tengo aquí es que no se actualiza con frecuencia a medida que se actualiza este proyecto. El último lanzamiento fue hace un año. Y no había API allí de nuevo. Entonces, dejé el plan por ahora.

Sería muy apreciado si alguien pudiera ayudarme aquí.

Gracias por adelantado...

Configuración:

  • Navegador web y su versión: Electron
  • Sistema operativo y su versión: OSX 10.10.5
  • Versión de PDF.js: 0.8.0
1-other

Comentario más útil

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!

Todos 4 comentarios

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ó.

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!

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

anggikolo11 picture anggikolo11  ·  3Comentarios

zerr0s picture zerr0s  ·  3Comentarios

SehyunPark picture SehyunPark  ·  3Comentarios

jigskpatel picture jigskpatel  ·  3Comentarios

brandonros picture brandonros  ·  3Comentarios