PostScript a commencé comme un langage de programmation pour les imprimantes. Bien que les imprimantes PostScript existent toujours, il existe de nombreuses autres façons d’envoyer des données à une imprimante. Mais PostScript a également engendré le format de document portable ou PDF et cela a connu un succès fou. Il ne se passe pratiquement pas un jour sans qu’une sorte de document PDF apparaisse sur l’écran de votre ordinateur. Bien sûr, il existe d’autres formats concurrents, mais ils détiennent une part de marché réduite par rapport au PDF. La visualisation de PDF sous Linux ne pose aucun problème. Mais qu’en est-il de les éditer ? Il s’avère que c’est facile aussi, si vous savez comment.

Outils d’interface graphique

Vous pouvez utiliser de nombreux outils pour éditer des fichiers PDF, mais l’astuce réside dans la qualité des résultats. Tout fonctionnera pour cela : LibreOffice Draw, Inkscape ou même GIMP. Si tout ce que vous voulez faire est de supprimer quelque chose avec une boîte blanche ou de faire une annotation, ces outils sont généralement géniaux, mais pour des modifications plus compliquées ou une sortie parfaite au pixel près, ils peuvent ne pas être le bon outil.

Le plus gros problème est que la plupart de ces outils traitent le PDF comme une image ou, au moins, une collection d’objets. Par exemple, des colonnes de texte se transformeront probablement en une collection de lignes discrètes. Changer quelque chose qui provoque l’enroulement d’une ligne vous obligera à modifier toutes les autres lignes pour qu’elles correspondent. Parfois, le texte n’est même pas du tout du texte, mais des images. Cela dépend en grande partie de la façon dont le créateur a créé le PDF pour commencer.Si cela ne vous dérange pas d’utiliser un outil Web, PDFEscape est gratuit et fonctionne très bien. Les autres options incluent Scribus et Okular. Ces deux outils ne peuvent pas vraiment modifier le fichier mais peuvent les importer sous forme d’images que vous pouvez manipuler davantage. Par exemple, le mode de révision d’Okular peut ajouter des annotations telles que des surbrillances et des lignes à main levée.

Sans surprise, emacs peut afficher un fichier PDF s’il s’exécute sous X. Vous pouvez utiliser Ctrl+C Ctrl+C pour passer à l’affichage d’une représentation textuelle. Après tout, la plupart des formats de fichiers PDF sont du texte et emacs peut même gérer des fichiers binaires. Donc, si cela ne vous dérange pas de travailler dans le format PDF – un peu comme PostScript – vous pouvez faire votre édition dans emacs ou même dans un autre éditeur de texte.

Il existe quelques éditeurs non libres dédiés et au moins un éditeur open source spécifique au PDF. Bien sûr, comme la plupart des choses sous Linux, vous pouvez également utiliser la ligne de commande.

Cacher le texte

Le problème avec le travail avec des fichiers PDF sous forme de texte – même dans emacs – est qu’ils sont souvent compressés et illisibles. Par exemple, les mots peuvent apparaître un caractère à la fois séparés par un code de formatage ou d’autres données. Donc, la recherche de Hackaday dans le PDF peut ne pas fonctionner.

Vous pouvez convertir le fichier pour utiliser plus de texte non compressé, bien que ce ne soit pas une panacée. Par exemple, si vous ouvrez ce segment d’un article sur une radio amateur et que vous souhaitez changer le mot « convention », il est difficile de dire exactement où se trouve ce texte, mais il se trouve quelque part dans cette zone générale :

3 0 obj << /Length 14770 /Filter /FlateDecode >> stream
H�|Wɒ�8��+p$gJ,�c��v�cS�Ҍc��J�$���ZV������� �CTR�������r��[�}�7}����|��������I5u���`M�>�/��?l�.8�@��gBzq�r!#�%� AE�� �˜ ᥉��x!$��X8^%$��A�D�B���(���b�[H �>����#��{a���e0$^H&|/����U1$^��#��/�G�Us��/"/�� <i�'qC���$xe�"X�x22�������G��F�Lp]Mnm�$] #TI��G�q�l��'3;!���!+�ȷ�{䕀���
��b��Qja����Q i� GRn��g;L����x�Zܿ㌳�n�2�R& :"x�r�ky�[JPK��/���S��i��������]r�F�p����k�� |���
QI�mx>1��1�Q��y)ХǺ�Z�U.^�](pN��dx����;�֬;d�_�{˪�cYa��.t�s�}�ْ{<ZW�:�Ȅ�Oɴ��cS�UzluP�֨o}ި��Uqf��o��V��bT%mj|��t����;v�{s�Rj˺���

Bonne chance pour le trouver dans cette soupe. Vous voulez le convertir en texte décompressé.

qpdf -qdf input.pdf output.txt

Le fichier résultant est en fait un PDF même si je l’ai nommé .txt. Cependant, il a tout déballé. Ce n’est toujours pas génial, mais au moins vous pourriez trouver la pièce que vous devez changer :

1.2632 -1.1242 TD
0.0739 Tc
0.1263 Tw
(One potentially confusing Stamp)Tj
-1.2632 -1.1368 TD
0.026 Tc
0.1248 Tw
[(con)38.6(v)20.7(ention is that the I/O pin numbers)]TJ
0 -1.1242 TD
0.0262 Tc
0.0072 Tw
[<646f6e90>13.6(t correspond to the IC pin numbers.)]TJ
T*

Encore une fois, bonne chance pour rechercher le mot « convention », par exemple. Mais c’est quand même mieux que le premier exemple. Vous pouvez également trouver des métadonnées même dans des fichiers non traités en utilisant des éléments tels que /Auteur et /Titre.

Ligne de commande magique

le qpdf l’outil peut convertir un fichier PDF en un autre fichier PDF. Il peut optimiser la sortie pour le service Web, l’édition de texte, et il peut faire des choses simples comme supprimer des pages ou fusionner des morceaux de plusieurs fichiers. Vous pouvez lire la documentation, mais ici, nous utilisons le mode QDF pour produire un fichier PDF légitime avec tous les objets dans l’ordre numérique et avec des fins de ligne de style Unix normales. Cela vous permet de modifier plus facilement le fichier avec un éditeur de texte, mais comme vous l’avez vu, cela ne simplifie pas toujours les choses. Supprimer des objets entiers est un casse-tête, mais si vous vous débarrassez de toutes les mentions d’un objet, vous pouvez exécuter fix-qdf pour recréer le fichier QDF approprié.

Une autre façon d’apporter des modifications courantes aux fichiers PDF consiste à utiliser le serveur PDFtk (PDFtk sans le surnom du serveur est une boîte à outils GUI pour Windows). En utilisant PDFtk, vous pouvez fusionner ou diviser des documents, faire pivoter des pages et effectuer de nombreuses autres tâches courantes. Par exemple, pour joindre deux fichiers dans l’ordre :

pdftk in1.pdf in2.pdf cat output output.pdf

Vous pouvez omettre, disons, la page 9 :

pdftk in1.pdf in2.pdf cat 1-8 10-end output output.pdf

Vous pouvez également mélanger les pages fusionnées dans différents ordres :

pdftk A=in1.pdf B=in2.pdf shuffle A B output output.pdf

Texte en PDF et retour

Si vous souhaitez convertir du texte en PDF à partir de la ligne de commande, vous disposez de plusieurs options. Pandoc est un outil incroyable qui convertit le balisage en presque n’importe quoi. Il convertira non seulement Markdown en PDF, mais à peu près n’importe quoi d’autre.

Vous pouvez également utiliser diverses combinaisons de ps2pdf (avec un outil pour générer PostScript), pdf2text (qui fait partie de poppler-utils) ou Ghostscript pour créer des PDF ou en retirer du texte. Ghostscript peut faire beaucoup de choses, y compris convertir un PDF en plusieurs formats d’image si vous souhaitez, par exemple, les afficher sur une page Web sous forme d’image.

Impression spéciale et autres outils

Parfois, vous souhaitez modifier un fichier PDF pour qu’il s’imprime d’une certaine manière. Nous avons déjà parlé de la façon de fusionner des pages paires et impaires, par exemple, mais il y a quelques autres commandes que vous pourriez vouloir à cette fin :

  • pdfxup – Utilise pdflatex et Ghostscript pour mettre plusieurs pages sur une page imprimée (par exemple, 2-up)
  • pdfjam – Utilise LaTeX pour mettre des documents sur des pages de différentes tailles ou produire plusieurs pages sur une seule page imprimée
  • pdfposter – Créez une sortie géante sur plusieurs pages à partir d’une seule page

Si vous préférez une interface graphique, vous pouvez consulter PDFsam basic. Si vous êtes intéressé par les logiciels Java, il y a Multivalent.

Emballer

Comme d’habitude, il existe de nombreuses façons d’effectuer des tâches quotidiennes sous Linux. Parfois, le défi n’est pas de faire le travail, mais plutôt de trouver l’outil qui correspond le mieux à votre style de travail.

Curieusement, le pandoc revient sans cesse pour différentes raisons. Si vous préférez vos documents sur papier, vous avez besoin d’une imprimante et d’une pince à reliure.