Какую библиотеку для PHP 8 можно использовать для редактирования метадаты в PDF файлах?
Нужно изменить метадату в PDF файлах, искал либу под это дело, но всё, что удаётся найти, либо на 8-ке не запустится, либо для генерации PDFок, а мне нужно работь с готовыми файлами. Подскажите, через какую библиотеку такое можно сделать?
Дополнительно:
Ghostscript через командную строку. Он все равно должен быть установлен, чтобы работать с PDF.
- Adamos как-то не особо понял как через него изменить метаданные в PDF? И вариант с командной строкой не годится, нужна функция либо метод
- JastaFly, гуглим "ghostscript pdf metadata change".
Копируем рецепты с SO, кропаем функцию либо метод, который сформирует нужную строчку и вызовет exec. - Adamos, а нет како-то менее костыльного метода?
- JastaFly, ЭТО и есть самый прямой и не костыльный метод.
Если кому-то массово требовалось заниматься подделкой метаданных, да еще и с другими делиться этим кодом - возможно, кто-то уже сделал это за вас и выложил в виде какой-нибудь библиотеки. Но я бы на это не очень рассчитывал. - Adamos, нашёл на данном ресурсе метод вставки метаданных в PDF, при помощи слияния двух файлов. Команду, для exec():
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf no_marks.pdf pdfmarks
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=output.pdf no_marks.pdf pdfmarks
взял от туда. В плане вставки метаданных, всё прекрасно работает, но вот обнаружилась проблема, что после генерации из результирующего PDFа, могут пропадать картинки. Не подскажите в чём может быть проблема?
- JastaFly, в кривизне исходной PDF, возможно.
У меня не было случаев, чтобы GhostScript портил файлы при обработке, так что конкретнее не подскажу.
Можно же попробовать прогнать файл без замены метаданных - если и он сломается, то проблема не в них.
Да, и выполните эту команду в терминале без -dBATCH и -dNOPAUSE - пусть GS покажет проблемы, если они происходят в процессе. Скажем, для обработки картинки могло не найтись нужных фильтров... - Adamos,
в кривизне исходной PDF, возможно
Судя по всему Вы правы. Попробовал прогнать файл через консоль, как раз таки на проблемной странице получаю ошибки:
**** Error reading a content stream. The page may be incomplete. Output may be incorrect. **** Error: Form stream has unbalanced q/Q operators (too many q's) Output may be incorrect. **** Error reading a content stream. The page may be incomplete. Output may be incorrect. **** Error: File did not complete the page properly and may be damaged. Output may be incorrect.
**** Error reading a content stream. The page may be incomplete. Output may be incorrect. **** Error: Form stream has unbalanced q/Q operators (too many q's) Output may be incorrect. **** Error reading a content stream. The page may be incomplete. Output may be incorrect. **** Error: File did not complete the page properly and may be damaged. Output may be incorrect.
И итоговый отчёт:
**** This file had errors that were repaired or ignored. **** The file was produced by: **** >>>> iLovePDF <<<< **** Please notify the author of the software that produced this **** file that it does not conform to Adobe's published PDF **** specification. **** The rendered output from this file may be incorrect.
**** This file had errors that were repaired or ignored. **** The file was produced by: **** >>>> iLovePDF <<<< **** Please notify the author of the software that produced this **** file that it does not conform to Adobe's published PDF **** specification. **** The rendered output from this file may be incorrect.
- JastaFly, для получения дополнительной информации можно прогнать проблемный файл через бесплатный VeraPdf - но, скорее всего, по его выводу информации будет больше, чем понимания, что с ней делать ;)
- JastaFly, ну, и ребятам из iLovePDF можно подогнать этот файл и этот выхлоп, пусть разбираются, почему у них вывод кривой.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для редактирования метаданных в PDF файлах на PHP 8, вы можете использовать библиотеку FPDI. FPDI (Fettig PDF Document Import) позволяет импортировать существующие PDF документы в другие документы. Она также поддерживает изменение метаданных PDF файлов, таких как заголовок, автор, ключевые слова и другие.
Для начала установите библиотеку FPDI через Composer, используя следующую команду:
composer require setasign/fpdi
После установки библиотеки вы можете использовать следующий пример кода для редактирования метаданных в PDF файле:
require_once('vendor/autoload.php'); use setasign\Fpdi\Fpdi; $pdf = new Fpdi(); $pdf->AddPage(); // Установка метаданных $pdf->SetTitle('Новый заголовок'); $pdf->SetAuthor('Автор документа'); $pdf->SetSubject('Тема документа'); $pdf->SetKeywords('ключевые слова, для, поиска'); $pdf->Output('новый_документ.pdf', 'F');
Этот код создаст новый PDF файл с указанными метаданными. Вы можете также добавлять другие элементы в PDF файл, такие как текст, изображения и т.д., используя функционал FPDI.
Надеюсь, что это поможет вам редактировать метаданные в ваших PDF файлах на PHP 8 с помощью библиотеки FPDI.