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 | ||
informatique:divers:manipuler_les_pdf_sous_linux [2020/08/19 18:53] – [1.3 Extraire le texte présent dans un PDF] Cédric ABONNEL | informatique:divers:manipuler_les_pdf_sous_linux [2023/02/28 20:02] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. Cédric ABONNEL | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Manipuler des PDF sous Linux ? ====== | ||
+ | |||
+ | ===== Liste des programmes | ||
+ | |||
+ | **pdfshuffler** (PDF file merging, rearranging, | ||
+ | Concaténer, | ||
+ | |||
+ | **pdfmod** (A simple application for modifying PDF documents) | ||
+ | |||
+ | **poppler** (Command line utilities for converting PDF files) | ||
+ | |||
+ | **pdftk** | ||
+ | |||
+ | **pdf chain** | ||
+ | |||
+ | ===== pdfmod ===== | ||
+ | |||
+ | ==== Installer pdfmod ==== | ||
+ | |||
+ | {{ informatique: | ||
+ | |||
+ | Executer l' | ||
+ | < | ||
+ | |||
+ | Résultat : | ||
+ | < | ||
+ | Dernière vérification de l’expiration des métadonnées effectuée il y a 1:48:37 le sam. 29 juil. 2017 18:27:15 CEST. | ||
+ | Dépendances résolues. | ||
+ | ================================================================================ | ||
+ | | ||
+ | ================================================================================ | ||
+ | Installation de : | ||
+ | | ||
+ | Installation des dépendances: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Résumé de la transaction | ||
+ | ================================================================================ | ||
+ | Installer | ||
+ | |||
+ | Taille totale des téléchargements : | ||
+ | Taille des paquets installés : | ||
+ | Voulez-vous continuer ? | ||
+ | Téléchargement des paquets : | ||
+ | (1/6): gnome-sharp-2.24.2-13.fc26.x86_64.rpm | ||
+ | (2/6): hyena-0.5-15.fc26.x86_64.rpm | ||
+ | (3/6): poppler-sharp-0.0.3-13.fc26.x86_64.rpm | ||
+ | (4/6): pdfmod-0.9.1-15.fc26.x86_64.rpm | ||
+ | (5/6): gtk-sharp2-2.12.42-2.fc26.x86_64.rpm | ||
+ | (6/6): nunit-3.6-2.fc26.x86_64.rpm | ||
+ | -------------------------------------------------------------------------------- | ||
+ | Total 478 kB/s | 2.4 MB | ||
+ | Test de la transaction en cours | ||
+ | La vérification de la transaction a réussi. | ||
+ | Lancement de la transaction de test | ||
+ | Transaction de test réussie. | ||
+ | Exécution de la transaction | ||
+ | Préparation | ||
+ | Installation de : gtk-sharp2-2.12.42-2.fc26.x86_64 | ||
+ | Exécution du scriptlet: gtk-sharp2-2.12.42-2.fc26.x86_64 | ||
+ | Installation de : gnome-sharp-2.24.2-13.fc26.x86_64 | ||
+ | Exécution du scriptlet: gnome-sharp-2.24.2-13.fc26.x86_64 | ||
+ | Installation de : poppler-sharp-0.0.3-13.fc26.x86_64 | ||
+ | Installation de : nunit-3.6-2.fc26.x86_64 | ||
+ | Installation de : hyena-0.5-15.fc26.x86_64 | ||
+ | Installation de : pdfmod-0.9.1-15.fc26.x86_64 | ||
+ | Exécution du scriptlet: pdfmod-0.9.1-15.fc26.x86_64 | ||
+ | Vérification de : pdfmod-0.9.1-15.fc26.x86_64 | ||
+ | Vérification de : gnome-sharp-2.24.2-13.fc26.x86_64 | ||
+ | Vérification de : gtk-sharp2-2.12.42-2.fc26.x86_64 | ||
+ | Vérification de : hyena-0.5-15.fc26.x86_64 | ||
+ | Vérification de : poppler-sharp-0.0.3-13.fc26.x86_64 | ||
+ | Vérification de : nunit-3.6-2.fc26.x86_64 | ||
+ | |||
+ | Installé : | ||
+ | pdfmod.x86_64 0.9.1-15.fc26 | ||
+ | gtk-sharp2.x86_64 2.12.42-2.fc26 | ||
+ | nunit.x86_64 3.6-2.fc26 | ||
+ | |||
+ | Terminé ! | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== pdf shuffler ===== | ||
+ | |||
+ | ==== Installer pdf shuffler ==== | ||
+ | |||
+ | {{ informatique: | ||
+ | |||
+ | Exécuter l' | ||
+ | |||
+ | < | ||
+ | sudo dnf install pdfshuffler | ||
+ | </ | ||
+ | |||
+ | |||
+ | Résultat : | ||
+ | < | ||
+ | Dernière vérification de l’expiration des métadonnées effectuée il y a 1:59:55 le sam. 29 juil. 2017 18:27:15 CEST. | ||
+ | Dépendances résolues. | ||
+ | ================================================================================ | ||
+ | | ||
+ | ================================================================================ | ||
+ | Installation de : | ||
+ | | ||
+ | Installation des dépendances: | ||
+ | | ||
+ | | ||
+ | |||
+ | Résumé de la transaction | ||
+ | ================================================================================ | ||
+ | Installer | ||
+ | |||
+ | Taille totale des téléchargements : | ||
+ | Taille des paquets installés : | ||
+ | Voulez-vous continuer ? | ||
+ | Téléchargement des paquets : | ||
+ | (1/3): pypoppler-0.12.2-5.fc26.x86_64.rpm | ||
+ | (2/3): pdfshuffler-0.6.0-10.fc26.noarch.rpm | ||
+ | (3/3): pyPdf-1.13-13.fc26.noarch.rpm | ||
+ | -------------------------------------------------------------------------------- | ||
+ | Total 29 kB/s | 173 kB | ||
+ | Test de la transaction en cours | ||
+ | La vérification de la transaction a réussi. | ||
+ | Lancement de la transaction de test | ||
+ | Transaction de test réussie. | ||
+ | Exécution de la transaction | ||
+ | Préparation | ||
+ | Installation de : pypoppler-0.12.2-5.fc26.x86_64 | ||
+ | Installation de : pyPdf-1.13-13.fc26.noarch | ||
+ | Installation de : pdfshuffler-0.6.0-10.fc26.noarch | ||
+ | Exécution du scriptlet: pdfshuffler-0.6.0-10.fc26.noarch | ||
+ | Vérification de : pdfshuffler-0.6.0-10.fc26.noarch | ||
+ | Vérification de : pyPdf-1.13-13.fc26.noarch | ||
+ | Vérification de : pypoppler-0.12.2-5.fc26.x86_64 | ||
+ | |||
+ | Installé : | ||
+ | pdfshuffler.noarch 0.6.0-10.fc26 | ||
+ | pypoppler.x86_64 0.12.2-5.fc26 | ||
+ | |||
+ | Terminé ! | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Utiliser pdf shuffler ==== | ||
+ | |||
+ | {{ informatique: | ||
+ | |||
+ | |||
+ | ===== Poppler ===== | ||
+ | |||
+ | ==== Installer poppler ==== | ||
+ | |||
+ | {{ informatique: | ||
+ | |||
+ | Exécuter l' | ||
+ | |||
+ | < | ||
+ | sudo dnf install poppler-utils | ||
+ | </ | ||
+ | |||
+ | ==== Utiliser poppler ==== | ||
+ | |||
+ | **poppler-utils** est un collection d' | ||
+ | * **pdfdetach** extract embedded documents from a PDF | ||
+ | * **pdffonts** lists the fonts used in a PDF | ||
+ | * **pdfimages** extract all embedded images at native resolution from a PDF | ||
+ | * **pdfinfo** list all infos of a PDF | ||
+ | * **pdfseparate** extract single pages from a PDF | ||
+ | * **pdftocairo** convert single pages from a PDF to vector or bitmap formats using cairo | ||
+ | * **pdftohtml** convert PDF to HTML format retaining formatting | ||
+ | * **pdftoppm** convert a PDF page to a bitmap | ||
+ | * **pdftops** convert PDF to printable PS format | ||
+ | * **pdftotext** extract all text from PDF | ||
+ | * **pdfunite** merges several PDF | ||
+ | |||
+ | The popper-utils package provides several different commands for interacting with and modifying PDF files. However, the two commands that help us the most here are **pdfseparate** and **pdfunite**. | ||
+ | |||
+ | **pdfseparate** extracts pages into multiple PDFs that we can later merge together with **pdfunite**. To extract all the pages of a document into individual files, use: | ||
+ | |||
+ | < | ||
+ | pdfseparate ColoringBook.pdf ColoringBook-page_%d.pdf | ||
+ | </ | ||
+ | |||
+ | To export a range of pages — say just pages 3,4,5,6,7,8 and 9 of a PDF — use the command: | ||
+ | |||
+ | < | ||
+ | pdfseparate -f 3 -l 9 ColoringBook.pdf ColoringBook-page_%d.pdf | ||
+ | </ | ||
+ | |||
+ | Finally, after using **pdfseparate**, | ||
+ | |||
+ | < | ||
+ | pdfunite ColoringBook-page_3.pdf ColoringBook-page_7.pdf NewColoringBook.pdf | ||
+ | </ | ||
+ | |||
+ | | ||
+ | ===== PDFTK ===== | ||
+ | |||
+ | ==== Installer le programme PDFTK ==== | ||
+ | < | ||
+ | |||
+ | ==== Utiliser PDFTK ==== | ||
+ | |||
+ | Assembler (merge, join) plusieurs fichiers PDF en un seul nouveau fichier PDF | ||
+ | Syntaxe | ||
+ | < | ||
+ | |||
+ | * P1 - source - correspond à la liste de fichiers à assembler | ||
+ | * P2 - destination - correspond au fichier créé avec les documents PDF assemblés. | ||
+ | |||
+ | ==== Exemple ==== | ||
+ | |||
+ | Assembler in1.pdf et in2.pdf dans un nouveau fichier out1.pdf : | ||
+ | < | ||
+ | |||
+ | ==== Remarque ==== | ||
+ | |||
+ | Si PDFMERGE est installé sur votre poste, il rempli aussi cette fonctionnalité : | ||
+ | < | ||
+ | |||
+ | |||
+ | ===== PDF Chain ===== | ||
+ | |||
+ | PDF Chain est une interface graphique pour PDF Toolkit (pdftk). Cette interface supporte toutes les commandes disponibles dans PDF Toolkit. | ||
+ | |||
+ | |||
+ | ===== ImageMagick ===== | ||
+ | |||
+ | ==== Installer ImageMagick ==== | ||
+ | |||
+ | > Fedora 30 | ||
+ | |||
+ | Sous **Fedora 30**, il suffit d’exécuter **dnf** pour installer le paquet présent dans des dépots **fedora** et ** updates **. | ||
+ | |||
+ | $ sudo dnf install ImageMagick | ||
+ | | ||
+ | Les dépendances à d' | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | ===== - La compil' | ||
+ | |||
+ | |||
+ | ==== - Recompiler un fichier PDF (pdftocairo et popple) ==== | ||
+ | |||
+ | |||
+ | Dans un dossier vide, copier le fichier PDF à traiter. Se placer dans ce dossier avec la commande '' | ||
+ | |||
+ | ## Convertir le fichier PDF en plusieurs fichiers JPEG avec **poppler** : | ||
+ | |||
+ | $ pdftocairo `ls -v *.jpg` -jpeg | ||
+ | |||
+ | ## Convertir les fichiers JPEG et les assembler en un fichier PDF avec **ImageMagick** : | ||
+ | |||
+ | $ convert `ls -v *.jpg` " | ||
+ | |||
+ | ## Effacer les fichiers temporaires : | ||
+ | |||
+ | $ rm *.jpg | ||
+ | | ||
+ | Le fichier '' | ||
+ | |||
+ | |||
+ | ==== - Recompiler un fichier PDF (gs via ps) ==== | ||
+ | |||
+ | Voici une méthode avec les prorgrammes **pdf2ps** et **ps2pdf** en ligne de commande. Ces programmes sont intégrés au paquets **GhostScript**. | ||
+ | |||
+ | On considère que l'on souhaite transformer le fichier nommé **livre.pdf**. Le résultat sera dans le fichier **livre-opti.pdf** | ||
+ | |||
+ | < | ||
+ | pdf2ps livre.pdf inter.ps | ||
+ | ps2pdf -dPDFSETTINGS=/ | ||
+ | </ | ||
+ | |||
+ | L' | ||
+ | |||
+ | |||
+ | ==== - Recompiler un fichier PDF (gs) ==== | ||
+ | |||
+ | Voici une méthode avec les prorgrammes **gs** en ligne de commande. Le programme **gs** s' | ||
+ | |||
+ | On considère que l'on souhaite transformer le fichier nommé **livre.pdf**. Le résultat sera dans le fichier **livre-opti.pdf** | ||
+ | |||
+ | < | ||
+ | gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/ | ||
+ | </ | ||
+ | |||
+ | L' | ||
+ | |||
+ | ==== - Extraire le texte présent dans un PDF ==== | ||
+ | |||
+ | Votre fichier PDF peut contenir un ensemble de textes. Celui-ci peut être extrait directement en fichier texte. | ||
+ | Voici une méthode avec le prorgramme **pdftotext** en ligne de commande. Ce programme fait partie de la suite **poppler-utils**. | ||
+ | |||
+ | On considère que l'on souhaite extraire le texte présent dans le fichier nommé **livre.pdf**. Le résultat sera dans le fichier **livre.txt** | ||
+ | |||
+ | < | ||
+ | pdftotext livre.pdf livre.txt | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== - Deviner le texte d'un fichier PDF ==== | ||
+ | |||
+ | Si votre fichier PDF ne comporte que des images, il est nécessaire de '' | ||
+ | |||
+ | Ce programme peut être installé avec la commande : | ||
+ | sudo apt install ocrmypdf | ||
+ | |||
+ | On considère que l'on souhaite extraire le texte présent dans le fichier nommé **livre.pdf**. Le résultat sera dans le fichier **livre.txt** | ||
+ | |||
+ | < | ||
+ | ocrmypdf livre.pdf livre.txt -l fra | ||
+ | </ | ||
+ | |||
+ | Le dictionnaire OCR s' | ||
+ | sudo apt install tesseract-ocr-fra | ||
+ | |||
+ | |||
+ | |||