{{tag>Precise Trusty pdf}} ---- {{ http://www.accesspdf.com/pdftk/pdftk_heading.gif?nolink&144}} {{ http://www.accesspdf.com/pdftk/sledgehammer.gif?nolink&56}} ====== PDFTK ====== **PDFTK** est un programme en ligne de commande permettant d'effectuer certaines manipulations de documents PDF, comme la mise en arrière-plan, la concaténation, extraction de pages, le remplissage des formulaires, etc. C’est un logiciel libre sous licence **[[wpfr>Licence_publique_générale_GNU|GNU GPL]]**. ===== Installation ===== Il suffit d’[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>pdftk]]**. ===== Utilisation ==== La syntaxe de base de PDFTK est la suivante : pdftk fichiers_entrants opérande output fichier_sortant L’//opérande// correspond à l’action désirée sur les fichiers. PDFTK ne fonctionne pas avec les formulaires PDF en version 1.6 ([[http://web.archive.org/web/20080211115400/http://www.accesspdf.com/article.php/20050708071835171|source]]). ==== Liste des opérandes ==== ^ Opérande ^ Signification ^ | [[#concatenation|cat]] | concaténation, déconcaténation | | [[#extraction|burst]] | extraction | | [[#rapports|dump_data]] | extraction des méta-données, marque-pages (signets) et étiquettes de page d’un PDF | | [[#compression|uncompress]] | décompression | | attach_files | inclusion de pièces jointes dans un document PDF | | unpack_files | extraction de pièces jointes d'un document PDF | | [[#remplir_un_formulaire_pdf|fill_form]] | remplissage d’un formulaire PDF avec des données FDF((//Forms Document Format//, format de données de formulaire PDF s’utilisant conjointement avec un document PDF)) ou XFDF((FDF version XML)) | | [[#filigrane|background]] | met un document en filigrane (en arrière-plan) d'un autre document | | [[#tampon|stamp]] | tamponne un document avec un autre document (mis au premier-plan) | | [[#tampon|multistamp]] | tamponne un document avec un autre document page à page (mis au premier-plan) | | generate_fdf | génère un fichier FDF vierge ou avec les valeurs par défaut selon les champs contenu dans le PDF | | [[#liste_des_champs_d_un_formulaire|dump_data_fields]] | génère un fichier texte contenant la liste des champs d’un PDF, leur type, leur valeur par défaut, etc. | | [[#modifier_les_meta-donnees|update_info]] | mettre à jour les méta-données | ===== Quelques exemples ==== ==== Concaténation ==== La fusion ou la concaténation de deux fichiers PDF ou plus se fait avec l’opérande **cat** : pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf ou, avec des alias (un alias ne peut qu'être une unique lettre majuscule) : pdftk A=1.pdf B=2.pdf cat A B output 12.pdf Pour concaténer tous les fichiers PDF du répertoire courant (donc avec les jokers) et à condition qu'il n'y ait pas d'espace dans les noms de fichier : pdftk *.pdf cat output tous.pdf Pour concaténer la page 1 puis les pages 5 à 8 d'un premier document puis, par ordre décroissant de la dernière à la page 6 d'un deuxième document : pdftk A=premier.pdf B=deuxième.pdf cat A1 A5-8 Bend-6 output fichier-final.pdf Joint deux fichiers dont l’un est crypté (la sortie ne l’est pas) : pdftk A=sécurisé.pdf mon-document.pdf input_pw A=foopass cat output document-combiné.pdf ==== Déconcaténation ==== Sépare toutes les pages d'un fichier et les enregistre dans des fichiers différents : pdftk document.pdf burst Sépare les pages de //document.pdf// et les enregistre dans le même dossier en nommant les pages : //pg_0001.pdf, pg_0002.pdf...// On peut préciser en argument de output l’appellation générique avec par exemple : pdftk document.pdf burst output copie_no%d.pdf Qui produira en sortie les fichiers : //copie_no1.pdf, copie_no2.pdf...// ==== Rotations ==== {{ :divers:120px-simple_compass_rose.svg.png?nolink|Rose des vents}} Il s’agit de placer après l’intervalle des lettres en capitales représentant les points cardinaux (en anglais) de sorte que le haut de la page d'origine sur l'écran corresponde au point cardinal choisi. Pivote la première page d’un PDF de 90 degrés dans le sens horaire (donc à l’est, point east), mais pas les autres pages : pdftk entrée.pdf cat 1east 2-end output sortie.pdf Pivote toutes les pages d'un document PDF de 180 degrés (au sud, point S) : pdftk entrée.pdf cat 1-endsouth output sortie.pdf ==== Sécurité ==== Chiffrer un document PDF avec une clé de 128 bits et retirer tous les droits (par défaut) : pdftk mon-document.pdf output mon-document-chiffré.128.pdf owner_pw mdp1 Idem que ci-dessus sauf qu’un mot de passe est requis pour ouvrir le PDF : pdftk mon-document.pdf output mon-document-chiffré.128.pdf owner_pw mdp1 user_pw mdp2 Idem que ci-dessus mais en autorisant l’impression (après l’ouverture du PDF) : pdftk mon-document.pdf output mon-document-chiffré.128.pdf owner_pw mdp1 user_pw mdp2 allow printing où « mdp1 » est le mot de passe du propriétaire du PDF et « mdp2 » le mot de passe de l'utilisateur (à personnaliser). Déchiffre un PDF : pdftk chiffré.pdf input_pw mot-de-passe output déchiffré.pdf ==== Compression ==== Décomprime les flux de page PDF (utile en particulier pour modifier le code PDF dans un éditeur de texte) : pdftk mon-document.pdf output mon-document.décomprimé.pdf uncompress Comprime les flux de page PDF (utile en particulier pour gagner de la place) : pdftk mon-document.pdf output mon-document.comprimé.pdf compress La commande suivante est beaucoup plus efficace : gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=fichier_reduit.pdf fichier_a_reduire.pdf ==== Réparation ==== Répare une table XREF corrompue d’un PDF et les longueurs de flux (si possible) ((Texte anglais original : //Repair a PDF's Corrupted XREF Table and Stream Lengths (If Possible)//)) : pdftk cassé.pdf output réparé.pdf ==== Extraction ==== === De certaines pages d'un document === Il faut utiliser l'opérande « cat ». Pour extraire une seule page d'un document : pdftk mon-document.pdf cat 1 output page1-de-mon-document.pdf Pour extraire plusieurs pages situées les unes à la suite des autres : pdftk mon-document.pdf cat 2-5 output pages2-a-5-de-mon-document.pdf Pour extraire plusieurs pages d'un document et les insérer dans un seul document (pages 6, 2 à 5 et 7 à 9 insérées dans l'ordre 6, 2 à 5, 7 à 9) : pdftk mon-document.pdf cat 6 2-5 7-9 output pages-de-mon-document.pdf === De toutes les pages d’un document === On utilise l’opérande « burst ». Pour extraire chaque page d’un document et reporter les données dans un fichier « doc_data.txt » : pdftk mon-document.pdf burst Pour extraire chaque page d’un document dans des fichiers dont le nom commencera par le numéro de la page codé sur 5 chiffres : pdftk mon-document.pdf burst output %05d_fichiers_extraits.pdf ==== Rapports ==== Extrait les méta-données, les marque-pages (signets) et les étiquettes de page d’un PDF dans un fichier texte : pdftk mon-document.pdf dump_data output rapport.txt ==== Gestion des formulaires ==== === Liste des champs d’un formulaire === Extrait la liste des champs, et leurs propriétés, d’un formulaire PDF dans un fichier texte : pdftk mon-document.pdf dump_data_fields output liste_des_champs.txt === Remplir un formulaire PDF === Permet de remplir les champs d’un formulaire PDF avec des données provenant d’un fichier FDF ou d'un fichier XFDF (XML). pdftk document.pdf fill_form données.fdf output document-rempli.pdf pdftk document.pdf fill_form données.xfdf output document-rempli.pdf Les champs seront toujours modifiables (mais pré-remplis). Pour rendre les champs non modifiables (c’est-à-dire « aplatir » le PDF), il faut utiliser l’option « ''flatten'' » : pdftk document.pdf fill_form données.fdf output document-rempli.pdf flatten pdftk document.pdf fill_form données.xfdf output document-rempli.pdf flatten Si le PDF existe déjà, PDFTK le signalera //sur la ligne de commande// et //attendra une réponse//. Utiliser « ''dont_ask'' » en fin de commande permet d'écraser un éventuel fichier existant automatiquement. Exemple : pdftk document.pdf fill_form données.fdf output document-rempli.pdf dont_ask === Exemple de fichier XFDF === Soit un fichier PDF contenant deux champs de saisie, nommés « ''SAI_Lieu'' » et « ''SAI_Date'' ». Pour (pré-)remplir ces champs de saisie par programmation, le fichier XFDF généré doit au moins avoir la forme suivante et être en UTF-8 : Metz 12 novembre 2008 ==== Superposition ==== === Filigrane === Permet de mettre un PDF en arrière-plan d’un autre PDF : pdftk document.pdf background fond.pdf output sortie.pdf On peut utiliser des fichiers multi-pages si le nombre de pages est identique : pdftk document.pdf multibackground fond.pdf output sortie.pdf === Tampon === Permet de tamponner un PDF (document-à-tamponner.pdf) avec un autre PDF (tampon.pdf) : pdftk document-à-tamponner.pdf stamp tampon.pdf output document-tamponné.pdf === Tampon multiple === Permet par exemple de rajouter les numéros de pages à un pdf pdftk document-à-tamponner.pdf multistamp pages_vierges_avec_numeros_de_page.pdf output document-tamponné.pdf ( les pages numérotées peuvent être crées avec un script sous libreoffice) ==== Modifier les méta-données ==== Permet de modifier ou de mettre à jour les méta-données du PDF, préalablement extraites avec l’opérande « [[#rapports|dump_data]] ». Il suffit de modifier le fichier « rapport.txt » contenant l’extraction en question, puis de mettre à jour des méta-données du PDF de la manière suivante : pdftk document.pdf update_info rapport.txt output document-mis-à-jour.pdf ===== Désinstallation ===== Pour supprimer cette application, il suffit de [[:tutoriel:comment_supprimer_un_paquet|supprimer le paquet]] **pdftk**. La configuration de l’application sera conservée ou supprimée selon la méthode de désinstallation que vous choisirez. ===== Voir aussi ===== * **''(en)''** [[http://www.pdftk.org|Le site officiel]] ([[http://web.archive.org/web/20080211115400/www.accesspdf.com/pdftk/|archive]]) * **''(en)''** [[http://www.accesspdf.com/article.php/20050510131850979|Remplir un formulaire PDF en utilisant une interface HTML]] ([[http://web.archive.org/web/20080211115400/http://www.accesspdf.com/article.php/20050510131850979|archive]]) * **(fr)** [[http://www.it-connect.fr/fusionner-des-pdf-sous-linux-avec-pdftk/|Fusionner des PDF sous Linux avec pdftk : Le tutoriel complet !]] sur IT-Connect ---- //Contributeurs principaux : [[:utilisateurs:Floriang]], [[:utilisateurs:ZondeR]], [[:utilisateurs:eagle08]]//.