여러 PDF 파일을 병합하는 방법?


답변:


209

PDF- 셔플 PDF-Shuffler 설치

간단한 GUI가있는 도구를 원한다면 pdfshuffler을 사용해보십시오 . PDF를 병합하고 페이지를 재정렬하고 삭제할 수 있습니다. 일괄 처리 및 / 또는보다 복잡한 작업의 경우 pdftk가 더 강력합니다.

PDF-Shuffler의 스크린 샷


나는 이것을 시도했다-그것은 10.04에서 작동하지 않았다
David Oneill

12.04에서 pdfshuffler는 "포장 할 값이 너무 많다"고 항상 사용할 수 없다고 불평합니다.
despens

8
14.04의 매력처럼 설치하고 작동합니다. 무리 감사!!
Zlatty

1
pdfshuffler14.04 amd64 에서도 제대로 작동 하는지 확인할 수 있습니다 .
conualfy

2
또한 16.04.1에서 잘 작동합니다
Sanjay Manohar

334

pdftkpdftk 설치

이 개 PDF 파일을 병합하는 방법 file1.pdffile2.pdf:

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

자세한 정보는 여기 Way Way Machine 입니다.


5
pdftk는 버그가 - bugs.launchpad.net/ubuntu/+source/pdftk/+bug/779908 . gs는 느릴 지 모르지만 완벽하게 작동 함 [IgnitE의 답변]
Pushpak Dagade

@PushpakDagade 고스트 스크립트는 주석, 특히 확인 된 주석 (확인 표시가있는 확인란)을 주석으로 엉망으로 만들면 더 이상이 확인 표시가 없습니다. 나는이 문제를 해결할 방법을 모른다. 또한 PDF v1.5 + 1.6을 병합하면 기본적으로 출력은 1.4가됩니다. 이상한 행동이다.
Jonathan Komar

2
pdftk는 명령 catoutput변수가 다양한 입력 인수를 따르고 출력 인수가 다시 나오는 특이한 사용법을 가지고 있습니다.
Jeff Puckett

3
패키지는 2018.04에서 제거 된 것으로 보입니다.
Nicolas Raoul

1
@NicolasRaoul 방금 스냅 설치로 다운로드했습니다.
최대

161

Ghostscript 는 PostScript 및 PDF 파일을 다른 형식으로 보거나 인쇄하거나 해당 파일을 다른 형식으로 변환 할 수있는 패키지 (기본적으로 Ubuntu에서 사용 가능)입니다.
Ghostscript를 사용하여 PDF 파일을 결합하려면 다음과 같이 입력하십시오.

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

다음은 명령에 대한 간략한 설명입니다.

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.

입력 파일은 PDF 파일 일 필요도 없습니다. PostScript 또는 EPS 파일 또는이 파일을 혼합하여 사용할 수도 있습니다.

Ghostscript로 할 수있는 일은 많이 있습니다. 자세한 내용 은 해당 설명서 를 참조하십시오.

출처


2
사실이지만 엄청나게 느립니다. 방금 45 x 400K, 단일 페이지 PDF를 연결하려고했습니다. pdftk0m0.484s, gs1m32.898s (거의 200 배 느림)가 걸렸습니다. 파일의 gs크기는 약 21 % 작았습니다.
aidan

2
이 명령은 결합 할 파일 목록에 와일드 카드를 사용하는 경우에도 작동합니다. 예를 들어, 교체 file1.pdf file2.pdffile*.pdf
안토니오스 Hadjigeorgalis

2
나를 gs위해 pdftk영원히 실행 되는 일부 "비준수"PDF로 작업했습니다 .
ntc2

1
-dPDFSETTINGS=/prepress품질 향상 옵션을 사용하십시오 . 원래 기여자
Mohnish

6
@AntoniosHadjigeorgalis 그냥 참조 좋은 이해 : 그 와일드 카드를 지원하는 명령이 아니다, 그것은 실제로 대체 쉘 file*.pdffile1.pdf file2.pdf명령에 인수를 전달하기 전에.
Midgard

82

또한 pdfunite를 사용하여 pdf 문서를 병합합니다.

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

12
경고 : 기존 파일 out.pdf을 경고없이 덮어 쓰므 pdfunite *.pdf로 예상대로 작동하지 않습니다.
krlmlr

1
@krlmlr 항상 다른 디렉토리에 출력을 넣을 수 있습니다.
BЈовић

충분히 공정하고 cp경고없이 마지막 인수를 덮어 씁니다. 이것은 (나 같은) 사용자를 서두르 기위한 것입니다. 문제가되는 파일의 백업을받은 것이 운이 좋았습니다 ...
krlmlr

1
공감 : 이것은 다른 많은 답변과 마찬가지로 클릭 앤 드롤 GUI가없는 간단한 명령 줄 도구입니다. (거의 동등한) GhostScript 솔루션의 복잡성을 멋지게 캡슐화합니다.
tripleee

1
이것은 또한 매우 빠릅니다. 일을 잘한다. 매우 느린 서버 (aws t1.micro)에서 gs는 9 초, pdftk는 4 초,이 pdfunite는 두 파일을 병합하는 데 0.9 초가 걸립니다!
rsmoorthy

34

PDF 체인 PDF 체인 설치

아주 좋은 해결책은 PDFChain입니다. GUI는 PDFTK의 프론트 엔드로서 PDF 파일에 배경을 병합, 분할 또는 추가 할 수 있습니다.


이것이 가장 좋은 대답입니다. 우분투 버전에 관계없이 완벽하게 작동합니다.
Paulo Coghi 17

번거 로움없이 우분투 14.04에서 작업했습니다!
내 account_ram

우분투 18.04에서 잘 작동합니다!
orschiro


@ user2413은 우분투 소프트웨어의 유일한 소스가 아닌 스냅 스토어입니다. 검색을 시도해 apt도 결과가 나오지 않았습니다 : /
jena


8

다른 방법은이 게시물에 설명 된대로 Latex를 사용 하는 것입니다 ( pdflatex가 설치되어 있다고 가정하면 루트 액세스 권한 없음 ) : https://tex.stackexchange.com/questions/8662/merge-two-pdf-files-output-by- 유액

언급 한 도구 나 루트 권한이 없지만 pdflatex가있는 경우에 유용합니다.

나는 병합 아래의 TEX 코드를 복사 file1.pdf하고 file2.pdf. 라는 파일을 작성 output.tex하고 다음을 입력하십시오.

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

그리고 컴파일하려면 다음을 사용하십시오. pdflatex output.tex

병합 된 파일의 이름은 output.pdf입니다.


6

큰 pdf 파일에서 특정 페이지를 추출하기 위해 pdfseparate를 사용합니다.

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

그리고 aftewards 나는 명령을 통해 그들 모두와 합류합니다.

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

이 조인 :

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

으로:

out2014-12-14_23_25_36.pdf

대처하는 쉬운 방법이있을 수 있습니다 ... :-)


공정 대체는 불필요하고 잠재적으로 해롭다 . 훨씬 더 간단한 명령 행은 정확 pdfunite output_*.pdf out$(date +%Y-%m-%d-%H_%M_%S).pdf하지만의 순서가 없습니다 ls -v. 명백하고 사소한 수정은 파일을 포함시키려는 순서대로 자연스럽게 정렬되도록 파일 이름을 지정하는 것입니다. 당신이 절대적으로 원한다면 ls -v, 당신은 적어도 파이프를 잃을 수 tr있습니다.
tripleee




1

내 접근 방식은 다음과 같습니다.

  • 나는 쉽게 액세스 할 수 있기를 원했기 때문에 노틸러스에서 마우스 오른쪽 버튼 클릭 단축키를 만들었습니다 ( https://help.ubuntu.com/community/NautilusScriptsHowto 참조 )
  • pdfunite를 사용하여 매우 빠르기를 원했습니다.
  • pdfunite는 명령 중간에 파일 경로 만 허용하므로 파일 경로의 공간을 관리하기 위해 머리를 긁어 야했습니다. 모든 파일 경로가 "/ home /"로 시작하고 ".pdf"로 끝날 것이라는 가정을했습니다.

결과는 다음과 같습니다.

#!/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'

이 스크립트를 붙여 넣기 만하면됩니다

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

이름을 "merge_pdfs.sh"로 지정하십시오 (예 :). 그런 다음 실행 가능하게 만드십시오 (merge_pdfs.sh를 마우스 오른쪽 버튼으로 클릭-> 권한 탭-> "파일을 프로그램으로 실행 허용"

이제 pdf 파일을 병합하려면 파일을 선택하고 마우스 오른쪽 버튼을 클릭하고 스크립트-> merge_pdfs.sh를 선택하면 동일한 디렉토리에 "merged.pdf"파일이 생성됩니다.

그것이 도움이되기를 바랍니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.