SVG в PDF на общем сервере Linux - PullRequest
13 голосов
/ 27 января 2010

У меня есть веб-сайт, который использует SVG для интерактивной клиентской вещи. Я хотел бы предоставить возможность скачать PDF готового вывода. Я могу передать окончательный вывод SVG обратно на сервер, где я хочу преобразовать в PDF, а затем вернуть его клиенту для загрузки.

Это должно работать на безголовом общем Linux-сервере, где установка или компиляция является либо огромной болью, либо невозможной. Веб-сайт является PHP, поэтому идеальным решением будет PHP или использование программного обеспечения, которое легко устанавливается на общем веб-сервере. Доступны Python, Perl и Ruby, а также обычные вещи, которые вы можете ожидать от Linux. Решения, которые включают в себя cairo, сценарий inkscape или более сложную установку, чем «FTP it up», вероятно, уже вышли. Тратить большие суммы денег, естественно, тоже нет. Поскольку это общий сервер, решения, требующие памяти и / или ЦП, также отсутствуют, так как они могут быть убиты; это более или менее исключает батик.

Ближайшее, что у меня есть, это это XSL-преобразование , которое я могу вытолкнуть из PHP, а затем выпустить полученный PostScript через ps2pdf (который уже установлен). Единственная проблема с этим заключается в том, что он не поддерживает SVG-пути - если бы он это сделал, он был бы идеальным.

В StackOverflow есть несколько связанных вопросов, которые я прочитал, но все они предполагают, что вы можете либо устанавливать вещи, тратить деньги, либо и то и другое.

У кого-нибудь есть готовое решение для этого, или я должен просто потратить некоторое время на простое, пытаясь добавить поддержку путей к этому XSL-преобразованию?

Спасибо, Dunc

Ответы [ 5 ]

16 голосов
/ 29 июня 2010

Сегодня я наткнулся на TCPDF, который был бы идеальным для этого, если бы я знал об этом в то время.Это просто набор чистых классов PHP, для большинства вещей нет внешних зависимостей.

Он может создавать PDF-файлы с нуля, и вы можете включить в него практически все, что захотите, включая SVG (среди многих, многих других вещей), как показано в следующих примерах:

http://www.tcpdf.org/examples.php

Главная страница проекта находится здесь:

http://www.tcpdf.org/

Страница Sourceforge здесь:

http://sourceforge.net/projects/tcpdf/

3 голосов
/ 28 января 2010

Вы можете использовать Apache FOP free Batik SVG инструментарий, который имеет транскодер api для преобразования SVG в PDF.

ссылка для скачивания

Вам нужно будет написать чуть-чуть Java. Здесь есть примеры кода здесь - обратите внимание, вам нужно установить транскодер на org.apache.fop.svg.PDFTranscoder вместо Java.

Вы должны быть в состоянии сделать это, не устанавливая ничего на свой компьютер - просто перетащите туда банки и запустите скрипт. Я цитирую:

Все остальные библиотеки, необходимые Batik, включены в дистрибутив. Как следствие, архив Batik довольно большой, но после его загрузки вам больше ничего не понадобится.

2 голосов
/ 27 января 2010

Я бы предложил попробовать princexml , они предоставляют различные дополнения (включая одно для PHP) и могут выводить PDF из SVG / HTML / XML.

2 голосов
/ 27 января 2010

Вы смотрели на imagemagick ? Я подозреваю, что вам также нужно ghostscript для завершения цикла, что может затруднить установку и производительность.

0 голосов
/ 17 августа 2017

Я использовал 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);
...