Come unire più file PDF?


Risposte:


209

PDF-Shuffler Installa PDF-Shuffler

Se vuoi uno strumento con una semplice GUI, prova pdfshuffler . Consente l'unione di PDF, nonché la riorganizzazione e l'eliminazione di pagine. Per l'elaborazione batch e / o attività più complesse, pdftk è ovviamente più potente.

Schermata di PDF-Shuffler


Ci ho provato - non funzionava il 10.04
David Oneill il

Il 12.04 pdfshuffler si lamenta sempre che ci sono "troppi valori da decomprimere", rendendolo inutilizzabile.
Despens

8
Installa e funziona come un incantesimo il 14.04. Grazie mille!!
Zlatty,

1
Posso anche confermare che pdfshufflerfunziona bene il 14.04 amd64.
Conualfy il

2
Funziona benissimo anche il 16.04.1
Sanjay Manohar

334

pdftkInstalla pdftk

Per unire due file pdf file1.pdfe file2.pdf:

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

Maggiori informazioni disponibili qui Way Back Machine .


5
pdftk è difettoso - bugs.launchpad.net/ubuntu/+source/pdftk/+bug/779908 . gs potrebbe essere lento, ma funziona perfettamente [risposta di IgnitE]
Pushpak Dagade,

@PushpakDagade ghostscript confonde con le annotazioni, in particolare i commenti che sono stati spuntati (casella spuntata con segno di spunta), non avranno più questo segno di spunta. Non sono a conoscenza di un modo per aggirare questo. Inoltre, se unisci PDF v1.5 + 1.6, l'output sarà 1.4 per impostazione predefinita. Questo è un comportamento strano.
Jonathan Komar,

2
pdftk ha un uso insolito in cui i comandi cate outputseguono argomenti di input variadici e di nuovo seguito da un argomento di output.
Jeff Puckett,

3
Il pacchetto sembra essere stato rimosso nel 2018.04.
Nicolas Raoul,

1
@NicolasRaoul L'ho appena scaricato come installazione rapida.
Max

161

Ghostscript è un pacchetto (disponibile per impostazione predefinita in Ubuntu) che consente di visualizzare o stampare file PostScript e PDF in altri formati o di convertirli in altri formati.
Per utilizzare Ghostscript per combinare file PDF, digitare qualcosa di simile al seguente:

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

Ecco una breve spiegazione del comando:

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.

I tuoi file di input non devono nemmeno essere file PDF. Puoi anche usare file PostScript o EPS o qualsiasi combinazione dei tre.

C'è molto che puoi fare con Ghostscript. Puoi leggere la sua documentazione per maggiori dettagli.

fonte


2
Vero, ma è incredibilmente lento. Ho appena provato a concatenare PDF a pagina singola da 45 x 400 KB. pdftkpreso 0m0.484s, gspreso 1m32.898s (che è quasi 200x più lento) Il file da gsera però circa il 21% più piccolo.
Aidan il

2
questo comando funziona anche se si utilizza un carattere jolly per l'elenco dei file da combinare. ad esempio, sostituire file1.pdf file2.pdfconfile*.pdf
Antonios Hadjigeorgalis

2
Per me ho gslavorato con alcuni PDF "non conformi" dove pdftksarebbero andati avanti per sempre.
ntc2,

1
Utilizzare l' -dPDFSETTINGS=/prepressopzione dal miglioramento della qualità. Tutti grazie per il contributo
Mohnish,

6
@AntoniosHadjigeorgalis Solo per riferimento e buona comprensione: questo non è il comando di supporto jolly, che in realtà il guscio sostituzione file*.pdfcon file1.pdf file2.pdfprima di passare gli argomenti al comando.
Midgard,

82

È inoltre possibile utilizzare pdfunite per unire i documenti pdf:

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

12
ATTENZIONE: un file esistente out.pdfverrà sovrascritto senza preavviso, quindi pdfunite *.pdfnon funzionerà come previsto.
krlmlr,

1
@krlmlr È sempre possibile inserire l'output in un'altra directory.
BЈовић,

Abbastanza giusto, cpsovrascrive anche l'ultimo argomento senza preavviso. Questo è solo per gli utenti affrettati (come me) - Sono stato fortunato ad avere un backup del file in questione ...
krlmlr

1
Upvote: questo è un semplice strumento da riga di comando senza una GUI click-and-drool come molte delle altre risposte qui. Incapsula piacevolmente le complessità della soluzione (in gran parte equivalente) di GhostScript.
tripleee

1
Anche questo è molto veloce. Fa bene il lavoro. Su un server molto lento (aws t1.micro), gs richiede 9 secondi, pdftk richiede 4 secondi e questa pdfunite impiega 0,9 secondi per unire due file!
rsmoorthy,

34

Catena PDF Installa la catena PDF

Una soluzione molto bella è PDFChain. La sua GUI è un frontend di PDFTK dove puoi unire, dividere o persino aggiungere un po 'di sfondo ai tuoi file PDF.


Questa è la risposta migliore Funziona perfettamente, indipendentemente dalla versione di Ubuntu.
Paulo Coghi,

Ha funzionato su Ubuntu 14.04 senza problemi!
mio account_ram

Funziona alla grande su Ubuntu 18.04!
Orschiro,


@ user2413 questo è uno snap store, non l'unica fonte di software in Ubuntu. Tentare di cercare aptnon ha dato alcun risultato, comunque: /
jena


8

Un approccio alternativo è usare Latex come spiegato in questo post ( senza accesso root supponendo che tu abbia installato pdflatex ): https://tex.stackexchange.com/questions/8662/merge-two-pdf-files-output-by- latice

Ciò è utile nel caso in cui non si disponga degli strumenti menzionati né dei privilegi di root, ma si disponga di pdflatex.

Copio il codice tex qui sotto per unire file1.pdfe file2.pdf. Crea un file chiamato output.texe inserisci:

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

E per compilare, basta usare: pdflatex output.tex

Il file unito verrà denominato come output.pdf.


6

Uso pdfseparate per estrarre pagine specifiche da un grande file pdf:

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

e successivamente mi unisco a tutti tramite comando:

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

Questo unisce:

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

dentro, come moto a luogo, andare da dentro a fuori: I put my hand inTO my pocket = metto la mano in tasca:

out2014-12-14_23_25_36.pdf

Potrebbe esserci un modo più semplice per far fronte ... :-)


La sostituzione del processo è superflua e potenzialmente persino dannosa . Una riga di comando corretta e molto più semplice è pdfunite output_*.pdf out$(date +%Y-%m-%d-%H_%M_%S).pdfma manca l'ordinamento di ls -v. Una soluzione ovvia e banale è quella di nominare i tuoi file in modo che ordinino naturalmente nell'ordine in cui li vuoi includere. Se vuoi assolutamente ls -v, puoi almeno perdere la pipa tr, il che non fa nulla qui.
Tripleee




1

Ecco il mio approccio:

  • Volevo che fosse facilmente accessibile, quindi ho creato un collegamento con il tasto destro in Nautilus (vedi https://help.ubuntu.com/community/NautilusScriptsHowto )
  • Volevo che fosse molto veloce, quindi ho usato pdfunite
  • pdfunite accetta solo i percorsi dei file nel mezzo del comando, quindi ho dovuto grattarmi la testa per gestire gli spazi nei percorsi dei file. Quindi ho assunto il presupposto che tutti i percorsi dei file inizieranno con "/ home /" e finiranno con ".pdf"

Ecco il risultato:

#!/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 incolla questo script in

/home/your_username/.local/share/nautilus/scripts

e chiamalo "merge_pdfs.sh" (ad esempio). Quindi rendilo eseguibile (fai clic con il tasto destro su merge_pdfs.sh -> scheda Autorizzazioni -> spunta "Consenti l'esecuzione del file come programma"

Quindi ora per unire i file pdf, devi solo selezionarli -> tasto destro -> script -> merge_pdfs.sh e creerà un file "merged.pdf" nella stessa directory

Spero che sia d'aiuto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.