14

我有一个将 SVG 用于交互式客户端thingamabob 的网站。我想提供下载完成输出的 PDF 的选项。我可以将最终的 SVG 输出传回服务器,在服务器上转换为 PDF,然后将其返回给客户端进行下载。

这需要在无头共享 linux 服务器上工作,安装或编译要么是巨大的痛苦,要么是不可能的。该网站是 PHP,因此理想的解决方案是 PHP,或者使用易于安装在共享网络服务器上的软件。可以使用 Python、perl 和 ruby​​,以及您在 linux 机器上可能期望的通常的东西。涉及 cairo、脚本 inkscape 或比“FTP it up”更复杂的安装的解决方案可能已经过时了。花钱大手大脚的,自然也出来了。由于这是一个共享服务器,内存和/或 CPU 饥渴的解决方案也被淘汰了,因为它们往往会被杀死;这或多或少排除了蜡染。

到目前为止,我最接近的是这个 XSL 转换,我可以从 PHP 驱动它,然后通过 ps2pdf(已经安装)喷射生成的 postscript。唯一的问题是它不支持 SVG 路径——如果支持,那就完美了。

StackOverflow 上有一堆或相关的问题,我已经阅读了所有这些问题,但它们都假设您可以安装东西,花钱,或两者兼而有之。

是否有人对此有现成的解决方案,或者我应该花一些停机时间尝试为该 XSL 转换添加路径支持?

谢谢,邓克

4

5 回答 5

16

我今天偶然发现了 TCPDF,如果我当时知道的话,这本来是完美的。它只是纯 PHP 类的集合,大多数东西没有外部依赖项。

它可以从头开始构建 PDF,并且您可以在其中包含几乎任何您想要的东西,包括 SVG(在许多其他东西中),如以下示例所示:

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

主要项目页面在这里:

http://www.tcpdf.org/

Sourceforge 页面在这里:

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

于 2010-06-29T09:15:33.233 回答
3

您可以使用Apache FOP免费 Batik SVG 工具包,该工具包具有转码器 api,可将 SVG 转换为 PDF。

下载链接

您将需要编写一点点java。这里有代码示例- 请注意,您需要将转码器设置为org.apache.fop.svg.PDFTranscoder而不是 Java。

你应该能够在不安装任何东西的情况下做到这一点 - 只需将 jar 拖到那里并运行脚本。我引用:

Batik 所需的所有其他库都包含在发行版中。因此,蜡染档案相当大,但在你下载它之后,你将不需要任何其他东西。

于 2010-01-28T14:23:35.500 回答
2

你看过imagemagick吗?我怀疑您还需要ghostscript来完成循环,这可能会使安装困难和性能成为问题。

于 2010-01-27T01:36:56.633 回答
2

我建议尝试一下princexml,它们提供了各种插件(包括一个用于PHP 的插件)并且可以从SVG/HTML/XML 输出PDF。

于 2010-01-27T11:31:01.370 回答
0

我在许多项目中使用过 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);
于 2017-08-17T07:48:18.367 回答