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

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

스크립팅을 위해 PDF 파일의 페이지 크기를 밀리미터 단위로 가져와야 합니다.

pdfinfo예를 들어 "pts"로 인쇄하면 됩니다.

Page size:      624 x 312 pts

무엇을 사용해야 합니까?

아니면 어쨌든 단위는 "pts"입니다. 변환하고 싶다면...

답변1

사용된 "pts" 단위는 pdfinfoPostScript 포인트를 나타냅니다. ㅏ포스트스크립트 도트인치 단위의 해상도는 인치당 72 도트입니다.

1980년대 후반과 1990년대에 전통적인 포인트는 72도트/인치로 정의된 탁상 출판 포인트(포스트스크립트 포인트라고도 함)로 대체되었습니다(1점= 1/72인치 = 25.4/72mm =0.352 ̄7mm[≙0.3528mm]).

이 설명서에는 다음 gv이 포함되어 있습니다.일반적인 용지 형식 목록PostScript 도트로 지정됩니다.

답변2

가장 쉬운 방법은 아니지만 주어진 경우 다음을 사용할 수도 있습니다 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를 사용하고 있습니다).

답변3

동일한 문제가 발생하여 다음과 같은 해결 방법을 생각해 냈습니다. 나는 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 너비 높이]를 의미하므로 여기에 이를 추출하는 매우 형편없지만 효과적인 솔루션이 있습니다.

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

test.pdf를 파일로 변경하면 됩니다.

답변4

불행히도 pdfinfo첫 페이지의 크기만 제공됩니다. 이를 사용하여 mutool모든(또는 일부 선택된) 페이지에서 크기를 가져올 수 있습니다. 이러한 페이지 치수는 밀리미터 단위로 표시 됩니다 awk.

mutool info -M file.pdf \
 | awk '/\[ [ .[:digit:]]+ \]/ { printf "Page %02d: %9s x %-9s\n",  $1, $8*25.4/72 "mm", $9*25.4/72 "mm" }'
Page 01:     841mm x 1189mm   
Page 02:     594mm x 841mm    
Page 03:     420mm x 594mm    
Page 04:     297mm x 420mm    
Page 05:     210mm x 297mm    
Page 06:     148mm x 210mm    
Page 07:     105mm x 148mm    
Page 08:    1000mm x 1414mm   
Page 09:     707mm x 1000mm   
Page 10:     500mm x 707mm    
Page 11:     353mm x 500mm    
Page 12:     250mm x 353mm    
Page 13:     176mm x 250mm    
Page 14:     125mm x 176mm    
Page 15:  184.15mm x 266.7mm  
Page 16:   215.9mm x 355.6mm  
Page 17:   215.9mm x 279.4mm

mutool반환 페이지 크기pts, 국제 인치의 1/72로 정의됩니다. 알아채다 1 in = 25.4 mm.

다양한 크기의 페이지로 PDF 파일 만들기

file.pdfmutool다음 bash 스크립트를 사용하여 pdfjam생성 되었습니다.

#!/bin/bash

#Creating pdf file with an empty A4 (595 x 842 pts) page. 
mutool create -o empty.pdf /dev/null

#Using empty.pdf as template for creating 17 diferents page sizes
for PAPERSIZE in {letter,legal,executive,{a,b}{0..6}}paper; do 
    pdfjam -q --paper "${PAPERSIZE}" -o "${PAPERSIZE}.pdf" empty.pdf 
done

#Merging in file.pdf
mutool merge -o file.pdf *paper.pdf

관련 정보