添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
耍酷的铁链  ·  HTMLElement:drop 事件 - ...·  3 月前    · 
暗恋学妹的小摩托  ·  mysql char 1 vs ...·  7 月前    · 
威武的南瓜  ·  [Android]StateMachine介 ...·  9 月前    · 
风度翩翩的排球  ·  mysql ...·  1 年前    · 

在共享的linux服务器上将SVG转换成PDF

14 人关注

我有一个网站,它使用SVG来做一个交互式的客户端东西。我想提供一个选项来下载完成的输出的PDF。我可以将最终的SVG输出传回服务器,在那里我想将其转换为PDF,然后将其返回给客户端供下载。

这需要在一个无头的共享linux服务器上工作,在那里安装或编译是一个巨大的痛苦,或者不可能。该网站是PHP的,所以理想的解决方案是PHP,或者使用容易安装在共享网络服务器上的软件。Python、perl和ruby都是可用的,还有你在linux盒子上可能期待的一般东西。涉及开罗、Inkscape脚本或比 "用FTP上传 "更复杂的安装的解决方案可能被排除。自然,花费大量的钱也是不可能的。由于这是一个共享服务器,内存和/或CPU饥饿的解决方案也被排除在外,因为它们往往会被杀死;这或多或少排除了Batik。

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

StackOverflow上有一堆或相关的问题,我都读过了,但他们都假设你可以安装东西,花钱,或两者兼而有之。

有没有人有现成的解决方案,或者我应该花些时间在XSL转换中添加路径支持?

linux
pdf
svg
pdf-generation
image-transcoding
Duncan Lock
Duncan Lock
发布于 2010-01-27
5 个回答
Duncan Lock
Duncan Lock
发布于 2017-08-17
已采纳
0 人赞同

我今天偶然发现了TCPDF,如果我当时知道它的话,它将是完美的选择。它只是一个纯粹的PHP类的集合,大多数东西都没有外部依赖性。

它可以从头开始建立PDF,你可以在其中包含几乎任何你想要的东西,包括SVG(在许多其他东西中),如这些例子所示。

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

主要项目页面在这里。

http://www.tcpdf.org/

Sourceforge页面在这里。

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

Alex Brown
Alex Brown
发布于 2017-08-17
0 人赞同

你可以使用 阿帕奇FOP 's free 蜡染 SVG工具箱,它有一个 转码器api 将SVG转换为PDF。

你将需要编写一小部分的java。 有一些代码例子 here - 注意你需要将转码器设置为 org.apache.fop.svg.PDFTranscoder 而不是Java。

你应该不需要在你的机器上安装任何东西就能做到这一点--只要把罐子拖到那里并运行一个脚本。 我引用一下。

All other libraries needed by 蜡染 are included in the distribution. As a consequence the 蜡染 archive is quite big, but after you have downloaded it, you will not need anything else.

注意,我自己没有直接使用过这个,但我做了一堆使用蜡染的docbook作品,效果非常好。
谢谢你的建议--我知道Batik(见问题),也想试试,但我已经有一个星期左右无法让xmlgraphics.apache.org加载,虽然 ismysiteup.org/check/xmlgraphics.apache.org 声称它在工作;不知道这是怎么回事。
Alex Brown
Alex Brown
发布于 2017-08-17
0 人赞同

你看了吗? 镜像管理 ? 我怀疑你还需要 ghostscript 来完成循环,这可能使安装难度和性能成为问题。

通过ImageMagick--它是可用的--进行光栅化处理(据说),所以你最终得到的是一个带有位图的PDF。我想要一个可扩展的基于矢量的PDF,它的优点是可无限扩展、可打印和文件大小很小。
我还用ImageMagick玩了一下,它确实可以光栅化,创建一个带有位图的PDF。为了将来参考,这很容易做到:转换test.svg test.pdf或像这样,如果你想指定输出分辨率:转换-密度1200 test.svg test.pdf为1200dpi,例如。不过这往往会产生相当大的pdf文件。
Erik Dahlström
Erik Dahlström
发布于 2017-08-17
0 人赞同

I'd suggest giving princexml 一个尝试,他们提供 各种附加组件 (包括一个用于PHP的),并能从SVG/HTML/XML输出PDF。

是的,我想有人会这样建议--但它的服务器许可证是3800美元--对这个来说,恐怕是太贵了。不过还是谢谢你的建议 :)
Abdur Rehman
Abdur Rehman
发布于 2017-08-17
0 人赞同

我曾用TCPDF ( http://www.tcpdf.org/ 在许多项目中,它几乎在每个使用情况下都能发挥作用。

这里是SVG的例子。 https://tcpdf.org/examples/example_058/

以下是可以帮助你的代码。