PDF - textes manquants pour prévisualisation et impression
Résolu/Fermémamiemando Messages postés 33346 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 novembre 2024 - 12 mai 2023 à 11:40
- PDF - textes manquants pour prévisualisation et impression
- Spouleur d'impression - Guide
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Comment faire un pdf - Guide
- Save as pdf - Télécharger - Bureautique
- Comment modifier un pdf - Guide
9 réponses
28 avril 2023 à 15:02
Bonjour,
Oui je pense que le PDF n'est pas parfait, mais que "comme ça marche sous windows", ton prestataire ne s'est pas posé plus de questions.
Comme le propose cette discussion, as-tu essayé avec okular (l'outil PDF de KDE) ou avec qpdfview ? Peut-être sont-ils capables de rattraper le coup ?
Bonne chance
25 avril 2023 à 16:37
Bonjour,
Convertir un pdf en ps n'est pas "si crade" puisque de toute façon c'est ce que fera ton logiciel d'impression, mais je comprends qu'éviter cette étape serait plus pratique et plus élégant. La solution de contournement fonctionne car les polices mises en jour, bien qu'absente du PDF, sont sur ton système, ce qui permet (je suppose) à pdf2ps de s'y retrouver.
Je pense que le problème de fond est que ton PDF n'embarque pas les polices personnalisées qu'il implique (or c'est techniquement possible). C'est donc au moment où tu construis ton PDF que tu dois le faire.
Le paquet ttf-mscorefonts-installer permet d'installer les polices Microsoft sur ton système (dans /usr/share/fonts), mais si ton script PHP ne dit pas explicitement qu'il faut les embarquer dans le PDF à générer, il ne le fera visiblement pas pour toi. Il en va bien entendu de même pour toutes les polices impliquées dans ton document.
Il faudrait voir quel paquet PHP tu utilises pour créer ton PDF, mais en admettant que ce soit fpdf, tu peux sans doute t'inspirer de ce tutoriel.
Bonne chance
Modifié le 25 avril 2023 à 16:37
Bonjour,
Convertir un pdf en ps n'est pas "si crade" puisque de toute façon c'est ce que fera ton logiciel d'impression, mais je comprends qu'éviter cette étape serait plus pratique et plus élégant. La solution de contournement fonctionne car les polices mises en jour, bien qu'absente du PDF, sont sur ton système, ce qui permet (je suppose) à pdf2ps de s'y retrouver.
Je pense que le problème de fond est que ton PDF n'embarque pas les polices personnalisées qu'il implique (or c'est techniquement possible). C'est donc au moment où tu construis ton PDF que tu dois le faire.
Le paquet ttf-mscorefonts-installer permet d'installer les polices Microsoft sur ton système (dans /usr/share/fonts), mais si ton script PHP ne dit pas explicitement qu'il faut les embarquer dans le PDF à générer, il ne le fera visiblement pas pour toi. Il en va bien entendu de même pour toutes les polices impliquées dans ton document.
Vu que sembles utiliser fpdf, tu peux sans doute t'inspirer de ce tutoriel.
Bonne chance
Modifié le 25 avril 2023 à 17:54
Coucou Mamiemando ;)
Alors je n'ai pas précisé mais ce n'est pas moi qui génère le document, c'est un prestataire qui nous envoie ce document en l'état. J'ai déterminé qu'il les générait à partir de PHP car c'est ce que retourne pdfinfo et mes recherches sur "Producer: FPDF 1.6"
De là à contacter le prestataire pour lui dire d'embarquer ses polices, je n'y crois pas trop. De plus comme le document est affiché à l'écran avec tout le texte et ce même avant que j'ajoute le paquetage ttf-mscorefonts-installer, je ne pense pas qu'embarquer les polices y change quelque chose.
C'est pour ça que je demande de l'aide, je ne vois vraiment pas ce qui peut coincer, d'autant que le résultat est le même sur 2 machines physiques différentes avec Debian 11 dont l'une a un système fraichement installé.
Pilotes graphique ? Autre ?
Convertir un pdf en ps n'est pas "si crade" puisque de toute façon c'est ce que fera ton logiciel d'impression, mais je comprends qu'éviter cette étape serait plus pratique et plus élégant.
Ah ouais ! Mais mais alors si les applications convertissent de toute manière en PS et vu qu'on peut imprimer directement du PS, ça voudrait dire que le temps pris avant l'impression effective pourrait être optimisé. Je relève car parfois certaines impressions de gros documents prennent vraiment beaucoup de temps alors que la tâche est juste d'imprimer sur une surface A4 et pas sur du A0.
26 avril 2023 à 21:39
Debugger pour savoir ce qui fait défaut ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question26 avril 2023 à 22:22
Peux-tu clarifier "l'impression d'un document PDF est incomplète alors que son contenu est correctement affiché à l'écran avant impression" : est-ce une zone de texte dans une même police ou certains caractères ?
As-tu déterminé quel zone de textes (avec quelle police) engendraient des problèmes ?
D'après la sortie de pdffonts, seules les polices Helvetica ne sont pas embarquées.
Peut-être que lancer ton lecteur pdf depuis un terminal puis ouvrir ton document donnera des informations complémentaire sur la cause du problème.
26 avril 2023 à 23:07
Peux-tu clarifier "l'impression d'un document PDF est incomplète alors que son contenu est correctement affiché à l'écran avant impression" : est-ce une zone de texte dans une même police ou certains caractères ?
Oui dans mon cas, les zones non imprimées ou non prévisualisables concernent la police CooperHewitt et Arial. De plus j'ai remarqué que seul un titre en CooperHewitt était imprimé et en creusant depuis Draw (comme dit dans le post initial), j'ai remarqué dans les propriétés des caractères qu'il était "contouré" ; c'est sans doute la différence qui fait qu'il est imprimable.
D'après la sortie de pdffonts, seules les polices Helvetica ne sont pas embarquées.
Oui mais bizarrement ce n'est pas elles qui posent problème et même avant l'ajout du paquetage.
Mais tu as raison, je vais essayer de lire le PDF depuis le terminal pour voir si les applications me disent ce qui se passe.
---
Je crois avoir compris que le PDF est un format ouvert (il me semble qu'avant il était propriétaire Adobe), donc rien ne devrait être caché et donc on doit pouvoir afficher le contenu réel d'un PDF dans un format lisible (pas nécessairement compréhensible comme le PostScript), tel du XML et ainsi l'étudier. Parce que je sais que dans les administrations ils utilisent le format PDF-A pour l'archivage à vie et je sais qu'il y a d'autres types de format de PDF. J'ai commencé à regarder les options des outils du paquetage poppler-utils mais pour le moment je n'ai rien trouvé de probant.
Aussi, ce que je n'ai pas dit, c'est qu'en imprimant depuis Windows (certainement depuis Adobe Acrobat Reader), tout est imprimable. Donc le problème est sous Linux.
27 avril 2023 à 15:05
Bonjour,
Si le but est juste d'imprimer le document sous Linux et que certaines polices font défaut, il suffit de les installer.
Sous Linux les polices se rangent généralement dans /usr/share/fonts mais normalement, tu dois avoir un outil dans ton interface graphique pour ajouter des polices (par exemple font-manager).
Si le but est de rendre le document imprimable, il faut que celui-ci n'implique que des polices sur le système cible. C'est une des raisons pour lesquelles utiliser des polices exotiques est rarement une bonne idée, à moins comme je l'expliquais auparavant de l'embarquer dans le fichier PDF.
Le format PDF est "ouvert" (enfin c'est un peu plus subtil) mais tu peux effectivement le manipuler depuis libreoffice-writer ou avec un programme (par exemple codé en python, avec pdfminer). Une solution pourrait être d'injecter les polices manquantes mais je ne l'ai jamais fait, je pense que c'est faisable, mais je ne sais pas si c'est si facile.
Ce que je ne comprends pas vraiment, c'est comment la conversion vers un fichier PS te permet de contourner le problème. Est-ce que lors de la conversion ps, les polices exotiques sont remplacées par une police par défaut ?
Bonne chance
Modifié le 27 avril 2023 à 17:37
Si le but est juste d'imprimer le document sous Linux et que certaines polices font défaut, il suffit de les installer.
J'ai testé d'installer la police Arial mais ça n'a rien changé.
Ce que je ne comprends pas vraiment, c'est comment la conversion vers un fichier PS te permet de contourner le problème. Est-ce que lors de la conversion ps, les polices exotiques sont remplacées par une police par défaut ?
Je rappelle que le PDF s'affiche correctement mais c'est uniquement l'aperçu et l'impression qui posent problème
Le format PDF est "ouvert" (enfin c'est un peu plus subtil) mais tu peux effectivement le manipuler depuis libreoffice-writer ou avec un programme (par exemple codé en python, avec pdfminer).
Alors pas directement avec LibreOffice Writer mais avec Draw et merci pour pdfminer je ne connaissais pas :)
--
Toutefois j'ai trouvé comment activer le mode debug sur evince et j'ai découvert des choses intéressantes :
$ G_MESSAGES_DEBUG=Poppler evince doc.pdf > err_gtk
$ cat err_gtk | cut -d: -f 6 | sort -u
Command token too long
font resource is not a dictionary
Illegal character ')'
Illegal character '>'
Illegal character '{'
Illegal character '}'
Illegal character <03> in hex string
...
Illegal character <ff> in hex string
No font in show
No font in show/space
Unknown font tag 'f-3-0'
...
Unknown font tag 'f-20-0'
Unknown font tag 'f-21-0'
...
Unknown font tag 'f-28-0'
Warning
xref num 18 not found but needed, try to reconstruct<0a>
$ pdftohtml -fontfullname -hidden -stdout -xml doc.pdf
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pdf2xml SYSTEM "pdf2xml.dtd">
...
<pdf2xml producer="poppler" version="20.09.0">
...
<page number="1" position="absolute" top="0" left="0" height="892" width="1262">
<fontspec id="0" size="10" family="Helvetica-Oblique" color="#000000"/>
<page number="2" position="absolute" top="0" left="0" height="1262" width="892">
...
<fontspec id="20" size="33" family="GKNUFG+CooperHewitt-Bold" color="#527fac"/>
<fontspec id="21" size="18" family="GKNUFG+CooperHewitt-Bold" color="#527fac"/>
...
<fontspec id="58" size="13" family="AAAABC+Arial-ItalicMT" color="#000000"/>
...
<text top="99" left="85" width="445" height="33" font="20"><b>BLABLAB</b></text>
<text top="140" left="285" width="43" height="18" font="21"><b>BLABLA</b></text>
...
</page>
</pdf2xml>
=> si quelqu'un a suivi, le debug renvoie des "Unknown font tag" pour les identifiants f-NN-0 où NN est un identifiant et qu'ils correspondraient aux fontspec liée à une police de la sortie XML de pdf2html et dans mon cas correspondraient bien aux problèmes de police remontés plus tôt indiqués par Draw, à savoir CooperHewitt et Arial.
Mais très franchement sans documentation détaillée c'est de la spéculation voire du délire.
Si quelqu'un a plus de connaissance sur le sujet ...
En tout cas pour ma part, je suppose que le problème est du côté du prestataire (même si Windows s'en sort) et s'il se reproduit trop souvent sous Debian 11 XFCE4 je repartirais de cette analyse, sinon autant convertir en PS.
Modifié le 3 mai 2023 à 11:47
Bonjour,
En réponse à ton dernier message #10.
Malheureusement, je ne pense pas que tu puisses avoir une telle garantie au niveau du lecteur lui-même, car cela dépend de la manière dont est implémenté l'application. C'est un peu comme demander que tous les navigateurs internet se comportent de la même façon, c'est un débat qui a fait couler beaucoup de larmes pendant ces dernières décennies :-)
La promesse du format pdf était de garantir que le comportement à l'impression soit le même pour tout plateforme, mais cela pré-suppose que le fichier soit complet et bien formé, et que le lecteur pdf implémente toute la norme pdf.
- Si le pdf est imparfait, le moteur de l'application va prendre des décisions arbitraires et parvenir (ou pas) à corriger le tir selon son implémentation.
- Si le lecteur pdf est partiellement implémenté, il n'est pas surprenant que certains documents s'ouvrent mal.
On peut regretter qu'evince n'y parvienne pas ce qui mériterait peut être d'être signalé auprès des développeurs concernés (voir cette page).
- Si tu décides de remonter le problème, les développeurs te demanderont sûrement un pdf qui met en évidence le problème, chose que tu peux sans doute leur fournir en anonymisant les parties sensibles du document avec pdfminer.
En résumé :
- Dans un monde parfait, il faudrait :
- ne générer que des pdf "standalone" afin de garantir que le comportement du lecteur pdf soit toujours celui attendu ;
- s'assurer qu'on n'utilise que des lecteurs pdf fiables (complètement implémentés et exempts de bogues)
- Dans un monde pratique, tu n'as pas vraiment d'autre choix que de changer de lecteur pdf.
- okular marche généralement bien pour la lecteur et l'impression. Pour les pdf modifiables, ça dépend j'ai souvenir de mésaventures. Peut-être que qpdfview est meilleur à ce niveau. Malheureusement, tous deux sont construits sur Qt, ce qui engendre l'installation de nombreuses dépendances pour les personnes qui ne sont pas sous KDE.
- Dans des temps très reculés, j'utilisais acroread (le lecteur développé par Adobe). Étonnamment, il ne semble plus exister pour Linux sur le site officiel, mais il semble toujours possible de l'installer (voir ici).
Bonne chance
3 mai 2023 à 12:16
Oki merci pour tes conseils :), je vais voir si je peux me permettre de consacrer un peu de temps pour remonter le bug.
En tout cas je déplore le fait qu'il n'y ait pas de projet transversal au niveau des interfaces et que l'approche ne soit pas pensée de manière modulaire pour que, soit on utilise ce que l'équipe de dev nous propose de manière native, soit on choisi nous même ce qui nous convient.
Parce que mine de rien avoir des interfaces et des logiques différentes, oblige l'utilisateur à sans arrêt s'adapter et réapprendre pour des différences souvent mineures.
Je me dis qu'il y a peut être à voir dans les nouveaux standards de programmation (y compris dans les bonnes pratiques) et qu'il y ait une sorte de label de type "projet convivial homogène" qu'on pourrait apposer sur des applications qui s'y conforment et qui sensibiliseraient les devs à rester "User Friendly" dans leur conception.
Je fais une digression, ce n'est pas très clair dans ma tête et certainement moins dans mes écrits, mais j'avais envie de le consigner pour que peut être un jour ça murisse dans l'esprit collectif.
3 mai 2023 à 13:03
Bonjour,
Effectivement, factoriser le code pour uniformiser le comportement des applications, simplifier le débogage et la maintenance, réinventer la roue, etc.)
Je ne t'apprends sans doute rien en te disant qu'evince dépend de la librairie gtk et okular de librairie Qt, qui sont toutes deux utilisées par de très nombreux logiciels disposant d'une interface graphique. Bref, factoriser le code entre différentes applications est déjà une réalité.
Alors on peut se demander, existe-il une librairie qui sert à gerer le pdf. On peut observer qu'okular (de même que qpdfview) dependent de poppler (et il en va de même pour le lecteur xpdf). Or poppler semble dédiée au rendu de fichiers pdf et montre que certaines fonctionnalités communes sont déjà mutualisées. Donc l'idée de rassembler dans une librairie la gestion des pdf est déjà une réalité.
Si on se réfère aux sources d'evince (voir par exemple ce fichier), evince semble dépendre de poppler, mais par contre le paquet debian n'en fait pas explicitement mention, ce qui est étonnant. Peut-être qu'evince n'utilise pas la bonne version (voir cette discussion), je ne sais pas :-)
Après, on peut aussi se consoler en se disant que si un jour il y a un gros problème avec les librairies Qt (comme il y a pu y en avoir lorsqu'on est passé à Qt5), on pourra toujours utiliser evince en solution de secours. Même s'il n'est pas complètement satisfaisant, c'est déjà mieux que rien :-)
Modifié le 3 mai 2023 à 14:08
C'est chouette que tu me consacres du temps et en particulier que tu me partage ton savoir et ton expérience :).
En fait je ne dédiais pas particulièrement le sujet à la lecture des PDFs mais plutôt au fait que sous Linux aucune IHM d'impression n'est identique et pire, aucune boite de dialogue ne suit la même logique. Juste ça ! Une fenêtre d'impression standard.
Le standard pour les utilisateurs Windows ce sont des interfaces similaires (on retrouve rapidement ses habitudes d'un logiciel à l'autre), surtout dans la sphère des outils non dédiés professionnel. Après, je suis un ex-dev donc j'ai des notions mais je n'ai pas suffisamment d'expérience (ni sous Windows, ni sous Linux d'ailleurs) pour savoir comment sont articulés les IHMs, les APIs, l'apparence / "look and feel" (CSS ? thèmes ?). Ce qui reste vrai à mon sens c'est que l'utilisateur est moins perdu sous Windows que sous Linux. Et je suis convaincu qu'il y a peu à faire pour combler ce fossé.
Je pense que c'est une belle digression. Je vais certainement (un jour) ouvrir un fil pour mieux comprendre les tenants et les aboutissants sur ce sujet. C'est aussi pour ça que j'avance l'idée d'un label. On pourrait avoir du "Libre dédié" et du "Libre standard".
12 mai 2023 à 11:40
En fait je ne dédiais pas particulièrement le sujet à la lecture des PDFs mais plutôt au fait que sous Linux aucune IHM d'impression n'est identique et pire, aucune boite de dialogue ne suit la même logique. Juste ça ! Une fenêtre d'impression standard
Cela dépend de la librairie sur laquelle se base l'application (Gtk, Qt...). Personnellement je suis plutôt de l'école KDE et donc la plupart des applications que j'utilise sont basées sur Qt, et donc présentent la même fenêtre d'impression.
Et je suis convaincu qu'il y a peu à faire pour combler ce fossé.
En réalité je vois difficilement tout le monde opter subitement pour la même librairie. Qt et Gtk ont fait leur propre choix. J'imagine que certaines personnes préfèrent la fenêtre d'impression de Gtk, d'autres celles de KDE. KDE s'est largement inspiré de Windows par le passé, donc si tu penses que des utilisateurs peuvent être déstabilisés sous Linux, c'est sans doute un bon choix si le PC est suffisamment puissant. Sinon, cinnamon est également très (plus) simple à prendre en main (il rappelle un peu windows XP), mais comme il se base sur Gtk, il utilise les fenêtre systèmes de Gtk que personnellement je trouve peu ergonomiques.
Je pense que c'est une belle digression. Je vais certainement (un jour) ouvrir un fil pour mieux comprendre les tenants et les aboutissants sur ce sujet. C'est aussi pour ça que j'avance l'idée d'un label. On pourrait avoir du "Libre dédié" et du "Libre standard".
Si tu veux, c'est mieux effectivement :-)
Bonne continuation
2 mai 2023 à 11:04
Nickouel ! okular et qpdfview impriment parfaitement tous les textes
Nota : j'ai retesté depuis evince, l'impression est toujours erratique, donc il y a quelque chose que evince et d'autres ne font pas et que okular et qpdfview font !
Problème résolu donc ! Merki mamiemando ;-)
Si je peux te demander : as tu une solution pour uniformiser les fenêtres d'impression entre les applications (ex : pour imprimer sous okular on obtient une fenêtre différente de evince qui est aussi différente de LibreOffice) ?
Je demande ça car avoir des habitudes différentes est quelque chose qui fait peur aux utilisateurs qui veulent migrer depuis Windows. Ca m'a souvent été demandé. Je ne sais pas si c'est techniquement possible, mais je pose la question au cas où...