PDF sayfa boyutunu komut satırından nasıl sorgulayabilirim?


35

Script için bir PDF dosyasının sayfa boyutlarını almam gerekiyor (mm olarak).

pdfinfo sadece 'pts' ile basar, örneğin:

Page size:      624 x 312 pts

Ne kullanmalıyım?

Veya yine de hangi birim "puan" - dönüştürmek istersem diye ...


2
Nokta Vikipedi'de
Mat

Hangi sayfanın boyutunu istiyorsunuz? Yasal boyut dış kapak? "Bu sayfa bilerek boş bırakılmıştır" broşür boyutu? Mektup boyutu çift sayfa mı?
Ignacio Vazquez-Abrams

Yanıtlar:


30

Tarafından kullanılan 'pts' birimi pdfinfobir PostScript noktasını belirtir. Bir PostScript noktası bir inç ve inç başına 72 nokta çözünürlük olarak tanımlanır:

1980'lerin sonlarına doğru 1990'lı yıllara kadar, geleneksel nokta masaüstü yayın noktası (PostScript noktası olarak da bilinir) ile desteklendi, bu da inç'e 72 nokta olarak tanımlandı ( 1 nokta = 1⁄72 inç = 25.4⁄72 mm = 0.352) ¯7 mm [≙ 0,3528 mm ]).

PostScript noktalarında belirtilen ortak kağıt biçimlerinin bir listesinigv içeren kılavuz .


1
yaygın kağıt formatlarında: pdfinfobazen bana kağıt formatını verir (gibi Page size: 595.28 x 841.89 pts (A4)) - Acaba merak ettiği sayfa boyutlarının listesi için yapar mı?
njsg

2
Bir nokta aslında 0.352777777 ... mm'dir, yani 0.3528 mm daha yakın bir yaklaşımdır.
cjm

14

En kolay yol değil, ama verilen imagemagickve unitsde kullanabilirsiniz

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

sayfa boyutunu inç olarak bulmak için (PDF farklı boyutlar kullanıyorsa bu birkaç sonuç verebilir) ve ardından sayıları şöyle dönüştür:

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

Yani 8.26 inç 209.9 mm (bunun için A4 PDF kullandım).


1
identifyOS XI'da bir PDF çıktığımda herhangi bir çıktı almadım.
David Moles

çok geç, ama identifyImageMagick'i gerektiriyor
15'te

6

Aynı soruna rastladım ve aşağıdaki çözüme ulaştım. Pdf dosyalarının nasıl oluşturulduğuna dair dokümantasyona girmedim, sadece iki boş pdf dosyasını farklı sayfa boyutlarıyla karşılaştırdım.

Pdfs, "<<" ve ">>" arasına gömülü her türlü özelliğe sahiptir. Sayfa boyutu bilgilerinin düz metin olarak bulunduğunu ve basit bir regex aramasıyla bulunabileceğini öğrendim.

Bu tüm pdfs'ler için geçerli olabilir veya olmayabilir, ancak farklı kaynaklardan bulabildiğim her şey üzerinde çalıştı.

İlgili kısım, A4 boyutunda bir sayfa için bunlardan herhangi birine benzeyebilir:

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

[0 0 genişlik yüksekliği] anlamına geliyor, işte bu benim süper topallığım, ancak bunu çıkarmak için çalışan bir çözüm:

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

Sadece test.pdf dosyasını dosyanızla değiştirin.


1
Not Bu döndürdüğü değerler "noktaları" değil mm piksel veya inç olarak olduğu
defuzed

0

Doğrudan mm'yi hesaplamak için maxchlepzigs cevap kullandım:

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

bu aynı zamanda Alex Knauf'un cevabıyla da çalışır ancak tanımlamak pdfinfo'dan çok daha uzun sürüyor ve görüntü gerektiriyor *.pdf;

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

İkinci grepkomut iki nokta / inç değerini alır. Grep regex'ini atlayıp doğrudan awk ile yapabileceğinden eminim ama çözemedim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.