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 ...
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 ...
Yanıtlar:
Tarafından kullanılan 'pts' birimi pdfinfo
bir 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 .
pdfinfo
bazen 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ı?
En kolay yol değil, ama verilen imagemagick
ve units
de 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).
identify
OS XI'da bir PDF çıktığımda herhangi bir çıktı almadım.
identify
ImageMagick'i gerektiriyor
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.
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 grep
komut iki nokta / inç değerini alır. Grep regex'ini atlayıp doğrudan awk ile yapabileceğinden eminim ama çözemedim.