06:59 PHP. Создать multi-page PDF на основне набора SVG файлов |
Появилась интересная задача: как на основе SVG файла создать PDF. SVG файл должен содержать картинки с подписями и background (создаваться может в сторонней программе). Путем проб и ошибок выяснил: ImageMagic еще не умеет обрабатывать картинки при конвертации SVG, если они задаются относительным путем или ссылкой. Выбор пал на Inscape - открытый редактор векторной графики. Кроме графической оболочки он предоставляет для работы консоль с набором команд (что собственно и требовалось). Кроме того, он полностью кросс-платформенный. Устанавливаем его, если под Winndows то прописываем в Path путь к приложению. Теперь из PHP можно юзать следующим образом:
На Хабре предлагают не создавать PDF c помощью Inkscape, так как они большого размера и предлагают сначала конвертировать в PostScript формат, а потом использовать утилиту ps2pdf из пакета GhostScript для генерации непосредственно PDF. Размер такого файла действительно намного меньше чем прямая генерация PDF. Но у меня в задачи было условие создать много страничный PDF (inkscape и ps2pdf этого не умеют как оказалось). Потому я поступил проще: с помощью Inkscape я генерю отдельные PDF файлы, например с именами page1.pdf, page2.pdf, ...., pageN.pdf. Дальше я скачал утилиту pdftk, которая умеет генрить мульти-страничные PDF и многое другое. Более детально по этому вопросу смотрим тут. Пример использования:
Если необходимо, то теперь можем с помощью pdf2ps и ps2pdf утилит (пакет GhostScript) оптимизировать получившийся PDF (оптимизация ухудшает качество, и как по мне, может только для предварительного просмотра использоваться или для особых задач- когда клиент получает высокое разрешение картинки только за отдельную плату). Пример очень прост (незабываем, команды в ПХП прогоняем через оператор system или exec):
|
|
Всего комментариев: 0 | |