Получите режим макета (альбомный или книжный) PDF-файла из php/linux.

StackOverflow https://stackoverflow.com/questions/1467494

Вопрос

Учитывая 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);

Другие советы

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

Более надежный способ определить размеры мультимедиа для каждой страницы (и даже каждого из встроенных блоков {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_EN.pdf
Creator:        FrameMaker 6.0
Producer:       Acrobat Distiller 5.0.5 (Windows)
CreationDate:   08/17/06 16:43:06
ModDate:        08/22/06 12:20:24
Tagged:         no
Pages:          146
Encrypted:      no
Page    1 size: 419.535 x 297.644 pts
Page    2 size: 297.646 x 419.524 pts
Page    3 size: 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
File size:      6888764 bytes
Optimized:      yes
PDF version:    1.4

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top