Як запитувати розмір сторінки PDF у командному рядку?


35

Для сценаріїв мені потрібно отримати розміри сторінки PDF-файлу (у мм).

pdfinfo просто друкує його в "pts", наприклад:

Page size:      624 x 312 pts

Що я повинен використовувати?

Або яка одиниця - "pts" у будь-якому випадку - якщо я хочу їх перетворити ...


2
Точка у Вікіпедії
Мат

Для якої сторінки ви хотіли розміру? Зовнішнє покриття законного розміру? Розмір листівки "Ця сторінка навмисно порожня"? Розмір букви подвійні сторінки?
Ігнасіо Васкес-Абрамс

Відповіді:


31

Блок "pts", який використовується, pdfinfoпозначає точку PostScript. Точка PostScript , визначається в термінах дюйма і дозволом 72 точок на дюйм:

В кінці 1980-х - 1990-х традиційну точку витіснила точка настільної публікації (також її називають точкою PostScript), яку визначали як 72 точки до дюйма ( 1 бал = 1,72 дюйма = 25,4⁄72 мм = 0,352 ¯7 мм [≙ 0,3528 мм ]).

Посібник gvмістить перелік поширених форматів паперу, вказаних у точках PostScript.


1
на звичайних форматах паперу: pdfinfoіноді надає мені формат паперу (як Page size: 595.28 x 841.89 pts (A4)) - мені цікаво, чи можна це зробити для списку розмірів сторінок, про які він знає?
njsg

2
Точка насправді становить 0,352777777 ... мм, тому 0,3528 мм є більш близьким наближенням.
cjm

15

Не найпростіший спосіб, але дано imagemagickі unitsви також могли використовувати

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

щоб знайти розмір сторінки в дюймах (це може дати кілька результатів, якщо PDF використовує різні розміри), а потім перетворити такі цифри:

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

Це означає, що 8,26 дюйма - 209,9 мм (для цього я використовував PDF-формат A4).


1
Коли я завантажую identifyPDF в OS XI, не отримую жодного результату.
Девід Молес

дуже пізно, але identifyвимагає ImageMagick
знезаражений

6

Зіткнулися з тією ж проблемою і прийшли до наступного рішення. Я не потрапив у документацію про побудову файлів pdf, я просто порівняв два порожні файли pdf різного розміру сторінки.

Схоже, у pdfs є всілякі атрибути, вбудовані між "<<" та ">>". Я виявив, що інформація про розмір сторінки міститься у простому тексті, і її можна знайти за допомогою простого пошуку в регулярних виразах.

Це може бути, але не може бути правдою для всіх pdfs, але він працював над усім, що я міг знайти з різних джерел.

Відповідна частина може виглядати як будь-яка з них для сторінки формату A4:

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

Це означає [0 0 висота ширини], тож ось мій супер кульг, але робоче рішення для отримання цього:

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

Просто змініть test.pdf у свій файл.


1
зауважте, що значення, повернені цим, знаходяться у "точках" не мм, пікселях чи дюймах
розмито

0

Я використовував maxchlepzigs відповідь для обчислення мм безпосередньо:

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

це також працює з відповіддю Алекса Кнауфса, але ідентифікація займає набагато більше часу, ніж pdfinfo і вимагає imagemagick, проте перевершення полягає в тому, що ви можете використовувати це для декількох файлів (тобто, cd'ing в каталог і використовуючи *.pdf):

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

Друга grepкоманда отримує значення двох балів / дюймів. Я досить впевнений, що ви можете пропустити греп-регекс і зробити це безпосередньо з awk, але я не міг це зрозуміти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.