React-pdf: La promesa de PDF.js getDocument no vuelve

Creado en 2 abr. 2019  ·  4Comentarios  ·  Fuente: wojtekmaj/react-pdf

Antes de comenzar: lista de verificación

  • [/] He leído la documentación en README
  • [/] Revisé conjuntos de muestra y de prueba para ver la implementación básica de la vida real
  • [/] He comprobado si esta pregunta aún no se ha hecho

¿Qué estás intentando lograr?

He actualizado de la versión 3.0.5 a la 4.0.5. Después de la actualización, mis archivos PDF ya no se mostrarán y seguirá "cargándose".

Describe las soluciones que has probado

Muestro mi archivo PDF como base64-data pero también probé bytes simples. El uso de los ganchos de notificación proporcionados me da la retroalimentación de que los datos de origen se cargan correctamente.
La depuración en su código me lleva a Document.js y este código:

  cancellable = (0, _utils.makeCancellable)(loadingTask.promise);
  _this.runningTask = cancellable;
  _context.next = 23; // until here is everything fine
  return cancellable.promise; // this promise is never resolved 

Información Adicional

Yo uso tu lib directamente:

import { Document, Page } from "react-pdf/dist/entry.webpack";
 <Document
          file={ isDataBase64 ? `data:application/pdf;base64,${file}` : file }
          loading="Das PDF wird geladen..."
          onLoadSuccess={ ::this.onDocumentLoadSuccess } // show additional buttons for zoom
          className="pdfDocument"
          renderMode="svg"
        >
            <Page
              key={ `page_${1}` }
              pageNumber={ 1 }
              className="pdfPage"
              renderMode="svg"
              scale={ pageScale } />
        </Document>

Te adjunto un PDF de muestra. Copiar y pegarlo en su navegador funcionará. Usarlo en el parámetro para <Document file={<pdfdata here>}> no funciona.
samplePDF_base64.txt

Medio ambiente

  • Navegador (si corresponde) [por ejemplo, Chrome 57, Firefox 59]: Chrome y FF más recientes
  • Versión de React-PDF [por ejemplo, 3.0.4]: 4.0.5
  • Versión de reacción [por ejemplo, 16.3.0]: 16.3.2
  • Versión del paquete web (si corresponde) [por ejemplo, 4.16.2]: 3.8.1
question

Comentario más útil

En caso de que sea útil para alguien más, también experimenté el mismo comportamiento de promesa que nunca se resuelve cuando configuré accidentalmente la URL del trabajador (pdfjsLib.GlobalWorkerOptions.workerSrc = "....") para que apunte al pdf principal. js en lugar del archivo pdf.worker.js por error.

Todos 4 comentarios

¡Definitivamente funcionó para mí tanto pegarlo en el campo de dirección del navegador como pasarlo como una URL a file prop en React-PDF! ¿Quizás estás "basándote en 64" dos veces?

obraz

No, este pdf-data es igual a la cadena, paso a Document.
¿Hay alguna forma de averiguar qué está haciendo PDFjs?

Maldita sea, este almacenamiento en caché.

Eliminar todos los cachés del sitio en Chrome hizo que funcionara.

¡Gracias por tu rápida respuesta!

En caso de que sea útil para alguien más, también experimenté el mismo comportamiento de promesa que nunca se resuelve cuando configuré accidentalmente la URL del trabajador (pdfjsLib.GlobalWorkerOptions.workerSrc = "....") para que apunte al pdf principal. js en lugar del archivo pdf.worker.js por error.

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