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 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 .
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ı?
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).
identifyOS XI'da bir PDF çıktığımda herhangi bir çıktı almadım.
identifyImageMagick'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 grepkomut iki nokta / inç değerini alır. Grep regex'ini atlayıp doğrudan awk ile yapabileceğinden eminim ama çözemedim.