Birkaç PDF dosyası nasıl birleştirilir?


Yanıtlar:


209

PDF-sürüyen PDF-Shuffler'ı yükleyin

Basit bir GUI'ye sahip bir araç istiyorsanız, pdfshuffler'ı deneyin . Sayfaların yeniden düzenlenmesi ve silinmesinin yanı sıra PDF'lerin birleştirilmesine de izin verir. Toplu işlem ve / veya daha karmaşık işler için, pdftk elbette daha güçlüdür.

PDF-Shuffler'ın ekran görüntüsü


Bunu denedim - işe yaramadı 10.04
David Oneill

12.04'te, pdfshuffler her zaman "açmak için çok fazla değer" olduğundan şikayet eder ve kullanılamaz hale getirir.
despens

8
14.04 tarihinde bir cazibe gibi yükler ve çalışır. Çok teşekkürler!!
Zlatty

1
Ayrıca pdfshuffler14.04 amd64’de iyi işler olduğunu doğrulayabilirim .
14'te

2
Ayrıca 16.04.1 güzel çalışıyor
Sanjay Manohar

334

pdftkPdftk yükleyin

İki pdf dosyasını birleştirmek için file1.pdfve file2.pdf:

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

Daha fazla bilgi burada bulunabilir Way Back Machine .


5
pdftk buggy - bugs.launchpad.net/ubuntu/+source/pdftk/+bug/779908 . gs yavaş olabilir, ama [tutuşması cevabı] mükemmel işliyor olabilir
Pushpak Dagade

@PushpakDagade ghostscript ek açıklamalarla karıştırılır, özellikle işaretlenmiş yorumlar (onay işaretli onay kutusu), artık bu onay işaretine sahip olmayacak. Bunun etrafındaki bir yolun farkında değilim. Ayrıca, PDF v1.5 + 1.6'yı birleştirirseniz, çıktı varsayılan olarak 1.4 olur. Bu garip bir davranış.
Jonathan Komar

2
pdftk komutları catve outputdeğişken değişken giriş bağımsız değişkenlerini izleyen ve tekrar bir çıkış bağımsız değişkeni izleyen sıra dışı bir kullanıma sahiptir .
Jeff Puckett

3
Paket 2018.04'te kaldırılmış görünüyor.
Nicolas Raoul

1
@NicolasRaoul Sadece bir çırpıda yükleme olarak indirdim.
Max,

161

Ghostscript , PostScript ve PDF dosyalarını diğer biçimlerde görüntülemenizi veya yazdırmanızı veya bu dosyaları diğer biçimlere dönüştürmenizi sağlayan bir pakettir (varsayılan olarak Ubuntu'da bulunur).
Ghostscript'i PDF dosyalarını birleştirmek için kullanmak için aşağıdakine benzer bir şey yazın:

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

İşte komutun kısa bir açıklaması:

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.

Giriş dosyalarınızın PDF dosyaları olması gerekmez. Ayrıca PostScript veya EPS dosyalarını veya üçünün herhangi bir karışımını kullanabilirsiniz.

Ghostscript ile yapabileceğiniz çok şey var. Daha fazla ayrıntı için belgelerini okuyabilirsiniz .

Kaynak


2
Doğru, ama inanılmaz derecede yavaş. Sadece 45 x 400 K, tek sayfalık PDF'leri birleştirmeyi denedim. pdftk0m0.484s aldı, 1m32.898s gsaldı (bu neredeyse 200x daha yavaş oldu) gs.
aidan

2
Bu komut, birleştirilecek dosyaların listesi için bir joker karakter kullanıyorsanız da çalışır. örneğin, yerine file1.pdf file2.pdfilefile*.pdf
Antonios Hadjigeorgalis

2
Benim için sonsuza dek sürecek gsolan bazı "uygun olmayan" PDF'lerle çalıştı pdftk.
ntc2

1
-dPDFSETTINGS=/prepressKalite iyileştirmeden gelen seçeneği kullanın . Özgün katılımcısı
Mohnish

6
@AntoniosHadjigeorgalis Sadece referans ve iyi anlaşılması için: o joker destekleyen komut değil, aslında yerini kabuk var file*.pdfolan file1.pdf file2.pdfkomuta argümanlar geçirmeden önce.
Midgard

82

Ayrıca pdf belgelerini birleştirmek için pdfunite kullanın:

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

12
UYARI: Mevcut bir dosyanın out.pdfüzerine uyarı yapılmadan yazılacak, pdfunite *.pdfbeklendiği gibi çalışmayacaktır.
krlmlr

1
@ krlmlr Çıkışı her zaman başka bir dizine koyabilirsiniz.
BЈовић

Yeterince adil, cpayrıca son argümanını uyarmadan yazar. Bu sadece acele kullanıcılar için (kendim gibi) - Şanslıydım, söz konusu dosyanın yedeğini aldım ...
krlmlr

1
Olumlu oylama: Bu, diğer cevapların çoğunda olduğu gibi, tıkla ve sürükle GUI içermeyen basit bir komut satırı aracıdır. (Büyük ölçüde eşdeğer) GhostScript çözümünün karmaşıklığını güzel bir şekilde kapsüller.
üçlü,

1
Bu da çok hızlı. İşi iyi yapıyor. Çok yavaş bir sunucuda (aws t1.micro), gs 9 saniye sürüyor, pdftk 4 saniye alıyor ve bu pdfunite iki dosyayı birleştirmek için 0.9 saniye sürüyor!
rsmoorthy

34

PDF Zinciri PDF Zinciri Yükle

Çok güzel bir çözüm PDFChain. GUI, birleştirme, bölme ve hatta PDF dosyalarınıza arka plan ekleyebileceğiniz bir PDFTK ön yüzüdür.


Bu en iyi cevap. Ubuntu sürümünden bağımsız olarak mükemmel çalışır.
Paulo Coghi

Ubuntu 14.04 üzerinde uğraşmadan çalıştı!
hesabım_ram

Ubuntu 18.04'te harika çalışıyor!
orschiro


@ user2413 burası mağaza, Ubuntu'daki yazılım için tek kaynak değil. Aramaya çalışmak aptda sonuç vermedi: /
jena


8

Alternatif bir yaklaşım, Lateks'i bu yazıda açıklandığı şekilde kullanmaktır ( pdflatex'in yüklü olduğunu varsayarak kök erişimi olmadan ): https://tex.stackexchange.com/questions/8662/merge-two-pdf-files-output-by- lateks

Söz konusu araçlara veya kök ayrıcalıklarına sahip değilseniz, ancak pdflatex'iniz varsa, bu kullanışlıdır.

Birleştirmek için aşağıdaki tex kodunu kopyalarım file1.pdfve file2.pdf. Adlı bir dosya oluşturun output.texve koyun:

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

Ve derlemek için basitçe kullanın: pdflatex output.tex

Birleştirilen dosya olarak adlandırılır output.pdf.


6

Büyük pdf dosyasından belirli sayfaları çıkartmak için pdfseparate kullanıyorum:

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

ve ödüllere hepsine buyrukla katılıyorum:

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

Bu katılır:

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

içine:

out2014-12-14_23_25_36.pdf

Başa çıkmanın daha kolay bir yolu olabilir ... :-)


İşlem ikamesi gereksiz ve potansiyel olarak zararlıdır . Bir doğru çok daha basit bir komut satırı pdfunite output_*.pdf out$(date +%Y-%m-%d-%H_%M_%S).pdfancak sıralaması yoksundur ls -v. Belirgin ve önemsiz bir düzeltme, dosyalarınızı doğal olarak eklemek istediğiniz sıraya göre sıralayacak şekilde adlandırmaktır. Kesinlikle istiyorsan ls -v, en azından borusunu kaybedebilirsin tr, ki burada hiçbir şey yapmıyor.
üçlü,




1

İşte benim yaklaşımım:

  • Kolayca erişilebilir olmasını istedim, bu yüzden Nautilus'ta sağ tıklatma kısayolu oluşturdum (bkz. Https://help.ubuntu.com/community/NautilusScriptsHowto )
  • Çok hızlı olmasını istedim, pdfunite kullandım
  • pdfunite yalnızca komutun ortasındaki filepat'ları kabul ettiğinden, filepatlardaki boşlukları yönetmek için kafamı çizmem gerekti. Bu yüzden tüm filepatların "/ home /" ile başlayıp ".pdf" ile biteceklerini varsaydım.

İşte sonuç:

#!/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 bu betiği buraya yapıştır

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

ve "merge_pdfs.sh" olarak adlandırın (örneğin). Ardından çalıştırılabilir duruma getirin (merge_pdfs.sh -> İzinler sekmesine sağ tıklayın -> "Bir program olarak dosyayı çalıştırmaya izin ver" seçeneğini işaretleyin.

Yani şimdi pdf dosyalarını birleştirmek için, sadece onları seçmek zorundasınız -> sağ tıklayın -> scriptler -> merge_pdfs.sh ve aynı dizinde bir "merged.pdf" dosyası yaratacak

Umarım yardımcı olur!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.