Как запросить размер страницы PDF из командной строки?

Если Вы хотите, чтобы вид GNU был стабилен затем, необходимо передать -s. Иначе записи с тем же ключом выйдут в произвольном порядке на основе sortвнутренний алгоритм.

34
27.05.2012, 20:48
5 ответов

'pts' единица, используемая pdfinfo обозначает точку PostScript. Точка PostScript определяется с точки зрения дюйма и разрешения 72 точек на дюйм:

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

Руководство к gv содержит список общих форматов бумаги, указанных в точках PostScript.

31
27.01.2020, 19:36
  • 1
    на общих форматах бумаги: pdfinfo иногда дает мне формат бумаги (как Page size: 595.28 x 841.89 pts (A4)) — Интересно, делает ли это это для списка размеров страницы, это знает о? –  njsg 27.05.2012, 23:45
  • 2
    , который точка на самом деле 0.352777777... мм, так 0,3528 мм, является более близким приближением. –  cjm 28.05.2012, 08:34

Не самый легкий путь, но данный 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 мм (я использовал A4 PDF для этого).

15
27.01.2020, 19:36
  • 1
    Когда я identify PDF на OS X я не получаю вывода. –  David Moles 31.05.2016, 23:58

Не самый легкий путь, но данный 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 мм (я использовал A4 PDF для этого).

15
27.01.2020, 19:36

Обнаружил ту же проблему и пришел к следующему решению. Я не вдавался в документацию о том, как создаются файлы pdf, я просто сравнил два пустых файла pdf с разными размерами страниц.

Похоже, в PDF-файлах есть всевозможные атрибуты, заключенные между «<<» и «>>». Я обнаружил, что информация о размере страницы представлена ​​в виде обычного текста и может быть найдена с помощью простого поиска по регулярному выражению.

Это может быть или не быть верным для всех PDF-файлов, но это сработало для всех, что я смог найти из разных источников.

Соответствующая часть может выглядеть как любая из этих для страницы формата 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 в ваш файл.

6
27.01.2020, 19:36

Я использовал ответ 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, но я не мог этого понять.

3
27.01.2020, 19:36

Теги

Похожие вопросы