Manipulation de fichiers PDF

PDFtk est un outil puissant pour la manipulation de fichiers PDF.

Il existe aussi un service en ligne, avec possibilité d’auto-hébergement, se nommant Stirling-PDF et qui propose une vaste panoplie d’actions sur les fichiers PDF, comme l’ajout d’une signature ou d’un filigrane, par exemple. Voici une instance disponible : 3n1 Tech Solutions.

Sécuriser

Avant toute chose, si un document provient d’une source douteuse, Dangerzone permettra de l’assainir.

Déprotéger

Admettons que le fichier PDF soit protégé par mot de passe, et que celui-ci est connu. Voici comment en faire une copie non protégée :

pdftk 'FILE_SOURCE.pdf' input_pw PROMPT output 'NEW_FILE.pdf'

Orienter

Pour l’exemple, disons que les pages 301, 302 et 303 du fichier source sont en mode paysage alors que toutes les autres sont en mode portrait. Voici comment réorienter ces 3 pages :

pdftk \
    'FILE_SOURCE.pdf' \
    cat \
    1-300 \
    301-303left \
    304-end \
    output \
    'NEW_FILE.pdf'

Redimensionner

Pour vérifier que toutes les pages ont les mêmes marges :

grep --text MediaBox 'FILE_SOURCE.pdf' | sort -u

Exemple de sortie :

/MediaBox [0 0 595 842]
/MediaBox [0 0 612 792]

Redimensionnons toutes les pages :

sed 's/MediaBox \[0 0 595.*/MediaBox \[0 0 612 792\]/g' \
    'FILE_SOURCE.pdf' \
    > 'NEW_FILE.pdf'

Fusionner

Pour fusionner plusieurs fichiers PDF en un seul :

pdftk \
    'FILE_SOURCE_1.pdf' \
    'FILE_SOURCE_2.pdf' \
    cat \
    output \
    'NEW_FILE.pdf'

Optimiser

GhostScript permet de réduire grandement le poids du fichier final :

gs \
    -o 'FILE_SOURCE.pdf' \
    -sDEVICE=pdfwrite \
    -dPDFSETTINGS=/prepress \
    -dEmbedAllFonts=true \
    'NEW_FILE.pdf'

Personnaliser les Méta-données

Exporter les métadonnées actuelles dans le fichier metadata.txt :

pdftk 'FILE_SOURCE.pdf' dump_data_utf8 output 'metadata.txt'

Le contenu du fichier ressemble à ça :

InfoBegin
InfoKey: ModDate
InfoValue: D:20191114220102Z
InfoBegin
InfoKey: Producer
InfoValue: PRODUCTER
PdfID0: d8ec8095099bebfa395c663ac4e4a26e
PdfID1: 6f977277cf1bfe9a5b8c1c60f2ba175d
NumberOfPages: 158
PageMediaBegin
PageMediaNumber: 1
PageMediaRotation: 0
PageMediaRect: 0 8.58 1,057.5 1,696.08
PageMediaDimensions: 1,057.5 1,687.5

Modifier les premières lignes ou ajouter les métadonnées manquantes (parmi : Title, Author, Subject, Keywords, Creator, Producer, CreationDate, ModDate et Trapped) :

InfoBegin
InfoKey: Title
InfoValue: TITLE
InfoBegin
InfoKey: Author
InfoValue: AUTHOR
InfoBegin
InfoKey: CreationDate
InfoValue: D:20191114220102Z
InfoBegin
InfoKey: ModDate
InfoValue: D:20200409101248Z
InfoBegin
InfoKey: Producer
InfoValue: PRODUCTER
PdfID0: d8ec8095099bebfa395c663ac4e4a26e
PdfID1: 6f977277cf1bfe9a5b8c1c60f2ba175d
NumberOfPages: 158
PageMediaBegin
PageMediaNumber: 1
PageMediaRotation: 0
PageMediaRect: 0 8.58 1,057.5 1,696.08
PageMediaDimensions: 1,057.5 1,687.5

Générer un nouveau PDF comportant les nouvelles méta-données :

pdftk 'FILE_SOURCE.pdf' update_info_utf8 'metadata.txt' output 'NEW_FILE.pdf'

📜 Historique

2024-08-30

Ajout de la section Sécuriser.

Ajout des informations sur Stirling-PDF dans l’introduction.

2024-05-14

Ajout de la section Déprotéger.

2024-02-07

Déplacement de l’article depuis le blog.

2020-04-09

Ajout de la section Personnaliser les Méta-données.

2019-12-17

Premier jet.