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

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

pdfinfo ‘pts’로 인쇄합니다. 예 :

Page size:      624 x 312 pts

무엇을 사용해야합니까?

또는 어쨌든 ‘pts’는 무엇입니까-변환하려는 경우 …



답변

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

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

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


답변

아니 가장 쉬운 방법은, 그러나 주어진 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를 사용했습니다).


답변

동일한 문제가 발생하여 다음 해결책에 도달했습니다. 나는 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를 파일로 변경하십시오.


답변

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로 직접 할 수 있다고 확신하지만 알아낼 수는 없습니다.


답변