Untuk scripting saya perlu mendapatkan dimensi halaman dari file PDF (dalam mm).
pdfinfo cukup cetak dalam 'pts', mis:
Page size: 624 x 312 pts
Apa yang harus saya gunakan?
Atau unit apa itu 'Poin' - kalau-kalau saya ingin mengubahnya ...
Untuk scripting saya perlu mendapatkan dimensi halaman dari file PDF (dalam mm).
pdfinfo cukup cetak dalam 'pts', mis:
Page size: 624 x 312 pts
Apa yang harus saya gunakan?
Atau unit apa itu 'Poin' - kalau-kalau saya ingin mengubahnya ...
Jawaban:
Unit 'pts' yang digunakan oleh pdfinfomenunjukkan titik PostScript. Sebuah titik PostScript didefinisikan dalam hal inci dan resolusi 72 titik per inci:
Pada akhir 1980-an hingga 1990-an, titik tradisional digantikan oleh titik desktop publishing (juga disebut titik PostScript), yang didefinisikan sebagai 72 poin ke inci ( 1 poin = 1/72 inci = 25.4/72 mm = 0,352 ¯7 mm [≙ 0,3528 mm ]).
Manual untuk gvmemuat daftar format kertas umum yang ditentukan dalam poin PostScript.
pdfinfokadang-kadang memberi saya format kertas (seperti Page size: 595.28 x 841.89 pts (A4)) - Saya ingin tahu apakah itu untuk daftar ukuran halaman yang diketahuinya?
Bukan cara termudah, tapi diberikan imagemagickdan unitsAnda juga bisa menggunakannya
$ identify -verbose some.pdf | grep "Print size"
Print size: 8.26389x11.6944
untuk menemukan ukuran halaman dalam inci (ini dapat menghasilkan beberapa hasil jika PDF menggunakan dimensi yang berbeda) dan kemudian mengonversi angka-angka seperti ini:
$ units -t '8.26389 inch' 'mm'
209.90281
Berarti 8,26 inci adalah 209,9 mm (saya menggunakan A4 PDF untuk ini).
identifyPDF pada OS XI saya tidak mendapatkan output.
identifymembutuhkan ImageMagick
Datang di masalah yang sama dan datang ke solusi berikut. Saya tidak masuk ke dokumentasi tentang bagaimana file pdf dibangun. Saya hanya membandingkan dua file pdf kosong dengan ukuran halaman yang berbeda.
Sepertinya pdf memiliki semua jenis atribut yang disematkan antara "<<" dan ">>". Saya menemukan bahwa info ukuran halaman ada dalam teks biasa dan dapat ditemukan dengan pencarian regex sederhana.
Ini mungkin atau mungkin tidak benar untuk semua pdf tetapi itu bekerja pada semua yang dapat saya temukan dari sumber yang berbeda.
Bagian yang relevan dapat terlihat seperti ini untuk halaman ukuran A4:
/MediaBox [0 0 595 842]
/MediaBox[0 0 595 842]
/MediaBox[ 0 0 595.32 841.92]
Ini berarti [0 0 lebar lebar] jadi di sini adalah solusi super timpang saya tetapi berfungsi untuk mengekstrak ini:
cat test.pdf | egrep -ao "/MediaBox ?\[ ?[0-9]+ [0-9]+ [0-9]+(\.[0-9]+)? [0-9]+(\.[0-9]+)?\]" | head -1
Ubah saja test.pdf ke file Anda.
Saya menggunakan jawaban maxchlepzigs untuk menghitung mm secara langsung:
$ pdfinfo test.pdf | grep "Page size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=0.3528 '{print $1*x}'
ini juga bekerja dengan jawaban Alex Knaufs tetapi mengidentifikasi membutuhkan waktu lebih lama dari pdfinfo dan memerlukan imagemagick, meskipun terbalik adalah bahwa Anda dapat menggunakan ini untuk beberapa file (yaitu dengan cd ke direktori dan menggunakan *.pdf):
$ identify -verbose some.pdf | grep "Print size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=25.4 '{print $1*x}'
grepPerintah kedua mendapatkan nilai dua titik / inci. Saya cukup yakin Anda dapat melewati reg grep dan melakukannya langsung dengan awk tetapi saya tidak bisa mengetahuinya.