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);