Pdf.js: Erreur lors du chargement d'un PDF utilisant des polices système

Créé le 4 févr. 2014  ·  27Commentaires  ·  Source: mozilla/pdf.js

Fichier test : https://dl.dropboxusercontent.com/u/16283445/PORTRAIT.pdf

Le fichier a été produit par le convertisseur PDF Muhimbi.

Le texte principal (qui utilise la police Tahoma intégrée) s'affiche correctement ; c'est le message d'essai en haut du fichier qui provoque l'erreur. Après quelques débogages, j'ai découvert que ce message faisait référence à la police système Helvetica et que, d'une manière ou d'une autre, les glyphes correspondants manquaient au moment de l'erreur.

Journal des erreurs :

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

Commentaire le plus utile

avec pdfjs-dist": "^2.2.2 défini disableFontFace: false a résolu ce problème sur moi.

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

Tous les 27 commentaires

Cela échoue car la police n'est pas chargée lorsque nous tentons de la récupérer dans font_loader.js#L313 .
Le problème semble être qu'il n'est jamais chargé du tout, étant donné evaluator.js#L284 , puisque font.data n'est pas défini dans ce cas. La raison en est que la police en question n'a pas de fichier de police intégré, ce qui signifie que dans fonts.js nous revenons avant de définir font.data . Voir fonts.js#L2256 et fonts.js#L2303 .
La raison pour laquelle ce n'est pas un problème plus important dans la pratique pour nous, c'est qu'il semble n'affecter que les PDF (comme ce problème) où la ressource de police est contenue dans un dictionnaire XObject , par exemple.

Je ne sais malheureusement pas comment nous pourrions résoudre ce problème, car la construction font.data sans fichier de police semble difficile dans le code actuel. Peut-être que cela serait résolu "gratuitement" si nous intégrions les polices standard dans PDF.js ?

PS J'ai également remarqué que la résolution de ce problème résoudrait un (ou deux) des fichiers répertoriés dans http://bthorben.github.io/pdfRepo/#crashed.

Peut-il y avoir une solution comme l'une de celles-ci:

1 - option permettant d'utiliser une police par défaut ou une police déjà utilisée pour le fichier exact
2 - option permettant de sauter le rendu de cet élément
cela peut aider à continuer à travailler avec le fichier pdf si certaines polices sont absentes, et à ne sortir que comme avertissement, pas comme erreur de rupture.

Qu'en penses-tu?

Nous préférons la première option, mais nous n'intégrons pas encore de polices et comptons sur le système pour les contenir pour certaines fonctions. Nous pouvons certainement ignorer, une fois que nous avons trouvé comment le stub correctement (Pour ces polices, nous pouvons générer des contours de lettres vides sur demande)

Au moins, ouvrez la possibilité de .catch(...) cette erreur au lieu de tout arrêter jusqu'à ce que vous trouviez une meilleure solution. Malheureusement, ce problème casse les fonctionnalités de notre environnement live qui est... mauvais.

Existe-t-il une solution de contournement ? Ou une sorte de mécanisme de capture d'erreur suggéré par @xwcg ?

Une dupe a été déposée ici : https://bugzilla.mozilla.org/show_bug.cgi?id=1463728

Bonjour à tous,
J'ai eu la même erreur.
Puis-je savoir s'il existe une solution temporaire à ce problème avant le correctif officiel ?

Une mise à jour à ce sujet ?, Elle date de 2014 et n'est toujours pas résolue

@ diego-lipinski-de-castro Pour votre information, cette fusion # 9809 a corrigé ce problème si vous transmettez ignoreErrors: true dans la fonction getDocument. Si vous utilisez le npm pdfjs-dist, il n'est pas encore mis à jour. Je viens de créer à partir de la source et des fichiers PDF qui se plaignaient du fait que les polices sont désormais traitées correctement avec la sortie de canevas. Tout semble bien.

@sirisian merci pour votre mise à jour. Dans l'attente de la sortie

@sirisian savez-vous quand sera la mise à jour pour npm pdfjs-dist ? et s'il existe une solution de contournement pour npm?
Merci

Des mises à jour sur cette version de correctif pour npm pdfjs-dist ?

Bonjour, je rencontre également cette erreur. Existe-t-il un moyen de remplacer une police qui n'est pas présente sur le système par une police par défaut ?

Salut @timvandermeij quand verrons-nous probablement ce correctif dans pdfjs-dist ?

avec pdfjs-dist": "^2.2.2 défini disableFontFace: false a résolu ce problème sur moi.

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

À mon avis, chaque fois que pdf.js ne parvient pas à charger du texte dans une police particulière, il doit charger le même texte en utilisant une police de remplacement qu'il _pourrait_ afficher (par exemple, les polices par défaut définies par l'utilisateur dans les préférences de police), plutôt que d'arrêter le rendu la page et génère une erreur. C'était le comportement dans Firefox 61 et versions antérieures lorsque l'option "Autoriser les pages à choisir leurs propres polices, au lieu de vos sélections ci-dessus" est désactivée. À mon avis, il vaut mieux afficher du texte dans une police de substitution que de ne rien afficher du tout.

avec pdfjs-dist": "^2.2.2 défini disableFontFace: false a résolu ce problème sur moi.

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

Celui-ci a résolu mon problème, j'utilise pdfjs-dist ^ 2.0.943
Merci

Je travaille sur un projet où IE 11 est une exigence et les paramètres de sécurité (géré par l'équipe informatique) ne permettent pas le téléchargement de polices personnalisées. Il en résulte un rendu PDF qui est principalement vide lors du rendu, ne montrant que quelques titres et caractères italiques.

définir disableFontFace: true provoque l'inverse dans IE 11 (et tous les autres navigateurs en fait). La plupart des polices s'affichent ensuite, mais cela introduit une litanie d'erreurs telles que :

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

Les erreurs indiquent toutes des caractères différents dans la partie Times_path_* du message. Le document charge la plupart du contenu, mais les titres, les italiques et d'autres variantes sont visuellement manquants (bien que le texte vide puisse être sélectionné en raison de la couche de texte transparente en haut)

Donc, je suis coincé entre avoir un rendu complet des polices dans tous les navigateurs, à l'exception de cette version gérée d'IE 11 (en raison du paramètre de sécurité appliqué par l'administrateur concernant les polices) ou un rendu des polices semi-cassé partout en raison de la tentative d'implémentation d'un correctif pour IE 11.

Aucune suggestion?

des nouvelles là-dessus ?

salut l'équipe,
J'ai essayé toutes les choses possibles, rien ne peut faire résoudre le bug.
avez des mises à jour?

C'est un impact majeur pour nous. Pourquoi la solution de contournement consiste-t-elle à définir disableFontFace=false ? Ma compréhension est qu'avec disableFontFace=true, peu importe les polices intégrées présentes (ou non) dans le pdf. Est-ce incorrect ?

des nouvelles là-dessus ?

Il y a 6 ans, @AllSeeingEye avait un problème et aujourd'hui cette bibliothèque compte 594 problèmes non résolus. Personne ne donne af * sur ce bug ou quoi ? Un bug qui est pour moi un no-go, devra chercher d'autres libs comme pdf-lib peut-être.

Bonne journée tout le monde!

J'ai rencontré des problèmes similaires en essayant de résoudre le problème de rendu de la couche de texte avec les paramètres disableFontFace .

Sur disableFontFace: false , certains documents ressemblent à ceci :
image

Alors que sur disableFontFace: true le document précédent s'affiche bien, il y a un problème avec un autre document :
image

Toutes ces cellules n'étaient pas vides.
Certains documents sont bien rendus d'une manière, d'autres - d'une autre manière.
Comment dois-je agir ?

J'ai un problème similaire à @Hatgor
Y a-t-il un correctif ou quelque chose qui peut être fait afin de bien faire les choses? Les solutions ci-dessus ne fonctionnent pas. :|

J'ai exactement le même problème. Essayer de l'exécuter dans un lambda sur Node12, qui exécute amazonlinux2 - ce qui signifie qu'aucune police n'est installée par défaut. Ce serait VRAIMENT bien si nous pouvions intégrer les 14 polices standard dans pdfjs par défaut, ou exposer une API pour les charger plutôt que de compter sur leur installation dans le système de base. Jusqu'à présent, mes efforts pour installer les polices sur le système n'ont pas été couronnés de succès.

À ce stade, je pense que je pourrais pré-traiter chaque PDF avec une autre bibliothèque, comme pdf-lib, explicitement pour incorporer les 14 polices standard, PUIS le transmettre à cette bibliothèque pour le rendu. Un peu excessif et ennuyeux, mais si cela résout le problème....

Après avoir bricolé pendant des heures littérales avec amazonlinux2 pour installer des polices, je PEUX obtenir le rendu des polices non incluses en définissant explicitement disableFontFace sur false, mais les polices intégrées du PDF échouent avec le même symbole vu dans le commentaire de @ Hatgor .

OK, jusqu'à présent, pas de dés dans le pré-traitement des PDF pour intégrer des polices. Existe-t-il peut-être un moyen d'injecter une police qui n'est pas intégrée au PDF ? Je peux héberger le(s) .ttf(s) nécessaire(s) ailleurs, mais je ne vois rien dans l'API pour charger une police arbitraire.

Cette page vous a été utile?
0 / 5 - 0 notes