publish: Manipuler des PDF sous Linux
This commit is contained in:
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"title": "Manipuler des PDF sous Linux",
|
|
||||||
"_updated_at": "2026-05-16 20:11:37",
|
|
||||||
"slug": "manipuler-les-pdf-sous-linux",
|
|
||||||
"published": true,
|
|
||||||
"published_at": "2023-02-28 20:02",
|
|
||||||
"category": "Informatique",
|
|
||||||
"tags": {
|
|
||||||
"tags": [
|
|
||||||
"PDF"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"seo_title": "",
|
|
||||||
"seo_description": "",
|
|
||||||
"og_image": "https://www.abonnel.fr/file?uuid=bd34b650-8713-4321-93df-fe2042d8e68c&name=cover.png"
|
|
||||||
}
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
# Manipuler des PDF sous Linux
|
|
||||||
|
|
||||||
Fusionner, séparer, réorganiser ou extraire le contenu d'un PDF : sous Linux, plusieurs outils — graphiques ou en ligne de commande — couvrent ces besoins. Voici une sélection des plus utiles, avec leur installation sur Fedora et un aperçu de leur usage.
|
|
||||||
|
|
||||||
## Vue d'ensemble des outils
|
|
||||||
|
|
||||||
| Outil | Type | Usage principal |
|
|
||||||
|---|---|---|
|
|
||||||
| **pdfshuffler** | Graphique | Fusionner, séparer, réordonner des pages |
|
|
||||||
| **pdfmod** | Graphique | Modifier la structure d'un PDF |
|
|
||||||
| **poppler-utils** | Ligne de commande | Conversion, extraction, fusion, découpe |
|
|
||||||
| **pdftk** | Ligne de commande | Manipulation avancée (fusion, chiffrement, formulaires) |
|
|
||||||
| **PDF Chain** | Graphique | Interface graphique pour pdftk |
|
|
||||||
|
|
||||||
## pdfmod
|
|
||||||
|
|
||||||
Application graphique simple pour réorganiser, supprimer ou faire pivoter les pages d'un PDF.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Installation :
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo dnf install pdfmod
|
|
||||||
```
|
|
||||||
|
|
||||||
L'installation tire quelques dépendances Mono/GTK# (`gtk-sharp2`, `gnome-sharp`, `poppler-sharp`, `hyena`, `nunit`), soit environ 8 Mo une fois installé.
|
|
||||||
|
|
||||||
## pdfshuffler
|
|
||||||
|
|
||||||
Outil graphique léger orienté glisser-déposer, idéal pour assembler ou réorganiser des pages issues de plusieurs fichiers.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Installation :
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo dnf install pdfshuffler
|
|
||||||
```
|
|
||||||
|
|
||||||
Dépendances principales : `pyPdf` et `pypoppler`.
|
|
||||||
|
|
||||||
### Utilisation
|
|
||||||
|
|
||||||
L'interface affiche les pages sous forme de vignettes, qu'il suffit de faire glisser pour les réordonner, supprimer ou regrouper avant export.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## poppler-utils
|
|
||||||
|
|
||||||
`poppler-utils` est une collection d'outils en ligne de commande s'appuyant sur l'API **poppler** pour manipuler les fichiers PDF.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Installation :
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo dnf install poppler-utils
|
|
||||||
```
|
|
||||||
|
|
||||||
### Les commandes fournies
|
|
||||||
|
|
||||||
- **pdfdetach** — extrait les documents embarqués d'un PDF
|
|
||||||
- **pdffonts** — liste les polices utilisées
|
|
||||||
- **pdfimages** — extrait les images à leur résolution native
|
|
||||||
- **pdfinfo** — affiche les métadonnées du document
|
|
||||||
- **pdfseparate** — extrait des pages individuelles
|
|
||||||
- **pdftocairo** — convertit des pages en formats vectoriels ou bitmap via cairo
|
|
||||||
- **pdftohtml** — convertit un PDF en HTML en conservant la mise en forme
|
|
||||||
- **pdftoppm** — convertit une page PDF en bitmap
|
|
||||||
- **pdftops** — convertit un PDF au format PostScript imprimable
|
|
||||||
- **pdftotext** — extrait tout le texte
|
|
||||||
- **pdfunite** — fusionne plusieurs PDF
|
|
||||||
|
|
||||||
### Exemples pratiques
|
|
||||||
|
|
||||||
Les deux commandes les plus utiles au quotidien sont `pdfseparate` (découpe) et `pdfunite` (fusion).
|
|
||||||
|
|
||||||
**Extraire toutes les pages d'un document** dans des fichiers séparés :
|
|
||||||
|
|
||||||
```
|
|
||||||
pdfseparate ColoringBook.pdf ColoringBook-page_%d.pdf
|
|
||||||
```
|
|
||||||
|
|
||||||
**Extraire une plage de pages** (ici les pages 3 à 9) :
|
|
||||||
|
|
||||||
```
|
|
||||||
pdfseparate -f 3 -l 9 ColoringBook.pdf ColoringBook-page_%d.pdf
|
|
||||||
```
|
|
||||||
|
|
||||||
**Fusionner plusieurs PDF** en un seul document (par exemple les pages 3 et 4 extraites précédemment) :
|
|
||||||
|
|
||||||
```
|
|
||||||
pdfunite ColoringBook-page_3.pdf ColoringBook-page_4.pdf NewColoringBook.pdf
|
|
||||||
```
|
|
||||||
@@ -1,300 +1,95 @@
|
|||||||
# Manipuler des PDF sous Linux ?
|
# Manipuler des PDF sous Linux
|
||||||
|
|
||||||
## Liste des programmes
|
Fusionner, séparer, réorganiser ou extraire le contenu d'un PDF : sous Linux, plusieurs outils — graphiques ou en ligne de commande — couvrent ces besoins. Voici une sélection des plus utiles, avec leur installation sur Fedora et un aperçu de leur usage.
|
||||||
**pdfshuffler** (PDF file merging, rearranging, and splitting)\\
|
|
||||||
Concaténer, séparer ou modifier l'ordre des pages des fichiers PDF.
|
|
||||||
|
|
||||||
**pdfmod** (A simple application for modifying PDF documents)
|
## Vue d'ensemble des outils
|
||||||
|
|
||||||
**poppler** (Command line utilities for converting PDF files)
|
| Outil | Type | Usage principal |
|
||||||
|
|---|---|---|
|
||||||
**pdftk**
|
| **pdfshuffler** | Graphique | Fusionner, séparer, réordonner des pages |
|
||||||
|
| **pdfmod** | Graphique | Modifier la structure d'un PDF |
|
||||||
**pdf chain**
|
| **poppler-utils** | Ligne de commande | Conversion, extraction, fusion, découpe |
|
||||||
|
| **pdftk** | Ligne de commande | Manipulation avancée (fusion, chiffrement, formulaires) |
|
||||||
|
| **PDF Chain** | Graphique | Interface graphique pour pdftk |
|
||||||
|
|
||||||
## pdfmod
|
## pdfmod
|
||||||
### Installer pdfmod
|
|
||||||
|
Application graphique simple pour réorganiser, supprimer ou faire pivoter les pages d'un PDF.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Executer l'installation :
|
Installation :
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo dnf install pdfmod
|
sudo dnf install pdfmod
|
||||||
```
|
```
|
||||||
|
|
||||||
Résultat :
|
L'installation tire quelques dépendances Mono/GTK# (`gtk-sharp2`, `gnome-sharp`, `poppler-sharp`, `hyena`, `nunit`), soit environ 8 Mo une fois installé.
|
||||||
```
|
|
||||||
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.
|
|
||||||
# ====================================================================
|
|
||||||
Paquet Architecture Version Dépôt Taille
|
|
||||||
# ====================================================================
|
|
||||||
Installation de :
|
|
||||||
pdfmod x86_64 0.9.1-15.fc26 fedora 723 k
|
|
||||||
Installation des dépendances:
|
|
||||||
gnome-sharp x86_64 2.24.2-13.fc26 fedora 315 k
|
|
||||||
gtk-sharp2 x86_64 2.12.42-2.fc26 fedora 702 k
|
|
||||||
hyena x86_64 0.5-15.fc26 fedora 355 k
|
|
||||||
nunit x86_64 3.6-2.fc26 fedora 369 k
|
|
||||||
poppler-sharp x86_64 0.0.3-13.fc26 fedora 34 k
|
|
||||||
|
|
||||||
Résumé de la transaction
|
## pdfshuffler
|
||||||
# ====================================================================
|
|
||||||
Installer 6 Paquets
|
|
||||||
|
|
||||||
Taille totale des téléchargements : 2.4 M
|
Outil graphique léger orienté glisser-déposer, idéal pour assembler ou réorganiser des pages issues de plusieurs fichiers.
|
||||||
Taille des paquets installés : 8.4 M
|
|
||||||
Voulez-vous continuer ? [o/N] :o
|
|
||||||
Téléchargement des paquets :
|
|
||||||
(1/6): gnome-sharp-2.24.2-13.fc26.x86_64.rpm 190 kB/s | 315 kB 00:01
|
|
||||||
(2/6): hyena-0.5-15.fc26.x86_64.rpm 217 kB/s | 355 kB 00:01
|
|
||||||
(3/6): poppler-sharp-0.0.3-13.fc26.x86_64.rpm 158 kB/s | 34 kB 00:00
|
|
||||||
(4/6): pdfmod-0.9.1-15.fc26.x86_64.rpm 206 kB/s | 723 kB 00:03
|
|
||||||
(5/6): gtk-sharp2-2.12.42-2.fc26.x86_64.rpm 159 kB/s | 702 kB 00:04
|
|
||||||
(6/6): nunit-3.6-2.fc26.x86_64.rpm 333 kB/s | 369 kB 00:01
|
|
||||||
---
|
|
||||||
Total 478 kB/s | 2.4 MB 00:05
|
|
||||||
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 : 1/1
|
|
||||||
Installation de : gtk-sharp2-2.12.42-2.fc26.x86_64 1/6
|
|
||||||
Exécution du scriptlet: gtk-sharp2-2.12.42-2.fc26.x86_64 1/6
|
|
||||||
Installation de : gnome-sharp-2.24.2-13.fc26.x86_64 2/6
|
|
||||||
Exécution du scriptlet: gnome-sharp-2.24.2-13.fc26.x86_64 2/6
|
|
||||||
Installation de : poppler-sharp-0.0.3-13.fc26.x86_64 3/6
|
|
||||||
Installation de : nunit-3.6-2.fc26.x86_64 4/6
|
|
||||||
Installation de : hyena-0.5-15.fc26.x86_64 5/6
|
|
||||||
Installation de : pdfmod-0.9.1-15.fc26.x86_64 6/6
|
|
||||||
Exécution du scriptlet: pdfmod-0.9.1-15.fc26.x86_64 6/6
|
|
||||||
Vérification de : pdfmod-0.9.1-15.fc26.x86_64 1/6
|
|
||||||
Vérification de : gnome-sharp-2.24.2-13.fc26.x86_64 2/6
|
|
||||||
Vérification de : gtk-sharp2-2.12.42-2.fc26.x86_64 3/6
|
|
||||||
Vérification de : hyena-0.5-15.fc26.x86_64 4/6
|
|
||||||
Vérification de : poppler-sharp-0.0.3-13.fc26.x86_64 5/6
|
|
||||||
Vérification de : nunit-3.6-2.fc26.x86_64 6/6
|
|
||||||
|
|
||||||
Installé :
|
|
||||||
pdfmod.x86_64 0.9.1-15.fc26 gnome-sharp.x86_64 2.24.2-13.fc26
|
|
||||||
gtk-sharp2.x86_64 2.12.42-2.fc26 hyena.x86_64 0.5-15.fc26
|
|
||||||
nunit.x86_64 3.6-2.fc26 poppler-sharp.x86_64 0.0.3-13.fc26
|
|
||||||
|
|
||||||
Terminé !
|
|
||||||
```
|
|
||||||
|
|
||||||
## pdf shuffler
|
|
||||||
### Installer pdf shuffler
|
|
||||||

|

|
||||||
|
|
||||||
Exécuter l'installation :
|
Installation :
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo dnf install pdfshuffler
|
sudo dnf install pdfshuffler
|
||||||
```
|
```
|
||||||
|
|
||||||
Résultat :
|
Dépendances principales : `pyPdf` et `pypoppler`.
|
||||||
```
|
|
||||||
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.
|
|
||||||
# ====================================================================
|
|
||||||
Paquet Architecture Version Dépôt Taille
|
|
||||||
# ====================================================================
|
|
||||||
Installation de :
|
|
||||||
pdfshuffler noarch 0.6.0-10.fc26 fedora 69 k
|
|
||||||
Installation des dépendances:
|
|
||||||
pyPdf noarch 1.13-13.fc26 fedora 73 k
|
|
||||||
pypoppler x86_64 0.12.2-5.fc26 fedora 31 k
|
|
||||||
|
|
||||||
Résumé de la transaction
|
### Utilisation
|
||||||
# ====================================================================
|
|
||||||
Installer 3 Paquets
|
|
||||||
|
|
||||||
Taille totale des téléchargements : 173 k
|
L'interface affiche les pages sous forme de vignettes, qu'il suffit de faire glisser pour les réordonner, supprimer ou regrouper avant export.
|
||||||
Taille des paquets installés : 636 k
|
|
||||||
Voulez-vous continuer ? [o/N] :o
|
|
||||||
Téléchargement des paquets :
|
|
||||||
(1/3): pypoppler-0.12.2-5.fc26.x86_64.rpm 19 kB/s | 31 kB 00:01
|
|
||||||
(2/3): pdfshuffler-0.6.0-10.fc26.noarch.rpm 19 kB/s | 69 kB 00:03
|
|
||||||
(3/3): pyPdf-1.13-13.fc26.noarch.rpm 15 kB/s | 73 kB 00:04
|
|
||||||
---
|
|
||||||
Total 29 kB/s | 173 kB 00:05
|
|
||||||
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 : 1/1
|
|
||||||
Installation de : pypoppler-0.12.2-5.fc26.x86_64 1/3
|
|
||||||
Installation de : pyPdf-1.13-13.fc26.noarch 2/3
|
|
||||||
Installation de : pdfshuffler-0.6.0-10.fc26.noarch 3/3
|
|
||||||
Exécution du scriptlet: pdfshuffler-0.6.0-10.fc26.noarch 3/3
|
|
||||||
Vérification de : pdfshuffler-0.6.0-10.fc26.noarch 1/3
|
|
||||||
Vérification de : pyPdf-1.13-13.fc26.noarch 2/3
|
|
||||||
Vérification de : pypoppler-0.12.2-5.fc26.x86_64 3/3
|
|
||||||
|
|
||||||
Installé :
|
|
||||||
pdfshuffler.noarch 0.6.0-10.fc26 pyPdf.noarch 1.13-13.fc26
|
|
||||||
pypoppler.x86_64 0.12.2-5.fc26
|
|
||||||
|
|
||||||
Terminé !
|
|
||||||
```
|
|
||||||
|
|
||||||
### Utiliser pdf shuffler
|
|
||||||

|

|
||||||
|
|
||||||
## Poppler
|
## poppler-utils
|
||||||
### Installer poppler
|
|
||||||
|
`poppler-utils` est une collection d'outils en ligne de commande s'appuyant sur l'API **poppler** pour manipuler les fichiers PDF.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Exécuter l'installation :
|
Installation :
|
||||||
|
|
||||||
```
|
```
|
||||||
sudo dnf install poppler-utils
|
sudo dnf install poppler-utils
|
||||||
```
|
```
|
||||||
|
|
||||||
### Utiliser poppler
|
### Les commandes fournies
|
||||||
**poppler-utils** est un collection d'outils qui s'appuie sur l'API **poppler** pour éditer et modifier les fichiers PDF.
|
|
||||||
- **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**.
|
- **pdfdetach** — extrait les documents embarqués d'un PDF
|
||||||
|
- **pdffonts** — liste les polices utilisées
|
||||||
|
- **pdfimages** — extrait les images à leur résolution native
|
||||||
|
- **pdfinfo** — affiche les métadonnées du document
|
||||||
|
- **pdfseparate** — extrait des pages individuelles
|
||||||
|
- **pdftocairo** — convertit des pages en formats vectoriels ou bitmap via cairo
|
||||||
|
- **pdftohtml** — convertit un PDF en HTML en conservant la mise en forme
|
||||||
|
- **pdftoppm** — convertit une page PDF en bitmap
|
||||||
|
- **pdftops** — convertit un PDF au format PostScript imprimable
|
||||||
|
- **pdftotext** — extrait tout le texte
|
||||||
|
- **pdfunite** — fusionne plusieurs PDF
|
||||||
|
|
||||||
**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:
|
### Exemples pratiques
|
||||||
|
|
||||||
|
Les deux commandes les plus utiles au quotidien sont `pdfseparate` (découpe) et `pdfunite` (fusion).
|
||||||
|
|
||||||
|
**Extraire toutes les pages d'un document** dans des fichiers séparés :
|
||||||
|
|
||||||
```
|
```
|
||||||
pdfseparate ColoringBook.pdf ColoringBook-page_%d.pdf
|
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:
|
**Extraire une plage de pages** (ici les pages 3 à 9) :
|
||||||
|
|
||||||
```
|
```
|
||||||
pdfseparate -f 3 -l 9 ColoringBook.pdf ColoringBook-page_%d.pdf
|
pdfseparate -f 3 -l 9 ColoringBook.pdf ColoringBook-page_%d.pdf
|
||||||
```
|
```
|
||||||
|
|
||||||
Finally, after using **pdfseparate**, if we wanted to create a new document (NewColoringBook.pdf) with ColoringBook-page_3.pdf and ColoringBook-page_3.pdf we could use the following **pdfunite** command:
|
**Fusionner plusieurs PDF** en un seul document (par exemple les pages 3 et 4 extraites précédemment) :
|
||||||
|
|
||||||
```
|
```
|
||||||
pdfunite ColoringBook-page_3.pdf ColoringBook-page_7.pdf NewColoringBook.pdf
|
pdfunite ColoringBook-page_3.pdf ColoringBook-page_4.pdf NewColoringBook.pdf
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## PDFTK
|
|
||||||
### Installer le programme PDFTK
|
|
||||||
```
|
|
||||||
yum install pdftk
|
|
||||||
```
|
|
||||||
|
|
||||||
### Utiliser PDFTK
|
|
||||||
Assembler (merge, join) plusieurs fichiers PDF en un seul nouveau fichier PDF
|
|
||||||
Syntaxe
|
|
||||||
```
|
|
||||||
pdftk P1 cat output P2
|
|
||||||
```
|
|
||||||
|
|
||||||
- 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 :
|
|
||||||
```
|
|
||||||
pdftk in1.pdf in2.pdf cat output out2.pdf
|
|
||||||
```
|
|
||||||
|
|
||||||
### Remarque
|
|
||||||
Si PDFMERGE est installé sur votre poste, il rempli aussi cette fonctionnalité :
|
|
||||||
```
|
|
||||||
pdfmerge file1.pdf file2.pdf... fileN.pdf outfile.pdf
|
|
||||||
```
|
|
||||||
|
|
||||||
## 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'autres paquets sont les suivantes :
|
|
||||||
|
|
||||||
provider: ImageMagick-libs-1:6.9.10.75-1.fc30.x86_64
|
|
||||||
provider: glibc-2.29-27.fc30.x86_64
|
|
||||||
provider: glibc-2.29-27.fc30.i686
|
|
||||||
|
|
||||||
## - La compil' des questions
|
|
||||||
### - Recompiler un fichier PDF (pdftocairo et popple)
|
|
||||||
Dans un dossier vide, copier le fichier PDF à traiter. Se placer dans ce dossier avec la commande `cd` puis exécuter les commandes suivantes.
|
|
||||||
|
|
||||||
## 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` "final.pdf"
|
|
||||||
|
|
||||||
## Effacer les fichiers temporaires :
|
|
||||||
|
|
||||||
$ rm *.jpg
|
|
||||||
|
|
||||||
Le fichier `final.pdf` est prêt.
|
|
||||||
|
|
||||||
### - 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=/prepress inter.ps livre-opti.pdf
|
|
||||||
```
|
|
||||||
|
|
||||||
L'option **dPDFSETTINGS** défini la qualité d'image issue du fichier PDF. Elle peut prendre les valeurs (du moins bon au meilleur résultat) **/screen**, **/default**, **/ebook**, **/printer**, **/prepress**
|
|
||||||
|
|
||||||
### - Recompiler un fichier PDF (gs)
|
|
||||||
Voici une méthode avec les prorgrammes **gs** en ligne de commande. Le programme **gs** s'appelle **GhostScript** qui est un interpreteur de langage PDF et PS.
|
|
||||||
|
|
||||||
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=/ebook -sOutputFile=livre-opti.pdf livre.pdf
|
|
||||||
```
|
|
||||||
|
|
||||||
L'option **dPDFSETTINGS** défini la qualité d'image issue du fichier PDF. Elle peut prendre les valeurs (du moins bon au meilleur résultat) **/screen**, **/default**, **/ebook**, **/printer**, **/prepress**
|
|
||||||
|
|
||||||
### - 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 `deviner` le texte présent. Il s'agit de la méthode OCR. Voici une méthode avec le prorgramme **ocrmypdf** en ligne de commande.
|
|
||||||
|
|
||||||
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'appuie sur le programme **tesseract**. Il faut installer le dictionnaire que l'on souhaite utiliser par la suite :
|
|
||||||
sudo apt install tesseract-ocr-fra
|
|
||||||
@@ -1,18 +1,31 @@
|
|||||||
{
|
{
|
||||||
"uuid": "bd34b650-8713-4321-93df-fe2042d8e68c",
|
"uuid": "bd34b650-8713-4321-93df-fe2042d8e68c",
|
||||||
"slug": "manipuler-les-pdf-sous-linux",
|
"slug": "manipuler-les-pdf-sous-linux",
|
||||||
"title": "Manipuler des PDF sous Linux ?",
|
"title": "Manipuler des PDF sous Linux",
|
||||||
"author": "cedric@abonnel.fr",
|
"author": "cedric@abonnel.fr",
|
||||||
"published": true,
|
"published": true,
|
||||||
"published_at": "2023-02-28 20:02:47",
|
"featured": false,
|
||||||
|
"published_at": "2023-02-28 20:02",
|
||||||
"created_at": "2023-02-28 20:02:47",
|
"created_at": "2023-02-28 20:02:47",
|
||||||
"updated_at": "2023-02-28 20:02:47",
|
"updated_at": "2026-05-16 20:11:39",
|
||||||
"revisions": [],
|
"revisions": [
|
||||||
|
{
|
||||||
|
"n": 1,
|
||||||
|
"date": "2026-05-16 20:11:39",
|
||||||
|
"comment": "Titre modifié, tags modifiés, contenu modifié, image de couverture modifiée",
|
||||||
|
"title": "Manipuler des PDF sous Linux ?"
|
||||||
|
}
|
||||||
|
],
|
||||||
"cover": "cover.png",
|
"cover": "cover.png",
|
||||||
"files_meta": [],
|
"files_meta": [],
|
||||||
"external_links": [],
|
"external_links": [],
|
||||||
"seo_title": "",
|
"seo_title": "",
|
||||||
"seo_description": "",
|
"seo_description": "",
|
||||||
"og_image": "",
|
"og_image": "https://www.abonnel.fr/file?uuid=bd34b650-8713-4321-93df-fe2042d8e68c&name=cover.png",
|
||||||
"category": "Informatique"
|
"category": "Informatique",
|
||||||
|
"tags": {
|
||||||
|
"tags": [
|
||||||
|
"PDF"
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,300 @@
|
|||||||
|
# Manipuler des PDF sous Linux ?
|
||||||
|
|
||||||
|
## Liste des programmes
|
||||||
|
**pdfshuffler** (PDF file merging, rearranging, and splitting)\\
|
||||||
|
Concaténer, séparer ou modifier l'ordre des pages des fichiers PDF.
|
||||||
|
|
||||||
|
**pdfmod** (A simple application for modifying PDF documents)
|
||||||
|
|
||||||
|
**poppler** (Command line utilities for converting PDF files)
|
||||||
|
|
||||||
|
**pdftk**
|
||||||
|
|
||||||
|
**pdf chain**
|
||||||
|
|
||||||
|
## pdfmod
|
||||||
|
### Installer pdfmod
|
||||||
|

|
||||||
|
|
||||||
|
Executer l'installation :
|
||||||
|
```
|
||||||
|
sudo dnf install pdfmod
|
||||||
|
```
|
||||||
|
|
||||||
|
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.
|
||||||
|
# ====================================================================
|
||||||
|
Paquet Architecture Version Dépôt Taille
|
||||||
|
# ====================================================================
|
||||||
|
Installation de :
|
||||||
|
pdfmod x86_64 0.9.1-15.fc26 fedora 723 k
|
||||||
|
Installation des dépendances:
|
||||||
|
gnome-sharp x86_64 2.24.2-13.fc26 fedora 315 k
|
||||||
|
gtk-sharp2 x86_64 2.12.42-2.fc26 fedora 702 k
|
||||||
|
hyena x86_64 0.5-15.fc26 fedora 355 k
|
||||||
|
nunit x86_64 3.6-2.fc26 fedora 369 k
|
||||||
|
poppler-sharp x86_64 0.0.3-13.fc26 fedora 34 k
|
||||||
|
|
||||||
|
Résumé de la transaction
|
||||||
|
# ====================================================================
|
||||||
|
Installer 6 Paquets
|
||||||
|
|
||||||
|
Taille totale des téléchargements : 2.4 M
|
||||||
|
Taille des paquets installés : 8.4 M
|
||||||
|
Voulez-vous continuer ? [o/N] :o
|
||||||
|
Téléchargement des paquets :
|
||||||
|
(1/6): gnome-sharp-2.24.2-13.fc26.x86_64.rpm 190 kB/s | 315 kB 00:01
|
||||||
|
(2/6): hyena-0.5-15.fc26.x86_64.rpm 217 kB/s | 355 kB 00:01
|
||||||
|
(3/6): poppler-sharp-0.0.3-13.fc26.x86_64.rpm 158 kB/s | 34 kB 00:00
|
||||||
|
(4/6): pdfmod-0.9.1-15.fc26.x86_64.rpm 206 kB/s | 723 kB 00:03
|
||||||
|
(5/6): gtk-sharp2-2.12.42-2.fc26.x86_64.rpm 159 kB/s | 702 kB 00:04
|
||||||
|
(6/6): nunit-3.6-2.fc26.x86_64.rpm 333 kB/s | 369 kB 00:01
|
||||||
|
---
|
||||||
|
Total 478 kB/s | 2.4 MB 00:05
|
||||||
|
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 : 1/1
|
||||||
|
Installation de : gtk-sharp2-2.12.42-2.fc26.x86_64 1/6
|
||||||
|
Exécution du scriptlet: gtk-sharp2-2.12.42-2.fc26.x86_64 1/6
|
||||||
|
Installation de : gnome-sharp-2.24.2-13.fc26.x86_64 2/6
|
||||||
|
Exécution du scriptlet: gnome-sharp-2.24.2-13.fc26.x86_64 2/6
|
||||||
|
Installation de : poppler-sharp-0.0.3-13.fc26.x86_64 3/6
|
||||||
|
Installation de : nunit-3.6-2.fc26.x86_64 4/6
|
||||||
|
Installation de : hyena-0.5-15.fc26.x86_64 5/6
|
||||||
|
Installation de : pdfmod-0.9.1-15.fc26.x86_64 6/6
|
||||||
|
Exécution du scriptlet: pdfmod-0.9.1-15.fc26.x86_64 6/6
|
||||||
|
Vérification de : pdfmod-0.9.1-15.fc26.x86_64 1/6
|
||||||
|
Vérification de : gnome-sharp-2.24.2-13.fc26.x86_64 2/6
|
||||||
|
Vérification de : gtk-sharp2-2.12.42-2.fc26.x86_64 3/6
|
||||||
|
Vérification de : hyena-0.5-15.fc26.x86_64 4/6
|
||||||
|
Vérification de : poppler-sharp-0.0.3-13.fc26.x86_64 5/6
|
||||||
|
Vérification de : nunit-3.6-2.fc26.x86_64 6/6
|
||||||
|
|
||||||
|
Installé :
|
||||||
|
pdfmod.x86_64 0.9.1-15.fc26 gnome-sharp.x86_64 2.24.2-13.fc26
|
||||||
|
gtk-sharp2.x86_64 2.12.42-2.fc26 hyena.x86_64 0.5-15.fc26
|
||||||
|
nunit.x86_64 3.6-2.fc26 poppler-sharp.x86_64 0.0.3-13.fc26
|
||||||
|
|
||||||
|
Terminé !
|
||||||
|
```
|
||||||
|
|
||||||
|
## pdf shuffler
|
||||||
|
### Installer pdf shuffler
|
||||||
|

|
||||||
|
|
||||||
|
Exécuter l'installation :
|
||||||
|
|
||||||
|
```
|
||||||
|
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.
|
||||||
|
# ====================================================================
|
||||||
|
Paquet Architecture Version Dépôt Taille
|
||||||
|
# ====================================================================
|
||||||
|
Installation de :
|
||||||
|
pdfshuffler noarch 0.6.0-10.fc26 fedora 69 k
|
||||||
|
Installation des dépendances:
|
||||||
|
pyPdf noarch 1.13-13.fc26 fedora 73 k
|
||||||
|
pypoppler x86_64 0.12.2-5.fc26 fedora 31 k
|
||||||
|
|
||||||
|
Résumé de la transaction
|
||||||
|
# ====================================================================
|
||||||
|
Installer 3 Paquets
|
||||||
|
|
||||||
|
Taille totale des téléchargements : 173 k
|
||||||
|
Taille des paquets installés : 636 k
|
||||||
|
Voulez-vous continuer ? [o/N] :o
|
||||||
|
Téléchargement des paquets :
|
||||||
|
(1/3): pypoppler-0.12.2-5.fc26.x86_64.rpm 19 kB/s | 31 kB 00:01
|
||||||
|
(2/3): pdfshuffler-0.6.0-10.fc26.noarch.rpm 19 kB/s | 69 kB 00:03
|
||||||
|
(3/3): pyPdf-1.13-13.fc26.noarch.rpm 15 kB/s | 73 kB 00:04
|
||||||
|
---
|
||||||
|
Total 29 kB/s | 173 kB 00:05
|
||||||
|
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 : 1/1
|
||||||
|
Installation de : pypoppler-0.12.2-5.fc26.x86_64 1/3
|
||||||
|
Installation de : pyPdf-1.13-13.fc26.noarch 2/3
|
||||||
|
Installation de : pdfshuffler-0.6.0-10.fc26.noarch 3/3
|
||||||
|
Exécution du scriptlet: pdfshuffler-0.6.0-10.fc26.noarch 3/3
|
||||||
|
Vérification de : pdfshuffler-0.6.0-10.fc26.noarch 1/3
|
||||||
|
Vérification de : pyPdf-1.13-13.fc26.noarch 2/3
|
||||||
|
Vérification de : pypoppler-0.12.2-5.fc26.x86_64 3/3
|
||||||
|
|
||||||
|
Installé :
|
||||||
|
pdfshuffler.noarch 0.6.0-10.fc26 pyPdf.noarch 1.13-13.fc26
|
||||||
|
pypoppler.x86_64 0.12.2-5.fc26
|
||||||
|
|
||||||
|
Terminé !
|
||||||
|
```
|
||||||
|
|
||||||
|
### Utiliser pdf shuffler
|
||||||
|

|
||||||
|
|
||||||
|
## Poppler
|
||||||
|
### Installer poppler
|
||||||
|

|
||||||
|
|
||||||
|
Exécuter l'installation :
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo dnf install poppler-utils
|
||||||
|
```
|
||||||
|
|
||||||
|
### Utiliser poppler
|
||||||
|
**poppler-utils** est un collection d'outils qui s'appuie sur l'API **poppler** pour éditer et modifier les fichiers PDF.
|
||||||
|
- **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**, if we wanted to create a new document (NewColoringBook.pdf) with ColoringBook-page_3.pdf and ColoringBook-page_3.pdf we could use the following **pdfunite** command:
|
||||||
|
|
||||||
|
```
|
||||||
|
pdfunite ColoringBook-page_3.pdf ColoringBook-page_7.pdf NewColoringBook.pdf
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## PDFTK
|
||||||
|
### Installer le programme PDFTK
|
||||||
|
```
|
||||||
|
yum install pdftk
|
||||||
|
```
|
||||||
|
|
||||||
|
### Utiliser PDFTK
|
||||||
|
Assembler (merge, join) plusieurs fichiers PDF en un seul nouveau fichier PDF
|
||||||
|
Syntaxe
|
||||||
|
```
|
||||||
|
pdftk P1 cat output P2
|
||||||
|
```
|
||||||
|
|
||||||
|
- 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 :
|
||||||
|
```
|
||||||
|
pdftk in1.pdf in2.pdf cat output out2.pdf
|
||||||
|
```
|
||||||
|
|
||||||
|
### Remarque
|
||||||
|
Si PDFMERGE est installé sur votre poste, il rempli aussi cette fonctionnalité :
|
||||||
|
```
|
||||||
|
pdfmerge file1.pdf file2.pdf... fileN.pdf outfile.pdf
|
||||||
|
```
|
||||||
|
|
||||||
|
## 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'autres paquets sont les suivantes :
|
||||||
|
|
||||||
|
provider: ImageMagick-libs-1:6.9.10.75-1.fc30.x86_64
|
||||||
|
provider: glibc-2.29-27.fc30.x86_64
|
||||||
|
provider: glibc-2.29-27.fc30.i686
|
||||||
|
|
||||||
|
## - La compil' des questions
|
||||||
|
### - Recompiler un fichier PDF (pdftocairo et popple)
|
||||||
|
Dans un dossier vide, copier le fichier PDF à traiter. Se placer dans ce dossier avec la commande `cd` puis exécuter les commandes suivantes.
|
||||||
|
|
||||||
|
## 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` "final.pdf"
|
||||||
|
|
||||||
|
## Effacer les fichiers temporaires :
|
||||||
|
|
||||||
|
$ rm *.jpg
|
||||||
|
|
||||||
|
Le fichier `final.pdf` est prêt.
|
||||||
|
|
||||||
|
### - 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=/prepress inter.ps livre-opti.pdf
|
||||||
|
```
|
||||||
|
|
||||||
|
L'option **dPDFSETTINGS** défini la qualité d'image issue du fichier PDF. Elle peut prendre les valeurs (du moins bon au meilleur résultat) **/screen**, **/default**, **/ebook**, **/printer**, **/prepress**
|
||||||
|
|
||||||
|
### - Recompiler un fichier PDF (gs)
|
||||||
|
Voici une méthode avec les prorgrammes **gs** en ligne de commande. Le programme **gs** s'appelle **GhostScript** qui est un interpreteur de langage PDF et PS.
|
||||||
|
|
||||||
|
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=/ebook -sOutputFile=livre-opti.pdf livre.pdf
|
||||||
|
```
|
||||||
|
|
||||||
|
L'option **dPDFSETTINGS** défini la qualité d'image issue du fichier PDF. Elle peut prendre les valeurs (du moins bon au meilleur résultat) **/screen**, **/default**, **/ebook**, **/printer**, **/prepress**
|
||||||
|
|
||||||
|
### - 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 `deviner` le texte présent. Il s'agit de la méthode OCR. Voici une méthode avec le prorgramme **ocrmypdf** en ligne de commande.
|
||||||
|
|
||||||
|
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'appuie sur le programme **tesseract**. Il faut installer le dictionnaire que l'on souhaite utiliser par la suite :
|
||||||
|
sudo apt install tesseract-ocr-fra
|
||||||
Reference in New Issue
Block a user