Comment fusionner plusieurs fichiers PDF?


Réponses:


209

PDF-Shuffler Installer PDF-Shuffler

Si vous voulez un outil avec une interface graphique simple, essayez pdfshuffler . Il permet la fusion de fichiers PDF ainsi que la réorganisation et la suppression de pages. Pdftk est bien entendu plus puissant pour le traitement par lots et / ou les tâches plus complexes.

Capture d'écran de PDF-Shuffler


J'ai essayé ceci - cela n'a pas fonctionné le 10.04
David Oneill

Le 12.04, pdfshuffler se plaint toujours qu'il y a "trop ​​de valeurs à décompresser", ce qui le rend inutilisable.
Despens

8
Installe et fonctionne comme un charme sur 14.04. Merci beaucoup !!
Zlatty

1
Je peux aussi confirmer que tout va pdfshufflerbien le 14.04 amd64.
conualfy

2
Fonctionne également très bien le 16.04.1
Sanjay Manohar

334

pdftkInstaller pdftk

Pour fusionner deux fichiers pdf file1.pdfet file2.pdf:

pdftk file1.pdf file2.pdf cat output mergedfile.pdf

Plus d'infos disponibles ici Way Back Machine .


5
pdftk is buggy - bugs.launchpad.net/ubuntu/+source/pdftk/+bug/779908 . gs peut - être lent, mais fonctionne parfaitement [réponse Ignite]
Pushpak Dagade

@PushpakDagade ghostscript gâche avec les annotations, en particulier les commentaires qui ont été cochés (case cochée avec une coche), n'aura plus cette coche. Je ne suis pas au courant d'un moyen de contourner cela. De plus, si vous fusionnez PDF v1.5 + 1.6, la sortie sera 1.4 par défaut. C'est un comportement étrange.
Jonathan Komar

2
pdftk a un usage inhabituel dans lequel les commandes catet outputles arguments d'entrée variables sont suivis d'un argument de sortie.
Jeff Puckett

3
Le paquet semble avoir été retiré en 2018.04.
Nicolas Raoul

1
@NicolasRaoul Je viens de le télécharger en une installation instantanée.
Max

161

Ghostscript est un package (disponible par défaut dans Ubuntu) qui vous permet d'afficher ou d'imprimer des fichiers PostScript et PDF dans d'autres formats, ou de convertir ces fichiers dans d'autres formats.
Pour utiliser Ghostscript pour combiner des fichiers PDF, tapez quelque chose comme ce qui suit:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/None -sOutputFile=finished.pdf  file1.pdf file2.pdf

Voici une brève explication de la commande:

gs         starts the Ghostscript program.
-dBATCH    once Ghostscript processes the PDF files, it should exit.
           If you don't include this option, Ghostscript will just keep running.
-dNOPAUSE  forces Ghostscript to process each page without pausing for user interaction.
-q         stops Ghostscript from displaying messages while it works
-sDEVICE=pdfwrite 
           tells Ghostscript to use its built-in PDF writer to process the files.
-sOutputFile=finished.pdf
           tells Ghostscript to save the combined PDF file with the specified name.
-dAutoRotatePages=/None
           Acrobat Distiller parameter AutoRotatePages controls the automatic orientation selection algorithm: For instance: -dAutoRotatePages=/None or /All or /PageByPage.

Vos fichiers d'entrée n'ont même pas besoin d'être des fichiers PDF. Vous pouvez également utiliser des fichiers PostScript ou EPS, ou tout mélange des trois.

Vous pouvez faire beaucoup de choses avec Ghostscript. Vous pouvez lire sa documentation pour plus de détails.

La source


2
C'est vrai, mais c'est incroyablement lent. Je viens d'essayer de concaténer des PDF de 45 x 400 Ko, d'une page. pdftka pris 0m0,484s, a gspris 1m32,898s (c'est près de 200 fois plus lent) Le fichier à partir gsétait environ 21% plus petit.
aidan

2
Cette commande fonctionne également si vous utilisez un caractère générique pour la liste des fichiers à combiner. par exemple, remplacer file1.pdf file2.pdfparfile*.pdf
Antonios Hadjigeorgalis

2
Pour moi, j'ai gstravaillé avec des PDF "non conformes" pdftkqui ne fonctionneraient jamais.
ntc2

1
Utilisez l' -dPDFSETTINGS=/prepressoption d'amélioration de la qualité. Tous nos remerciements au contributeur
Mohnish

6
@AntoniosHadjigeorgalis Juste pour référence et bonne compréhension: ce n'est pas la commande supportant les caractères génériques, c'est le shell qui remplace file*.pdfpar file1.pdf file2.pdfavant de passer les arguments à la commande.
Midgard

82

Vous utilisez également pdfunite pour fusionner des documents pdf:

pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf

12
AVERTISSEMENT: Un fichier existant out.pdfsera écrasé sans avertissement et pdfunite *.pdfne fonctionnera donc pas comme prévu.
krlmlr

1
@krlmlr Vous pouvez toujours mettre la sortie dans un autre répertoire.
BЈовић

Très bien, cpécrase également le dernier argument sans avertissement. Ceci est juste pour les utilisateurs pressés (comme moi) - J'ai eu de la chance d'avoir une sauvegarde du fichier en question ...
krlmlr

1
Vote positif: il s'agit d'un simple outil de ligne de commande sans interface graphique clic-baver comme beaucoup d'autres réponses ici. Il résume bien les complexités de la solution GhostScript (largement équivalente).
tripleee

1
C'est aussi très rapide. Fait le travail bien. Sur un serveur très lent (aws t1.micro), gs prend 9 secondes, pdftk prend 4 secondes et ce pdfunite prend 0,9 seconde pour la fusion de deux fichiers!
rsmoorthy

34

Chaîne PDF Installer la chaîne PDF

PDFChain est une très bonne solution. Son interface graphique est une interface de PDFTK où vous pouvez fusionner, diviser ou même ajouter un peu d’arrière-plan à vos fichiers PDF.


C'est la meilleure réponse. Cela fonctionne parfaitement, quelle que soit la version d'Ubuntu.
Paulo Coghi

Travaillé sur Ubuntu 14.04 sans tracas!
my account_ram

Fonctionne très bien sur Ubuntu 18.04!
Orschiro


@ user2413 c'est un snap store, pas la seule source de logiciels sous Ubuntu. Essayer de chercher aptn'a donné aucun résultat non plus: /
jena


8

Une autre approche consiste à utiliser Latex comme expliqué dans ce message ( sans accès root, en supposant que pdflatex est installé): https://tex.stackexchange.com/questions/8662/merge-two-pdf-files-output-by- latex

Ceci est utile si vous ne possédez pas les outils mentionnés ni les privilèges root, mais vous avez pdflatex.

Je copie le code tex ci-dessous pour fusionner file1.pdfet file2.pdf. Créez un fichier appelé output.texet mettez:

\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-]{file1}
\includepdf[pages=-]{file2}
\end{document}

Et pour compiler, utilisez simplement: pdflatex output.tex

Le fichier fusionné sera nommé comme output.pdf.


6

J'utilise pdfseparate pour extraire des pages spécifiques d'un gros fichier pdf:

pdfseparate -f  156 -l 157 input.pdf  output_%d.pdf 
pdfseparate -f  1   -l 2   input.pdf  output_%d.pdf 

et ensuite je les rejoint tous via la commande:

pdfunite $(ls -v output_*.pdf | tr '\n' ' ') out$(date  +%Y-%m-%d_%H_%M_%S ).pdf

Cela rejoint:

output_1.pdf output_2.pdf output_156.pdf output_157.pdf  

dans:

out2014-12-14_23_25_36.pdf

Peut-être y a-t-il un moyen plus facile de faire face ... :-)


La substitution de processus est superflue et même potentiellement nuisible . Une ligne de commande correcte et beaucoup plus simple est, pdfunite output_*.pdf out$(date +%Y-%m-%d-%H_%M_%S).pdfmais il lui manque l'ordre ls -v. Une solution évidente et triviale consiste à nommer vos fichiers de manière à ce qu'ils soient triés naturellement dans l'ordre dans lequel vous souhaitez les inclure. Si vous le souhaitez absolument ls -v, vous pouvez au moins perdre le tuyau tr, ce qui n’apporte rien ici.
tripleee




1

Voici mon approche:

  • Je voulais qu'il soit facilement accessible. J'ai donc créé un raccourci avec le bouton droit de la souris dans Nautilus (voir https://help.ubuntu.com/community/NautilusScriptsHowto ).
  • Je voulais que ce soit très rapide alors j'ai utilisé pdfunite
  • pdfunite n'accepte que les chemins de fichiers au milieu de la commande, j'ai donc dû me gratter la tête pour gérer les espaces dans les chemins de fichiers. J'ai donc supposé que tous les chemins de fichiers commenceraient par "/ home /" et se termineraient par ".pdf"

Voici le résultat:

#!/bin/sh
CLEANED_FILE_PATHS=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed 's,.pdf /home/,.pdf\\n/home/,g')
echo $CLEANED_FILE_PATHS | bash -c 'IFS=$'"'"'\n'"'"' read -d "" -ra x;pdfunite "${x[@]}" merged.pdf'

Juste coller ce script dans

/home/votre_nom_utilisateur/.local/share/nautilus/scripts

et nommez-le "merge_pdfs.sh" (par exemple). Ensuite, rendez-le exécutable (cliquez avec le bouton droit sur merge_pdfs.sh -> onglet Autorisations -> cochez la case "Autoriser l'exécution du fichier en tant que programme"

Alors maintenant, pour fusionner des fichiers pdf, il vous suffit de les sélectionner -> clic droit -> scripts -> merge_pdfs.sh et cela créera un fichier "merged.pdf" dans le même répertoire

J'espère que ça aide!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.