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