Fusionner / convertir plusieurs fichiers PDF en un seul PDF

Comment pourrais-je fusionner / convertir plusieurs fichiers PDF en un seul grand fichier PDF?

j'ai essayé le suivant, mais le contenu du fichier cible n'était pas comme prévu:

convert file1.pdf file2.pdf merged.pdf

j'ai besoin d'une solution de ligne de commande (CLI) très simple/basique. Le mieux serait que je puisse Piper la sortie de la fusion / convertir directement en pdf2ps ( comme essayé à l'origine dans ma question précédemment posée ici: tuyauterie Linux (convertir - > pdf2ps - > lp) ).

791
demandé sur Community 2010-03-24 15:56:47

16 réponses

considérant que pdfunite fait partie de poppler il a une plus grande chance d'être installé, l'utilisation est aussi plus simple que pdftk :

pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf
1052
répondu Hubert Kario 2012-07-01 07:11:53

Essayez le bon ghostscript:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf mine1.pdf mine2.pdf

ou même de cette façon pour une version améliorée pour les PDFs à basse résolution (merci à Adriano de le souligner):

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf

dans les deux cas la résolution de l'ouput est beaucoup plus élevée et meilleure que cette façon en utilisant convert:

convert -density 300x300 -quality 100 mine1.pdf mine2.pdf merged.pdf

de cette façon, vous n'auriez pas besoin d'installer quoi que ce soit d'autre, il suffit de travailler avec ce que vous avez déjà installé dans votre système (au moins les deux venir par défaut dans mon rhel).

Espère que cette aide,

mise à JOUR: tout d'abord merci pour tous vos gentils commentaires!! juste un conseil qui peut fonctionner pour vous les gars, après googling, j'ai trouvé un superbe truc pour rétrécir la taille des PDFs, j'ai réduit avec elle un PDF de 300 Mo à juste 15 Mo avec une résolution acceptable! et tout cela avec le bon ghostscript, voici:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf

santé!!

421
répondu Gery 2016-06-04 13:50:04

je suis désolé, j'ai réussi à trouver la réponse moi-même en utilisant google et un peu de chance:)

pour les intéressés;

j'ai installé le pdftk (PDF toolkit) sur notre serveur debian, et en utilisant la commande suivante j'ai obtenu le résultat désiré:

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

ou

gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf file1.pdf file2.pdf file3.pdf ...

cela à son tour peut être pipé directement dans pdf2ps.

404
répondu alcohol 2018-05-16 07:51:20

aussi pdfjoin a.pdf b.pdf va créer un nouveau b-joined.pdf avec le contenu d'un.pdf et B. pdf

39
répondu rodrigob 2013-04-18 17:24:32

vous pouvez utiliser la commande convert directement,

p.ex.

convert sub1.pdf sub2.pdf sub3.pdf merged.pdf
33
répondu Noor 2014-05-17 11:33:39

Apache PDFBox http://pdfbox.apache.org/

PDFMerger Cette application prendra une liste de documents pdf et les fusionner, enregistrant le résultat dans un nouveau document.

utilisation: java-jar pdfbox-app-x.y.z.jar PDFMerger " Source fichiers PDF (2 ..n)" Cible "fichier PDF"

11
répondu lumpchen 2015-11-20 05:52:33

utilisez les outils PDF de python https://pypi.python.org/pypi/pdftools/1.0.6

télécharger le tar.GZ le fichier et décompresser et exécuter la commande comme ci-dessous

python pdftools-1.1.0/pdfmerge.py -o output.pdf -d file1.pdf file2.pdf file3 

vous devez installer pyhton3 avant d'exécuter la commande ci-dessus

ces outils supportent le ci-dessous

  • ajouter
  • insérer
  • Supprimer
  • rotation
  • Split
  • Fusion
  • Zip

vous pouvez trouver plus de détails dans le lien ci-dessous et il est open source

https://github.com/MrLeeh/pdftools

9
répondu Ravikiran Reddy Kotapati 2017-07-06 10:34:56

si vous voulez convertir toutes les images téléchargées en un pdf puis exécuter

convert img{0..19}.jpg slides.pdf

8
répondu Trupti Kini 2014-01-13 12:00:19

vous pouvez utiliser sejda-console , source libre et ouverte. Décompresser et exécuter sejda-console merge -f file1.pdf file2.pdf -o merged.pdf

il préserve signets, annotations de lien, acroformes, etc.. il a effectivement beaucoup d'options que vous pouvez jouer avec, il suffit d'exécuter sejda-console merge -h pour les voir toutes.

7
répondu Andrea Vacondio 2017-02-02 18:44:13

je soutiens la recommandation pdfunite . J'ai cependant eu des erreurs Argument list too long alors que je tentais de fusionner des fichiers PDF > 2K.

je me suis tourné vers Python pour ceci et deux paquets externes: PyPDF2 (pour gérer tout ce qui est lié au PDF) et natsort (pour faire une sorte" naturelle " des noms de fichiers du répertoire). Dans le cas où cela peut aider quelqu'un:

from PyPDF2 import PdfFileMerger
import natsort
import os

DIR = "dir-with-pdfs/"
OUTPUT = "output.pdf"

file_list = filter(lambda f: f.endswith('.pdf'), os.listdir(DIR))
file_list = natsort.natsorted(file_list)

# 'strict' used because of
# https://github.com/mstamy2/PyPDF2/issues/244#issuecomment-206952235
merger = PdfFileMerger(strict=False)

for f_name in file_list:
  f = open(os.path.join(DIR, f_name), "rb")
  merger.append(f)

output = open(OUTPUT, "wb")
merger.write(output)
5
répondu Greg Sadetsky 2017-06-13 18:03:00

Voici une méthode que j'utilise qui fonctionne et est facile à mettre en œuvre. Cela nécessitera à la fois les fpdf et fpdi bibliothèques qui peuvent être téléchargées ici:

require('fpdf.php');
require('fpdi.php');

$files = ['doc1.pdf', 'doc2.pdf', 'doc3.pdf'];

$pdf = new FPDI();

foreach ($files as $file) {
    $pdf->setSourceFile($file);
    $tpl = $pdf->importPage(1, '/MediaBox');
    $pdf->addPage();
    $pdf->useTemplate($tpl);
}

$pdf->Output('F','merged.pdf');
4
répondu billynoah 2017-11-27 16:03:48

je suis partial étant l'un des développeurs de PyMuPDF (une liaison Python de MuPDF).

, Vous pouvez facilement faire ce que vous voulez avec (et beaucoup plus). Le code squelette fonctionne comme ceci:

#-------------------------------------------------
import fitz         # the binding PyMuPDF
fout = fitz.open()  # new PDF for joined output
flist = ["1.pdf", "2.pdf", ...]  # list of filenames to be joined

for f in flist:
    fin = fitz.open(f)  # open an input file
    fout.insertPDF(fin) # append f
    fin.close()

fout.save("joined.pdf")
#-------------------------------------------------

c'est à peu près tout. Plusieurs options sont disponibles pour sélectionner seulement les plages de pages, maintenir une table des matières commune, inverser la séquence de page ou changer la rotation de page, etc., etc.

nous sommes sur PyPi.

4
répondu Jorj McKie 2018-01-15 21:22:54

j'aime L'idée de Chasmo, mais je préfère utiliser les avantages de choses comme

convert $(ls *.pdf) ../merged.pdf

donner plusieurs fichiers source à convert conduit à les fusionner dans un pdf commun. Cette commande fusionne tous les fichiers avec l'extension .pdf dans le répertoire actuel en merged.pdf dans le répertoire parent.

3
répondu user3709983 2015-05-16 08:34:05

pdfunite peut fusionner des fichiers PDF entiers. Si vous voulez, par exemple, les pages 2-7 de file1.pdf et pages 1,3,4 de file2.pdf, vous devez utiliser pdfseparate pour diviser les fichiers en PDF séparés pour chaque page à donner à pdfunite .

à ce point vous voulez probablement un programme avec plus d'options. qpdf est le meilleur utilitaire que j'ai trouvé pour manipuler les fichiers PDF. pdftk est plus grand et plus lent et Red Hat / Fedora ne l'emballent pas à cause de son dépendance à l'égard du gcj. D'autres utilitaires PDF ont des dépendances Mono ou Python. J'ai trouvé qpdf produit un fichier de sortie beaucoup plus petit que l'utilisation pdfseparate et pdfunite pour assembler des pages dans une sortie de 30 pages PDF, 970ko vs. 1,6450 kB. Parce qu'il offre beaucoup plus d'options ,la ligne de commande de qpdf n'est pas aussi simple; la requête originale pour fusionner file1 et file2 peut être exécutée avec

qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf
2
répondu skierpage 2018-06-28 10:46:14

les autres réponses sont bonnes, mais si vous ne pouvez pas fusionner les PDF localement, que vous soyez dans un environnement d'hébergement partagé, ou pour d'autres raisons, ils ne vous aideront pas.

si vous recherchez une API pour fusionner des fichiers PDF à distance, vous pouvez essayer api2pdf qui a un paramètre pour fusionner des fichiers PDF. La Documentation est ici .

0
répondu apexdodge 2018-07-22 13:55:57

après avoir cherché dans plusieurs des bibliothèques pdf disponibles, la seule chose qui a fonctionné parfaitement pour moi est

https://libraries.io/npm/easy-pdf-merge

il faut que Java 6 ou plus soit installé mais fonctionne parfaitement. Pdftk est plein d'insectes.

var merge = require('easy-pdf-merge');

merge(source_files,dest_file_path,function(err){

        if(err)
        return console.log(err);

        console.log('Success');

});

Note : ce n'est pas cmd mais vous pouvez le faire tourner avec des commandes comme accepter les noms de fichiers comme arguments en ligne de commande.

0
répondu Krishnadas PC 2018-09-20 13:15:33