PDF 파일의 마지막 페이지를 추출 및 / 또는 제거하는 방법은 무엇입니까?


14

공급 업체 중 하나가 불필요하게 큰 이미지를 가져 와서 마지막 PDF 페이지로 가져 오기 시작했습니다. 이것을 다듬어야합니다. 그러나 수백 가지가 있으므로 수동으로 입력하는 것은 금지되어 있습니다. PDF의 마지막 페이지를 자동으로 추출하고 삭제하는 가장 좋은 방법은 무엇입니까 (바람직하게는 첫 번째, 다른 것; 이미지가없는 페이지를 삭제하지 않는지 파일 크기를 통해 확인해야 함)? OS는 Linux입니다.

의 행을 따라 고스트 스크립트를 사용하여 추출 할 수는 gs -dFirstPage=5 -dLastPage=5있지만 이것을 자동화해야합니다. 마지막 페이지의 수를 알아 내고 수동으로 찾을 수 없습니다.

어떤 아이디어?

편집 : 명확히하기 위해 단순히 마지막 페이지를 분리 / 삭제하고 싶습니다. 이미지가 아닌 마지막 페이지 기간을 소비하십시오.


1
보세요 pdftk-이런 종류의 작업에 일반적으로 효과가 있다고 생각합니다.
Daniel Andersson


2
원격으로 복제품이 아닙니다.
Andrew

그래도 명확히해야한다고 생각합니다. 마지막 페이지에서 이미지를 제거하는 데 관심이 없습니다. 마지막 페이지 인 기간을 삭제하고 싶습니다.
Andrew

답변:


2

@Daniel Andersson이 이미 언급했듯이 다음과 같이 쉽게 수행 할 수 있습니다 pdftk.

pdftk input.pdf cat end-1 output temp.pdf
pdftk temp.pdf  cat end-2 output output.pdf
rm temp.pdf

그래도 pdftk를 한 번만 호출하여 수행 할 수 있는지 모르겠습니다 ...

편집 : 당신은 그것을 thanosk의 답변과 결합하여 사용할 수 있습니다 (bash에서) :

pdftk input.pdf cat 1-$((last-1)) output output.pdf

변수에 마지막 페이지를 이미 추출했을 때 $last.


예제가 작동하지 않습니다. 더 잘 작동하는 @Sid Steward의 답변을 찾았습니다.
Reado

14

@eldering의 답변을 더 향상시키기 위해 pdftk 버전 1.45 이상에는 소문자 r을 페이지 번호 앞에 붙여서 페이지를 역순으로 참조하는 수단이 있습니다. PDF의 마지막 페이지는 r1이고 마지막 페이지는 r2입니다.

예를 들어, 단일 pdftk 호출은 다음과 같습니다.

pdftk input.pdf cat 1-r2 output output.pdf

input.pdf에서 최종 페이지를 삭제합니다. 입력 길이는 2 페이지 이상이어야합니다.

파일 크기를 테스트하기 위해 PDF의 마지막 페이지 만 추출하려면 다음을 실행하십시오.

pdftk input.pdf cat r1 output final_page.pdf

Pdftk는 Linux에서 사용 가능합니다. 많은 배포판에는 설치할 수있는 바이너리가 있습니다. 그러나 버전이 1.45 이상인지 확인해야합니다. 그렇지 않은 경우 소스 코드에서 pdftk를 빌드 할 수 있습니다.


라텍스 기반의 PDF 생성 시스템은 문서의 시작 부분과 끝 부분에 항상 빈 페이지를 생성했기 때문에 rN-thing은 정확히 필요한 것입니다. 이제 pdftk A = pocket20.pdf cat A3-r6 r3-end 출력 pocket_to_print.pdf를 호출하여 첫 ​​두 페이지와 마지막 페이지를 제거합니다.
Martin T.

1

pdfinfo는 실제 pdf 파일의 크기를 제공하며 pdfimages는 해당 pdf 파일의 이미지 색인을 제공합니다. 그래서 당신은 형태로 스크립트를 작성할 수 있습니다

#!/bin/bash
for i in *.pdf
do
        j=$(pdfinfo "$i" |awk '/^Pages/ { print $2}')
        pdfimages -list -p -f "$j" "$i"
done

특정 파일에 마지막 페이지에 이미지가 있으면 반환해야합니다. 그렇다면 필요한 조작을 할 수 있습니다.


0

다음은 pdftk 대신 pdfjam을 사용하는 솔루션입니다.

#!/bin/sh
fname=`basename $1`
pdfjam $1 1-$((`pdfinfo $1 | grep Pages | grep -shoPe '\d+'` - ${2:-1})) -o ${fname%.*}-trimmed.pdf

첫 번째 인수는 다듬을 파일이고 두 번째 인수는 다듬을 페이지의 양입니다 (기본값은 1).


0

하나의 라이너 솔루션은 다음 findpdftk같이 사용 됩니다 .

find . -name "*.pdf" -exec pdftk {} cat 1-r2 output cut/{} \;

참고 : 자른 파일은이 예제에서 입력 파일을 덮어 쓸 수 없으므로 cut원래 파일 이름을 유지하기 위해 호출되는 하위 디렉토리에 저장됩니다 pdftk.

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