Для сценариев мне нужно получить размеры страницы PDF-файла (в мм).
pdfinfo
просто печатает его в 'pts', например:
Page size: 624 x 312 pts
Что я должен использовать?
Или, в любом случае, какая единица измерения 'pts' - на случай, если я захочу их преобразовать ...
Ответы:
Единица 'pts', используемая
pdfinfo
символом, обозначает точку PostScript. Точка PostScript определяется в дюймах и разрешением 72 точки на дюйм:В руководстве
gv
содержится список распространенных форматов бумаги, указанных в точках PostScript.источник
pdfinfo
иногда дает мне формат бумаги (напримерPage size: 595.28 x 841.89 pts (A4)
) - интересно, если он делает это для списка размеров страниц, о которых он знает?Не самый простой способ, но данный,
imagemagick
иunits
вы также можете использоватьнайти размер страницы в дюймах (это может дать несколько результатов, если PDF использует разные размеры), а затем преобразовать числа следующим образом:
Это означает, что 8,26 дюйма - это 209,9 мм (для этого я использовал формат А4 PDF).
источник
identify
PDF на OS X, я не получаю вывод.identify
требует ImageMagickНаткнулся на ту же проблему и пришел к следующему решению. Я не попал в документацию о том, как создаются PDF-файлы, я просто сравнил два пустых PDF-файла с разными размерами страниц.
Похоже, PDF-файлы имеют всевозможные атрибуты, встроенные между «<<» и «>>». Я обнаружил, что информация о размере страницы находится в виде простого текста и может быть найдена с помощью простого поиска регулярных выражений.
Это может или не может быть верно для всех PDF-файлов, но это работало на все, что я мог найти из разных источников.
Соответствующая часть может выглядеть как любая из них для страницы формата А4:
Это означает [0 0 width height], поэтому вот мое супер хромое, но рабочее решение, чтобы извлечь это:
Просто измените test.pdf на ваш файл.
источник
Я использовал ответ maxchlepzigs, чтобы вычислить мм напрямую:
$ pdfinfo test.pdf | grep "Page size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=0.3528 '{print $1*x}'
это также работает с ответом Алекса Кнауфа, но для идентификации требуется гораздо больше времени, чем для pdfinfo, и требуется imagemagick, однако, положительным моментом является то, что вы можете использовать это для нескольких файлов (то есть, перейдя в каталог и используя
*.pdf
):$ identify -verbose some.pdf | grep "Print size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=25.4 '{print $1*x}'
Вторая
grep
команда получает значения двух точек / дюйм. Я вполне уверен, что вы можете пропустить регулярное выражение grep и сделать это напрямую с помощью awk, но я не мог понять это.источник