Pdf.js: Error al cargar PDF que usa fuentes del sistema

Creado en 4 feb. 2014  ·  27Comentarios  ·  Fuente: mozilla/pdf.js

Archivo de prueba: https://dl.dropboxusercontent.com/u/16283445/PORTRAIT.pdf

El archivo fue producido por Muhimbi PDF Converter.

El texto principal (que usa la fuente Tahoma incrustada) se muestra bien; es el mensaje de prueba en la parte superior del archivo lo que causa el error. Después de algunas depuraciones, descubrí que este mensaje hace referencia a la fuente Helvetica del sistema y, de alguna manera, faltan glifos en el momento del error.

Registro de errores:

Error: Requesting object that isn't resolved yet Helvetica_path_T pdf.js:205
    at error (http://[skipped]/pdfjs/pdf.js:207:15)
    at Object.PDFObjects_get [as get] (http://[skipped]/pdfjs/pdf.js:4640:9)
    at Object.FontFace.getPathGenerator (http://[skipped]/pdfjs/pdf.js:7675:23)
    at Object.CanvasGraphics.paintChar (http://[skipped]/pdfjs/pdf.js:6105:26)
    at Object.CanvasGraphics_showText [as showText] (http://[skipped]/pdfjs/pdf.js:6291:18)
    at Object.CanvasGraphics_nextLineShowText [as nextLineShowText] (http://[skipped]/pdfjs/pdf.js:6381:12)
    at Object.CanvasGraphics_executeOperatorList [as executeOperatorList] (http://[skipped]/pdfjs/pdf.js:5600:22)
    at Object.InternalRenderTask__next [as _next] (http://[skipped]/pdfjs/pdf.js:4807:39)
    at Object.pdfViewcContinueCallback [as continueCallback] (http://[skipped]/pdfjs/viewer.js:4261:9)
3-pdf-broken 4-font-conversion

Comentario más útil

con pdfjs-dist": "^2.2.2 establecido disableFontFace: false me solucionó este problema.

pdfjs.getDocument( { url: pdfUrl, disableFontFace: false, }

Todos 27 comentarios

Esto falla porque la fuente no está cargada cuando intentamos obtenerla en font_loader.js#L313 .
El problema parece ser que en realidad nunca se carga en absoluto, dado evaluator.js#L284 , ya que font.data no está definido en este caso. La razón de esto es que la fuente en cuestión no tiene un archivo de fuente incrustado, lo que significa que en fonts.js regresamos antes de definir font.data . Consulte fonts.js#L2256 y fonts.js#L2303 .
La razón por la que esto no es un problema mayor en la práctica para nosotros es que solo parece afectar a los archivos PDF (como este problema) donde el recurso de fuente está contenido dentro, por ejemplo, un diccionario XObject .

Desafortunadamente, no sé cómo podríamos abordar este problema, ya que crear font.data sin un archivo de fuente parece difícil en el código actual. ¿Quizás esto se resolvería "gratis" si incrustáramos las fuentes estándar en PDF.js?

PD: También noté que solucionar este problema solucionaría uno (o dos) de los archivos enumerados en http://bthorben.github.io/pdfRepo/#crashed.

¿Puede haber una solución como una de estas:

1: opción para permitir el uso de alguna fuente predeterminada o alguna fuente que ya se haya utilizado para el archivo exacto
2 - opción para permitir omitir la representación de este elemento
esto puede ayudar a continuar trabajando con el archivo pdf si falta alguna fuente, y la salida solo es una advertencia, no un error de ruptura.

¿Qué piensas?

Preferimos la primera opción, sin embargo, aún no incrustamos ninguna fuente y confiamos en que el sistema las contenga para algunas funciones. Sin duda podemos ignorarlo, una vez que encontremos cómo insertarlo correctamente (para estas fuentes, podemos generar contornos de letras vacías cuando se solicite)

Al menos abra la posibilidad de .atrapar (...) este error en lugar de simplemente detener todo hasta que pueda encontrar una mejor solución. Desafortunadamente, este problema interrumpe la funcionalidad en nuestro entorno en vivo, lo cual es... malo.

¿Hay alguna solución disponible? ¿O algún tipo de mecanismo de detección de errores sugerido por @xwcg ?

Hola a todos,
Tengo el mismo error.
¿Puedo saber si hay alguna solución temporal para este problema antes de la solución formal?

¿Alguna actualización sobre esto?, es de 2014 y aún no está resuelto

@diego-lipinski-de-castro FYI, esa fusión # 9809 solucionó esto si pasa ignoreErrors: true en la función getDocument. Si usa npm pdfjs-dist, aún no está actualizado. Acabo de compilar desde la fuente y los archivos PDF que solían quejarse de las fuentes ahora se procesan correctamente con la salida de lienzo. Todo parece estar bien.

@sirisian gracias por tu actualización. Esperando el lanzamiento

@sirisian , ¿sabe cuándo será la actualización de npm pdfjs-dist? y si hay una solución para npm?
Gracias

¿Alguna actualización de esta versión de corrección para npm pdfjs-dist?

Hola, yo también encuentro este error. ¿Hay alguna manera de sustituir la fuente que no está presente en el sistema con una predeterminada?

Hola , @timvandermeij , ¿cuándo es probable que veamos esta solución en pdfjs-dist?

con pdfjs-dist": "^2.2.2 establecido disableFontFace: false me solucionó este problema.

pdfjs.getDocument( { url: pdfUrl, disableFontFace: false, }

En mi opinión, cada vez que pdf.js no puede cargar texto en una fuente en particular, debería cargar el mismo texto usando una fuente sustituta que _podría_ mostrar (por ejemplo, las fuentes predeterminadas establecidas por el usuario en las preferencias de fuente), en lugar de detener la representación. la página y lanzar un error. Este era el comportamiento en Firefox 61 y versiones anteriores cuando la opción "Permitir que las páginas elijan sus propias fuentes, en lugar de sus selecciones anteriores" está deshabilitada. En mi opinión, mostrar el texto en una fuente sustituta es mejor que no mostrar nada.

con pdfjs-dist": "^2.2.2 establecido disableFontFace: false me solucionó este problema.

pdfjs.getDocument( { url: pdfUrl, disableFontFace: false, }

Este resolvió mi problema, estoy usando pdfjs-dist ^ 2.0.943
Gracias

Estoy trabajando en un proyecto donde IE 11 es un requisito y la configuración de seguridad (administrada por el equipo de TI) no permite descargar fuentes personalizadas. Esto da como resultado una representación de PDF que está mayormente en blanco al renderizar, y solo muestra algunos títulos y caracteres en cursiva.

establecer disableFontFace: true provoca lo contrario en IE 11 (y todos los demás navegadores en realidad). La mayoría de las fuentes luego se procesan, pero introducen una letanía de errores que se ven así:

Warning: getPathGenerator - ignoring character: "Error: Requesting object that isn't resolved yet Times_path_i.".

Todos los errores indican diferentes caracteres en la parte Times_path_* del mensaje. El documento carga la mayor parte del contenido, pero faltan visualmente los títulos, la cursiva y otras variaciones (aunque el texto vacío se puede seleccionar debido a la capa de texto transparente en la parte superior)

Por lo tanto, estoy atascado entre tener una representación de fuente completa en todos los navegadores, excepto esta versión administrada de IE 11 (debido a la configuración de seguridad impuesta por el administrador con respecto a las fuentes) o una representación de fuente semi-rota en todas partes debido a que intento implementar una solución para IE 11.

¿Alguna sugerencia?

alguna noticia al respecto?

Hola equipo,
Intenté todas las cosas posibles, nada puede resolver el error.
¿tienes alguna actualización?

Este es un gran impacto para nosotros. ¿Por qué la solución es establecer disabledFontFace=false? Tengo entendido que con disabledFontFace=true, no importa qué fuentes incrustadas haya (o no) en el pdf. ¿Es eso incorrecto?

alguna noticia al respecto?

Hace 6 años, @AllSeeingEye tenía un problema y hoy esta biblioteca tiene 594 problemas sin resolver. ¿A nadie le importa un carajo este error o qué? Un error que para mí es un no-go, necesitará buscar otras bibliotecas como pdf-lib tal vez.

¡Buen día a todos!

Enfrenté algunos problemas similares al intentar resolver el problema de procesamiento de la capa de texto con disableFontFace params.

En disableFontFace: false algunos documentos se ven así:
image

Mientras que en disableFontFace: true el documento anterior se muestra bien, hay un problema con un documento diferente:
image

Todas estas celdas no estaban vacías.
Algunos documentos se muestran bien de una manera, otros, de otra manera.
¿Cómo debo actuar?

Tengo un problema similar al de @Hatgor
¿Hay alguna solución o algo que se pueda hacer para hacerlo bien? Las soluciones anteriores no funcionan. :|

Tengo exactamente el mismo problema. Intentando ejecutarlo en un lambda en Node12, que ejecuta amazonlinux2, lo que significa que no hay fuentes instaladas de forma predeterminada. Sería MUY bueno si pudiéramos incrustar las 14 fuentes estándar en pdfjs de forma predeterminada, o exponer una API para cargarlas en lugar de depender de que estén instaladas en el sistema base. Hasta ahora, mis esfuerzos para instalar las fuentes en el sistema han sido... menos que exitosos.

En este punto, estoy pensando en preprocesar cada PDF con otra biblioteca, como pdf-lib, explícitamente para incrustar las 14 fuentes estándar, LUEGO pasarlo a esta biblioteca para renderizar. Un poco excesivo y molesto, pero si soluciona el problema....

Después de jugar durante horas literales con amazonlinux2 para instalar fuentes, PUEDO hacer que las fuentes no incluidas se procesen configurando disabledFontFace en falso explícitamente, pero luego las fuentes incrustadas del PDF fallan con el mismo símbolo que se ve en el comentario de @Hatgor .

De acuerdo, hasta ahora no hay dados en el preprocesamiento de archivos PDF para incrustar fuentes. ¿Existe, quizás, una forma de inyectar una fuente que no esté incrustada en el PDF? Puedo alojar los .ttf(s) necesarios en otro lugar, pero no veo nada en la API para cargar una fuente arbitraria.

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