명령 줄을 사용하여 여러 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.