Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
ressource:logiciel:manipulation_pdf:start [2025/01/16 18:04] emoc [Manipulations de fichiers PDF] |
ressource:logiciel:manipulation_pdf:start [2025/02/10 21:14] (Version actuelle) emoc [Optimiser un pdf pour réduire la taille du fichier (avec ghostscript)] |
||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
Page créée le 29 mars 2023 | Page créée le 29 mars 2023 | ||
- | En ligne de commande avec pdfseparate, pdfunite, pdftk, pdfjam | + | 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 [[https://manpages.debian.org/bookworm/poppler-utils/index.html|poppler-utils]] comprend plusieurs utilitaires dont **pdfseparate, pdffonts, pdfattach, pdfunite**, etc. \\ | Le paquet [[https://manpages.debian.org/bookworm/poppler-utils/index.html|poppler-utils]] comprend plusieurs utilitaires dont **pdfseparate, pdffonts, pdfattach, pdfunite**, etc. \\ | ||
Ligne 15: | Ligne 15: | ||
**ghostscript**\\ | **ghostscript**\\ | ||
* https://manpages.debian.org/bookworm/ghostscript/gs.1.en.html | * https://manpages.debian.org/bookworm/ghostscript/gs.1.en.html | ||
+ | |||
+ | **Autres logiciels utiles** | ||
+ | * PDFtk (basé sur java) https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ | ||
+ | * PDFsam (basé sur java) https://pdfsam.org/ (interface graphique, payant) | ||
+ | * PSPDFUtils (basé sur python) https://pypi.org/project/pspdfutils/ | ||
+ | * masterpdfeditor https://code-industry.net/free-pdf-editor/ | ||
===== Extraire des feuillets d'un document pdf ===== | ===== Extraire des feuillets d'un document pdf ===== | ||
Ligne 27: | Ligne 33: | ||
===== Divers ===== | ===== Divers ===== | ||
- | **Ajouter un fond perdu**\\ | + | ====Ajouter un fond perdu==== |
En anglais, fond perdu = //bleed// \\ | 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. | 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. | ||
Ligne 33: | Ligne 40: | ||
**--frame true** : cadre noir autour de la page originale | **--frame true** : cadre noir autour de la page originale | ||
- | **Infos sur les polices d'un document** | + | ==== Convertir au format de papier A4 ==== |
+ | |||
+ | pdfjam --outfile out.pdf --paper a4paper in.pdf | ||
+ | |||
+ | ====Ajouter des pages vides ==== | ||
+ | |||
+ | 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/ | ||
+ | ====Infos sur les polices d'un document==== | ||
pdffonts document.pdf | 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 [[https://manpages.debian.org/testing/poppler-utils/pdffonts.1.en.html|pdffonts]] | Ces infos permettent de savoir si le fichier de fonte est intégré (//embedded//) dans le fichier pdf, son type, etc. cf. doc [[https://manpages.debian.org/testing/poppler-utils/pdffonts.1.en.html|pdffonts]] | ||
- | **Optimiser un pdf pour réduire la taille du fichier** | + | ====Optimiser un pdf pour réduire la taille du fichier (avec ghostscript)==== |
- | gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH -sOutputFile=optimized.pdf document.pdf | + | |
+ | 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 ([[https://superuser.com/a/373740|source]]) : | ||
+ | <code> | ||
+ | -dColorConversionStrategy=/LeaveColorUnchanged \ | ||
+ | -dEncodeColorImages=false \ | ||
+ | -dEncodeGrayImages=false \ | ||
+ | -dEncodeMonoImages=false \ | ||
+ | </code> | ||
+ | |||
+ | [[ressource:logiciel:imagemagick:start#petits_trucs_pratiques|Autre solution avec imagemagick]] | ||
+ | ==== Lister toutes les images d'un pdf ==== | ||
+ | |||
+ | Avec leurs caractéristiques (colorspace, width, height, x-ppi, y-ppi, etc.) | ||
+ | pdfimages -list document.pdf | ||
+ | |||
+ | ==== Extraire toutes les images d'un pdf ==== | ||
+ | |||
+ | pdfimages -all document.pdf /chemin/absolu/racine | ||
+ | **-all** : conserver les formats d'origine | ||
+ | |||
+ | Il faut __absolument__ indiquer un chemin absolu valide! | ||
+ | |||
+ | ==== Conversion de profil de couleur ==== | ||
+ | |||
+ | (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 | ||
+ | ===== Ressources ===== | ||
+ | |||
+ | Télécharger des profils de couleur (dont Fogra39) : https://www.color.org/registry/index.xalter |