명령 줄에서 PDF 페이지 크기를 쿼리하는 방법은 무엇입니까?


35

스크립팅을 위해 PDF 파일의 페이지 크기 (mm)를 가져와야합니다.

pdfinfo 'pts'로 인쇄합니다. 예 :

Page size:      624 x 312 pts

무엇을 사용해야합니까?

또는 어쨌든 'pts'는 무엇입니까-변환하려는 경우 ...


2
위키 백과에 대한 포인트
매트

어느 페이지의 크기를 원하십니까? 리갈 사이즈 외부 커버? 전단지 크기 "이 페이지는 의도적으로 비어 있습니다"? 문자 크기가 두 페이지입니까?
이그나시오 바스케스-아 브람스

답변:


30

로 사용되는 'pts'단위 pdfinfo는 포스트 스크립트 지점 을 나타냅니다. 포스트 스크립트 포인트 인치 인치당 72 도트의 해상도의 관점에서 정의된다 :

1980 년대 후반에서 1990 년대 사이에 전통적인 포인트는 데스크탑 게시 포인트 (PostScript 포인트라고도 함)로 대체되었습니다.이 포인트는 72 포인트 ( 1 포인트 = 1⁄72 인치 = 25.4⁄72mm = 0.352)로 정의되었습니다. ¯7 mm [≙ 0.3528 mm ]).

매뉴얼 gv에는 PostScript 지점에 지정된 일반적인 용지 형식 목록이 포함되어 있습니다 .


1
일반적인 용지 형식 : pdfinfo때때로 용지 형식 (예 Page size: 595.28 x 841.89 pts (A4):)을 제공합니다. 알고있는 페이지 크기 목록에 대해 용지 형식이 올바른지 궁금합니다.
njsg

2
점은 실제로 0.352777777 ... mm이므로 0.3528mm 는 더 가까운 근사치입니다.
CJM

14

아니 가장 쉬운 방법은, 그러나 주어진 imagemagick그리고 units당신은 사용도 수

$ identify -verbose some.pdf | grep "Print size" 
Print size: 8.26389x11.6944

페이지 크기를 인치 단위로 찾으려면 (PDF에서 다른 크기를 사용하는 경우 몇 가지 결과가 발생할 수 있음) 다음과 같이 숫자를 변환하십시오.

$ units -t '8.26389 inch' 'mm'
  209.90281

8.26 인치는 209.9mm라는 의미입니다 (이에 A4 PDF를 사용했습니다).


1
언제 identifyOS XI의 PDF는 출력을하지 않습니다.
David Moles

매우 늦었지만 identifyImageMagick이 필요함
추방

6

동일한 문제가 발생하여 다음 해결책에 도달했습니다. 나는 pdf 파일이 어떻게 구성되는지에 대한 문서를 얻지 못했다. 나는 단지 페이지 크기가 다른 두 개의 빈 pdf 파일을 비교했다.

pdf에는 "<<"와 ">>"사이에 모든 종류의 속성이 포함되어있는 것 같습니다. 페이지 크기 정보가 일반 텍스트로되어 있고 간단한 정규식 검색으로 찾을 수 있다는 것을 알았습니다.

이것은 모든 PDF에서 사실 일 수도 있고 아닐 수도 있지만 다른 출처에서 찾을 수있는 모든 것에서 작동했습니다.

관련 부분은 크기 A4 페이지에서 다음과 같이 보일 수 있습니다.

/MediaBox [0 0 595 842]
/MediaBox[0 0 595 842]
/MediaBox[ 0 0 595.32 841.92]

그것은 [0 0 width height]를 의미하므로 여기에 내 절름발이이지만 이것을 추출하는 효과적인 해결책이 있습니다.

cat test.pdf | egrep -ao "/MediaBox ?\[ ?[0-9]+ [0-9]+ [0-9]+(\.[0-9]+)? [0-9]+(\.[0-9]+)?\]" | head -1

test.pdf를 파일로 변경하십시오.


1
참고이에 의해 반환되는 값은 "포인트"하지 mm, 픽셀 또는 인치에 있음
defuzed

0

maxchlepzigs 답변을 사용하여 mm을 직접 계산했습니다.

$ pdfinfo test.pdf | grep "Page size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=0.3528 '{print $1*x}'

이것은 또한 Alex Knaufs 답변과 함께 작동하지만 식별은 pdfinfo보다 훨씬 오래 걸리고 imagemagick이 필요합니다. 단, 파일을 여러 파일에 사용할 수 있습니다 (예 *.pdf: 디렉토리에 cd하고을 사용하여 ).

$ identify -verbose some.pdf | grep "Print size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=25.4 '{print $1*x}'

두 번째 grep명령은 두 개의 포인트 / 인치 값을 얻습니다. 나는 grep 정규식을 건너 뛸 수 있고 awk로 직접 할 수 있다고 확신하지만 알아낼 수는 없습니다.

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