변환을 사용하여 PDF 파일의 특정 페이지를 가져오시겠습니까?

변환을 사용하여 PDF 파일의 특정 페이지를 가져오시겠습니까?

이전에 이 작업을 수행한 적이 있으므로 가능하다고 확신하지만 방법을 잊어버렸습니다. PDF 형식을 유지하려는 PDF의 특정 페이지를 가져오도록 Convert에 지시하는 방법이 있습니까?

답변1

convert(1)아래 첨자 표기법을 사용하여 PDF에 "색인"을 지정할 수 있습니다 .

$ convert source.pdf[1] dest.pdf 

색인 값은 PDF 내보내기에서 페이지 번호를 매기는 방법에 따라 달라집니다. 여기에서 파일을 테스트할 때 숫자는 0부터 시작하는 것으로 나타나므로 위의 예에서는 다음을 제공합니다.두번째문서의 페이지입니다. PDF 작성자가 문서의 페이지에 그런 방식으로 "번호를 매겼기" 때문에 알파벳순 색인을 보여주는 몇 가지 예를 온라인에서 본 적이 있습니다.

불행하게도 ImageMagick은 모든 것이 픽셀 기반이라고 가정하고 일반적인 PDF의 레이아웃과 같은 벡터 이미지를 래스터화하기 때문에 이는 좋은 결과를 제공하지 않습니다.

작업을 위한 더 나은 도구는 다음과 같습니다.고스트 스크립트, 다음을 설치했을 수 있습니다.

$ gs -dNOPAUSE -dBATCH -dFirstPage=2 -dLastPage=2 -sDEVICE=pdfwrite \
    -sOutputFile=dest.pdf -f src.pdf

Ghostscript는 ImageMagick보다 PDF(PostScript 파생물)를 더 잘 이해하기 때문에 PDF 데이터를 변경하지 않고 전달합니다.

답변2

ImageMagick은 비트맵 이미지용 도구이지만 대부분의 PDF는 그렇지 않습니다. 사용해보면 그럴거에요래스터화일반적으로 바람직하지 않은 데이터입니다.

PDF 파일PDF 파일에서 하나 이상의 페이지를 추출할 수 있습니다.

pdftk A=input.pdf cat A42 A43 output pages_42_43.pdf

PDFLaTeX와 함께 LaTeX가 설치되어 있으면 다음을 사용할 수 있습니다.PDF 페이지.pdfpages에는 쉘 래퍼가 있습니다.pdfjam.

pdfjam -o pages_42_43.pdf input.pdf 42,43

또 다른 가능성(여기서는 약간 과잉이지만 한 페이지보다 더 복잡한 요구에 유용함)은 Python입니다.pypdf도서관.

#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for i in [42, 43]:
    output.addPage(input.getPage(i))
output.write(sys.stdout)

답변3

2011년 Q&A입니다. 2021년 현재 이 목적을 위한 가장 안정적이고 잘 유지 관리되는 옵션은 qpdf라고 생각합니다.

qpdf input.pdf --페이지 . 12 -- 출력.pdf

페이지 번호는 1부터 시작하는 것 같지만 pdf 파일에 페이지 번호 메타데이터가 있을 때 이것이 어떻게 작동하는지 확인하지 않았습니다.

나는 수년간 pdftk를 사용해왔지만 pdftk는 제대로 설계되지 않았고 오래된 라이브러리 버전에 의존했습니다.

관련 정보