SVG для PDF на общем сервере linux
У меня есть веб-сайт, который использует SVG для интерактивной клиентской стороны thingamabob. Я хотел бы предоставить возможность загрузить PDF готовой продукции. Я могу передать окончательный вывод SVG обратно на сервер, где я хочу конвертировать в PDF, а затем вернуть его клиенту для загрузки.
Это нужно будет работать на безголовом общем сервере Linux, где установка или компиляция либо огромная боль, либо невозможность. Веб-сайт представляет собой PHP, поэтому идеальным решением будет PHP или использовать программное обеспечение, которое легко устанавливается на общий веб-сервер. Доступны Python, perl и ruby, а также обычные вещи, которые вы можете ожидать в окне linux. Решения, которые связаны с каиром, сценарием inkscape или установкой сложнее, чем "FTP it up", вероятно, отсутствуют. Естественно, тратятся большие суммы денег. Поскольку это общий сервер, голодные решения с памятью и/или процессорами также отсутствуют, так как они будут убиты; это более или менее исключает Батик.
Ближайшее, что у меня до сих пор, это преобразование XSL, которое я могу управлять с PHP, а затем сжимать полученный постскрипт через ps2pdf ( который уже установлен). Единственная проблема заключается в том, что он не поддерживает SVG-пути - если бы это было так, было бы идеально.
В StackOverflow есть куча или связанные вопросы, все из которых я прочитал, но все они предполагают, что вы можете либо установить материал, потратить деньги, либо и то, и другое.
У кого-нибудь есть готовое решение для этого, или я просто потрачу некоторое время простоя, чтобы добавить поддержку путей к этому преобразованию XSL?
Спасибо,
Dunc
Ответы
Ответ 1
Сегодня я споткнулся о TCPDF, который был бы идеальным для этого, если бы я знал об этом в то время. Это просто набор чистых классов PHP, никаких внешних зависимостей для большинства вещей.
Он может создавать PDF с нуля, и вы можете включить в него почти все, что хотите, включая SVG (среди многих и многих других), как показано в этих примерах:
http://www.tcpdf.org/examples.php
Главная страница проекта находится здесь:
http://www.tcpdf.org/
Страница Sourceforge находится здесь:
http://sourceforge.net/projects/tcpdf/
Ответ 2
Вы можете использовать Apache FOP бесплатно Batik Инструмент SVG, который имеет transcoder api для преобразования SVG в PDF.
ссылка для скачивания
Вам нужно будет написать маленький бит java. Примеры кода здесь - обратите внимание, что вам нужно будет установить транскодер на org.apache.fop.svg.PDFTranscoder
вместо Java.
Вы должны сделать это, не устанавливая ничего на своем компьютере - просто перетащите банки там и запустите script. Я цитирую:
Все остальные библиотеки, необходимые Batik, включены в дистрибутив. Как следствие, архив Батика довольно большой, но после его загрузки вам больше ничего не понадобится.
Ответ 3
Вы посмотрели imagemagick? Я подозреваю, что вам нужен ghostscript для завершения цикла, что может затруднить установку и производительность установки.
Ответ 4
Я предлагаю дать princexml попробовать, они обеспечивают различные аддоны (включая один для PHP) и могут выводить PDF из SVG/HTML/XML.
Ответ 5
Я использовал TCPDF (http://www.tcpdf.org/) во многих проектах и работает почти в каждом случае.
Вот пример SVG: https://tcpdf.org/examples/example_058/
и следующий код, который может вам помочь:
$pdf->ImageSVG($file='images/testsvg.svg', $x=15, $y=30, $w='', $h='', $link='http://www.tcpdf.org', $align='', $palign='', $border=1, $fitonpage=false);
$pdf->ImageSVG($file='images/tux.svg', $x=30, $y=100, $w='', $h=100, $link='', $align='', $palign='', $border=0, $fitonpage=false);