Làm thế nào để truy vấn kích thước trang pdf từ dòng lệnh?


35

Để tạo kịch bản, tôi cần lấy kích thước trang của tệp PDF (tính bằng mm).

pdfinfo chỉ in nó trong 'pts', vd:

Page size:      624 x 312 pts

Tôi nên sử dụng cái gì?

Hoặc đơn vị nào là 'pts' - trong trường hợp tôi muốn chuyển đổi chúng ...


2
Điểm trên Wikipedia
Mat

Trang nào bạn muốn kích thước? Kích thước hợp pháp bao ngoài? Kích thước tờ rơi "trang này là cố ý để trống"? Kích thước chữ đôi trang?
Ignacio Vazquez-Abrams

Câu trả lời:


31

Đơn vị 'pts' được sử dụng bằng cách pdfinfobiểu thị một điểm PostScript. Điểm PostScript được xác định theo inch và độ phân giải 72 chấm trên mỗi inch:

Vào cuối những năm 1980 đến những năm 1990, các điểm truyền thống đã được thay thế bởi điểm xuất bản máy tính để bàn (còn gọi là điểm PostScript), được định nghĩa là 72 điểm đến inch ( 1 điểm = 1/72 inch = 25.4/72 mm = 0,352 7 mm [≙ 0,3528 mm ]).

Hướng dẫn để gvchứa danh sách các định dạng giấy phổ biến được chỉ định trong các điểm PostScript.


1
trên các định dạng giấy phổ biến: pdfinfođôi khi cho tôi định dạng giấy (như Page size: 595.28 x 841.89 pts (A4)) - Tôi tự hỏi liệu nó có làm điều đó cho một danh sách kích thước trang mà nó biết không?
njsg

2
Một điểm thực sự là 0,352777777 ... mm, vì vậy 0,3528 mm là một xấp xỉ gần hơn.
cjm

15

Không phải là cách dễ nhất, nhưng được đưa ra imagemagickunitsbạn cũng có thể sử dụng

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

để tìm kích thước trang tính bằng inch (điều này có thể mang lại một số kết quả nếu PDF sử dụng các kích thước khác nhau) và sau đó chuyển đổi các số như thế này:

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

Có nghĩa là 8,26 inch là 209,9 mm (Tôi đã sử dụng PDF PDF cho việc này).


1
Khi tôi identifyPDF trên OS XI không nhận được bất kỳ đầu ra nào.
David Moles

rất muộn, nhưng identifyyêu cầu ImageMagick
hủy

6

Đã đi qua cùng một vấn đề và đi đến giải pháp sau đây. Tôi không nhận được tài liệu về cách các tệp pdf được tạo. Tôi chỉ so sánh hai tệp pdf trống với các kích cỡ trang khác nhau.

Dường như pdf có tất cả các loại thuộc tính được nhúng giữa "<<" và ">>". Tôi thấy rằng thông tin kích thước trang có trong văn bản thuần túy và có thể được tìm thấy với một tìm kiếm regex đơn giản.

Điều này có thể đúng hoặc không đúng với tất cả các pdf nhưng nó hoạt động trên tất cả những gì tôi có thể tìm thấy từ các nguồn khác nhau.

Phần có liên quan có thể trông giống như bất kỳ phần nào trong số này cho trang A4 cỡ:

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

Nó có nghĩa là [0 0 chiều cao chiều rộng] vì vậy đây là giải pháp siêu khập khiễng của tôi để giải nén điều này:

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

Chỉ cần thay đổi test.pdf thành tập tin của bạn.


1
lưu ý rằng các giá trị được trả về bởi giá trị này nằm ở "điểm" không phải là mm, pixel hoặc inch
lấy từ

0

Tôi đã sử dụng câu trả lời maxchlepzigs để tính mm trực tiếp:

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

điều này cũng hoạt động với câu trả lời của Alex Knaufs nhưng việc xác định mất nhiều thời gian hơn pdfinfo và yêu cầu hình ảnh, mặc dù vậy, bạn có thể sử dụng điều này cho nhiều tệp (tức là bằng cách cd'ing vào một thư mục và sử dụng *.pdf):

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

Lệnh thứ hai grepnhận được hai giá trị điểm / inch. Tôi khá chắc chắn rằng bạn có thể bỏ qua regex grep và làm điều đó trực tiếp với awk nhưng tôi không thể tìm ra nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.