Manipulations de fichiers PDF

Page créée le 29 mars 2023

Manipulation de fichiers pdf en ligne de commande, par exemple pour des traitements par lots. Il existe de nombreux utilitaires sous linux dont les fonctions sont parfois identiques. Cette page présente différents exemples d'utilisation qui nous ont été utiles au fil du temps!

Le paquet poppler-utils comprend plusieurs utilitaires dont pdfseparate, pdffonts, pdfattach, pdfunite, etc.

pdfjam fait partie du paquet texlive-extra-utils, et permet d'utiliser les fonctions de pdfpages pour LaTeX. «pdfjam is a shell-script front end to the LaTeX 'pdfpages' package»

pdfjam --help

ghostscript

Autres logiciels utiles

Extraire toutes les pages

pdfseparate -f 1 document.pdf pages_%d.pdf

Extraire la page 3

pdfseparate -f 3 -l 3 document.pdf page3.pdf

-f (first) : première page à extraire
-l (last) : dernière page à extraire

En anglais, fond perdu = bleed
La commande suivante ajoute un fond perdu de 3mm sur chaque côté d'une page A5 (148x210mm), un cadre entoure la page originale (–frame true), les fichiers embedded sont conservés.

pdfjam --scale 1.0 --frame true --noautoscale true --papersize '{154mm,216mm}' -o document.pdf document_avec_fond_perdu.pdf

–frame true : cadre noir autour de la page originale

pdfjam document.pdf '1-111,{}' -o document_complet.pdf

Ici, une page vide est ajoutée après la page 111 du document original, on peut moduler (par ex. '1,{},3-4,{},5-' ) cf. https://equa.space/notes/pdfjam/

pdffonts document.pdf

Ces infos permettent de savoir si le fichier de fonte est intégré (embedded) dans le fichier pdf, son type, etc. cf. doc pdffonts

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dEncodeColorImages=false -dNOPAUSE -dQUIET -dBATCH -sOutputFile=optimized.pdf document.pdf

-dEncodeColorImages=false : ne pas réencoder les images JPEG
Si on souhaite qu'aucune modification ne soit appliquée aux images on peut ajouter (source) :

  -dColorConversionStrategy=/LeaveColorUnchanged \
  -dEncodeColorImages=false \
  -dEncodeGrayImages=false \
  -dEncodeMonoImages=false \

Avec leurs caractéristiques (colorspace, width, height, x-ppi, y-ppi, etc.)

pdfimages -list document.pdf
pdfimages -all document.pdf /chemin/absolu/racine

-all : conserver les formats d'origine

Il faut absolument indiquer un chemin absolu valide!

(KO par abandon)

On dirait bien que c'est un sujet complexe… Avec imagemagick on peut obtenir des informations sur le profil icc utilisé :

identify -format '%[colorspace]' document.pdf

Mais d'autres lectures indiquent que chaque élément d'un pdf peuvent avoir des profils associés différents.
Pour une conversion en CMJN, je fais un essai avec

gs -o document_cmjn.pdf -sDEVICE=pdfwrite -sProcessColorModel=DeviceCMYK -sColorConversionStrategy=CMYK -sColorConversionStrategyForImages=CMYK document.pdf 

Mais identify le détecte toujours comme du sRGB …
En revanche avec pdfimages -list document_cmjn.pdf on peut voir que les images sont bien reconnues comme étant en CMJN

Test avec ghostscript et un profil ICC

gs -o test_fogra.pdf -sDEVICE=pdfwrite -dOverrideICC=true -sOutputICCProfile=Coated_Fogra39L_VIGC_300.icc -sColorConversionStrategy=CMYK -sColorConversionStrategyForImages=CMYK -dProcessColorModel=/DeviceCMYK -dRenderIntent=3 -dDeviceGrayToK=true document.pdf

Mais ghostscript transforme toutes les images en JPEG…
nb : un pdf ne peut pas contenir d'iamges au format PNG.

Je laisse tomber pour cette fois

Télécharger des profils de couleur (dont Fogra39) : https://www.color.org/registry/index.xalter

  • ressource/logiciel/manipulation_pdf/start.txt
  • Dernière modification: 2025/01/17 17:48
  • par emoc