svg完美转换pdf用php,将SVG转换为PDF

感谢Adrian展示了Batik光栅器API应该如何使用。 但是,我需要一个更轻量级的解决scheme—我不能写入临时文件,而且我想减less依赖关系。 所以,从他指出的方法开始,我find了一种方法来访问较低级别的代码来进行转换,而不是别的。

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import org.apache.batik.transcoder.Transcoder; import org.apache.batik.transcoder.TranscoderException; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder.TranscoderOutput; import org.apache.fop.svg.PDFTranscoder; public class Test { public static void main(String[] argv) throws TranscoderException, FileNotFoundException { Transcoder transcoder = new PDFTranscoder(); TranscoderInput transcoderInput = new TranscoderInput(new FileInputStream(new File("/tmp/test.svg"))); TranscoderOutput transcoderOutput = new TranscoderOutput(new FileOutputStream(new File("/tmp/test.pdf"))); transcoder.transcode(transcoderInput, transcoderOutput); } }

编译和运行命令是

javac -cp batik-rasterizer.jar -d build Test.java java -cp build:batik-rasterizer.jar Test

重要的一点是, TranscoderInput和TranscoderOutput可以处理任何InputStream和OutputStream ,而不仅仅是文件stream。 请注意,其中一个构造函数需要一个org.w3c.dom.Document ,这意味着您甚至不需要将SVG DOM序列化为SVGstring,从而节省了额外的步骤。

与高级API不同,此版本也不会向stdout / stderr写入任何内容。

对于JPEG,PNG或TIFF输出,请将org.apache.fop.svg.PDFTranscoderreplace为org.apache.batik.transcoder.image.JPEGTranscoder , PNGTranscoder或TIFFTranscoder (请注意,这些光栅格式位于不同的包中)。

(我不太清楚Java是如何findorg.apache.batk.transcoder.*和org.apache.fop.svg.PDFTranscoder类的,因为我没有在batik-rasterizer.jar看到它们。

编辑:

虽然简单的命令行编译只适用于batik-rasterizer.jar ,但它正在做某种类加载器的魔术来find所有必要的类。 在更现实的情况下(使用Ant构build项目),您必须手动find类。 可以从Batik项目的 fop-1.1.zip和FOP项目的 fop-1.1.zipfind它们。 从蜡染,你需要与batik-transcoder.jar编译和运行

batik-transcoder.jar

batik-anim.jar

batik-awt-util.jar

batik-bridge.jar

batik-css.jar

batik-dom.jar

batik-ext.jar

batik-gvt.jar

batik-parser.jar

batik-script.jar

batik-svg-dom.jar

batik-util.jar

batik-xml.jar

xml-apis-ext.jar

从FOP开始,你需要用fop.jar编译并运行

fop.jar

avalon-framework-4.2.0.jar

xmlgraphics-commons-1.5.jar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值