명령 줄을 사용하여 여러 PDF를 결합하려면 어떻게해야합니까?


50

여러 개의 PDF를 하나로 묶을 수있는 빠른 단일 라이너가 있습니까?

Preview.app를 사용하여 수행 할 수 있다는 것을 알고 있습니다.

답변:


72

명령 행 에서 OS X의 PDF 파일 결합 에서 "OSX의 명령 행에서 PDF 파일 결합 "을보십시오 .

Tiger부터 OSX는 필요한 것을 정확하게 수행하는 Python 스크립트와 함께 제공됩니다. 스크립트는 이미 실행 가능하고 Python은 OS X에 사전 설치되어 있으므로 터미널을 열고 입력하기 만하면됩니다.

"/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py" -o PATH/TO/YOUR/MERGED/FILE.pdf /PATH/TO/ORIGINAL/1.pdf /PATH/TO/ANOTHER/2.pdf /PATH/TO/A/WHOLE/DIR/*.pdf

또한 링크 된 페이지에서 join.py파일을 쉽게 입력 할 수 있도록 기호 링크를 만들 것을 제안 하지만 -sin 을 생략하고 ln -s ... ...하드 링크가 없으면 하드 링크가 만들어집니다. 그러나 언급 할지라도 아마 중요하지 않을 것입니다.


나를 위해 일했다. 여기서 가장 좋은 점은 다시는 사용할 수없는 추가 패키지를 설치하지 않아도된다는 것입니다. 감사.
gvrocha

El Capitan 10.11.6에서 나를 위해 일했습니다.
pabuisson

1
경고 : 그것은 여러 페이지의 회전 엉망 어디 PDF를했다
adius을

27

Brew 명령을 사용하여 Ghostscript를 설치하십시오.

brew install gs

그런 다음 나열된 모든 파일을 사용하여 명령을 실행하십시오.

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf source1.pdf source2.pdf source3.pdf

OS X / macOS에는 이미 기본적으로 명령 줄에서 PDF 파일을 결합 할 수있는 방법이 있으므로 Xcode, Homebrew 및 Ghostscript 용 명령 줄 도구를 먼저 설치하지 않아도 기본적으로 수행 할 수있는 작업을 수행하는 데 시간을 낭비하는 이유 위에서 언급 한 패키지를 설치하려면?
user3439894

5
@ user3439894 많은 사람들이 이미 이러한 공통 패키지를 설치했으며 gs향후 참조를 위해 이미 사용하고 있으므로이 솔루션은 매우 편리합니다.
htor

1
@ user3439894 혼란을 봅니다. 이 답변의 가치에 의문을 제기했기 때문에 귀하에게 연락하고 있습니다. 요즘 homebrew를 사용하여 명령 줄 유틸리티를 설치하는 것이 매우 일반적이므로 시간 낭비라고는 생각하지 않습니다. 많은 사람들에게이 답변은 귀하와 동일한 솔루션을 제공합니다.
htor December

7
이것은 나를 위해 일했지만, py 명령은 그렇지 않았습니다
Thieme Hennis

2
Thieme Hennis의 의견에 따라 join.py 스크립트는 High Sierra에서 세그먼테이션 오류로 인해 충돌합니다. 그러나 gs는 완벽하게 작동합니다.
arcdale

2

Automator 작업에서 Apple의 python 스크립트는 최신 PDFKit 프레임 워크가 아닌 CoreGraphics의 CGPDFDocument API를 사용하므로 속도가 매우 느립니다. 또한 필요한 API가 아닌 전체 CoreGraphics 라이브러리를 가져옵니다.

대안적이고 더 빠른 파이썬 스크립트 는 여기에서 찾을 수 있습니다.

이 스크립트는 또한 PDF에 목차를 추가하여 Apple이 갖고 있지 않은 각 구성 요소 파일 (및 기존 ToC 병합)을 나열합니다.

명령 행 (PDF 파일 이름을 인수로 사용) 또는 Automator 쉘 스크립트 조치에서 Finder에 대한 빠른 조치 / 서비스를 작성할 수 있습니다.


1
시험으로, 사용하여 time 명령을 당신과 함께 joinpdfs.py 스크립트 는 내장 join.py 스크립트 와 두 개의 파일, 당신의 2백메가바이트 각 ~ joinpdfs.py 스크립트는 보다 빠른 구초이었다 내장 된 join.py 스크립트 , 목차 그대로 가지고 물론 추가 혜택과 함께 . 좋은! +1
3439894

BTW 9 초는별로 들리지 않지만 내장 스크립트 의 전체 시간의 1/3이므로 1/3 시간이 빠릅니다.
user3439894

1

FWIW, 나는 시스템 파이썬과 같은 외부 의존성에 의존하지 않고 이것을 할 수있는 간단한 작은 프로그램을 작성했습니다. github 에서 : pdfmerge 와 사용하기 매우 간단합니다. 병합 할 PDF 파일 목록을 pdfmerge in1.pdf in2.pdf ... out.pdf전달 pdfmerge infileslist.txt out.pdf하거나 텍스트 파일로 병합 할 파일 목록을 전달 하거나 ABC 디렉토리에서 ABC 디렉토리로 현재 디렉토리를 수행 할 수 pdfmerge out.pdf있습니다. 나는 그것을 학습 프로젝트로 작성 했으므로 무료로 열고 공개하면 github의 릴리스 탭에서 최신 바이너리를 얻을 수 있습니다.


파이썬은 기본적으로 macOS의 일부로 설치되기 때문에 반드시 외부 의존성으로 간주 할 필요는 없습니다. 즉, macOS에서 이미 사용 가능한 항목을 사용하여 PDF 파일, join.pyAutomator의 PDF 페이지 결합 작업 의 스크립트 인 PDF 파일을 결합하려면 다운로드하거나 설치할 필요가 없습니다. 다운로드하여 설치하십시오. 또한 링크에서 바이너리를 보지 못했습니다.
user3439894

1
BTW 코드를 잘 살펴 보았으므로 파이썬 스크립트가 이미 사용하고있는 두 가지 핵심 구성 요소 (Foundation 및 Quartz)를 사용하고 있다는 것이 흥미 롭습니다. 코드에 아무것도 다운로드하지 않고 이미 기본적으로 제공되는 것보다 코드를 사용하는 것이 본질적으로 더 나은 것이 있습니까? 그렇지만 사용하려면 추가 및 추가 단계를 수행해야합니까?
user3439894

1
다른 용도로 Python을 사용하지 않는 사람들에게는 아마도 Apple 제공 스크립트를 사용하는 것이 더 합리적입니다. 그러나 파이썬을 사용하는 사람들에게는 다른 모듈 설치와 물건으로 여러 버전 (시스템 파이썬은 2.7, 현대 파이썬은 3.x)을 관리하는 것이 번거로울 수 있습니다. 예를 들어 내 컴퓨터에서 $ PATH는 완전히 다른 Python을 가리 킵니다. 이것은 합법적 인 shebangs 등의 사용으로 해결할 수 있지만 성가시다. 물론 YMMV. 또한 바이너리 다운로드 페이지로 직접 연결되는 링크 : github.com/paultopia/pdfmerge/releases/latest
Paul Gowder

1

에에 구축 @Bartosz Petryński좋은 대답은 , 우리는 자신을 최소화 할 수 cpdf고스트 스크립트의 상단에 유틸리티를 :

brew install gs
cpdf () { 
  gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$1" "${@:2}"
}

그런 다음 다음과 같이 사용하십시오.

cpdf merged.pdf file1.pdf file2.pdf file3.pdf

0

무료 Coherent PDF 명령 줄 도구 가 최선의 옵션 이라는 것을 알았습니다 . 그것은 매우 빠르고 손실이 없으며 다른 솔루션과 마찬가지로 방향이나 하이퍼 링크를 망칠 수 없습니다. 형식은 :

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