Получить режим макета (альбомный или портретный) pdf от php / linux

Учитывая PDF, как можно получить режим макета PDF (или относительной ширины / высоты) с помощью инструмента командной строки PHP lib или linux?

Используя http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf, который может установить эту переменную в новых PDF-файлах, но для существующих pdf-файлов из Adobe.

Мысль о преобразовании pdf-файлов в ps или использовании gs каким-то другим способом – например, сначала конвертируем его в изображение и получаем ширину и высоту. Это лучший способ?

Решение, которое я использую, – использовать ghostscript для печати первой страницы изображения, затем получения размеров изображения

$cmd = 'gs -dSAFER -dBATCH -dNOPAUSE -dFirstPage=1 -dLastPage=1 -sDEVICE=png16m -r400 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile="'.$complete_file_path.'/p%d.png" "'.$complete_file_path.'/'.$this->pdffilename.'"'; $result = $this->proc( $cmd ); list($width, $height, $type, $attr) = getimagesize($complete_file_path.'/'.$pngfilename); 

Вы не всегда можете полагаться на результаты с первой страницы, чтобы они были одинаковыми для всех остальных. Я видел достаточно файлов в формате смешанного формата в дикой природе, чтобы не хотеть основывать какой-либо код на этом предположении.

Более надежный способ определения размеров носителей для каждой страницы (и даже каждого из встроенных ящиков {Trim, Media, Crop, Bleed}) – это инструмент командной строки pdfinfo.exe (часть инструментов XPDF из http: // www .foolabs.com / xpdf / download.html ). Вы можете запустить инструмент с параметром «-box» и сообщить ему с «-f 3», чтобы начать со страницы 3 и с «-l 8», чтобы остановить обработку на стр. 8.

Пример вывода:

 C: \ downloads> pdfinfo -box -f 1 -l 3 _IXUS_850IS_ADVCUG_RU.pdf
 Создатель: FrameMaker 6.0
 Производитель: Acrobat Distiller 5.0.5 (Windows)
 CreationDate: 17.08.06 16:43:06
 ModDate: 08/22/06 12:20:24
 Метки: нет
 Страницы: 146
 Зашифровано: нет
 Страница 1 размер: 419.535 x 297.644 pts
 Page 2 размер: 297.646 x 419.524 pts
 Page 3 размер: 297.646 x 419.524 pts
 Page 1 MediaBox: 0,00 0,00 595,00 842,00
 Page 1 CropBox: 87,25 430,36 506,79 728,00
 Page 1 BleedBox: 87,25 430,36 506,79 728,00
 Page 1 TrimBox: 87,25 430,36 506,79 728,00
 Page 1 ArtBox: 87,25 430,36 506,79 728,00
 Page 2 MediaBox: 0,00 0,00 595,00 842,00
 Page 2 CropBox: 148,17 210,76 445,81 630,28
 Page 2 BleedBox: 148,17 210,76 445,81 630,28
 Page 2 TrimBox: 148.17 210.76 445.81 630.28
 Page 2 ArtBox: 148.17 210.76 445.81 630.28
 Page 3 MediaBox: 0,00 0,00 595,00 842,00
 Page 3 CropBox: 148,17 210,76 445,81 630,28
 Page 3 BleedBox: 148.17 210.76 445.81 630.28
 Page 3 TrimBox: 148.17 210.76 445.81 630.28
 Page 3 ArtBox: 148.17 210.76 445.81 630.28
 Размер файла: 6888764 байтов
 Оптимизировано: да
 PDF версия: 1.4

Большая пушка, но никаких других предложений. Я использовал библиотеку iText Java для обработки pdf-файлов.

Обратите внимание: насколько я знаю, нет такой вещи, как режим макета PDF или размер. PDF представляет собой набор страниц, каждый из которых имеет медиа-бокс, определяющий размер печатаемой страницы. Однако это свойство может быть унаследовано страницей с предыдущих страниц, если не определено. Подробнее см. В документе PDF .