1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > svg 转换为 pdf (batik 库+fop库)

svg 转换为 pdf (batik 库+fop库)

时间:2020-01-15 11:44:56

相关推荐

svg 转换为 pdf (batik 库+fop库)

目标:svg 转为的 pdf 时,pdf 里面的线条不能是不可编辑的简单图片,要是可以操作的线条

方案:Java 的 batik 库+fop库

提上 batik 库的官网 Apache(tm) Batik SVG Toolkit - a Java-based toolkit for applications or applets that want to use images in the Scalable Vector Graphics (SVG)/batik/强大个 batik 库本身 就能读取、创建 svg,同时 可以转为 png jpeg。。。

但如果需要转为 为可编辑的 pdf ,需要加入另外的库 ,即 fop 库。原文如下:

下面贴上代码:

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 SVGToPDF {public static void main(String[] args) {String input = "f:/a/1.svg";String out = "f:/a/1.pdf";try {long start = System.currentTimeMillis();TranscoderInput transcoderInput = new TranscoderInput(new FileInputStream(new File(input)));TranscoderOutput transcoderOutput = new TranscoderOutput(new FileOutputStream(new File(out)));Transcoder transcoder = new PDFTranscoder();transcoder.transcode(transcoderInput, transcoderOutput);long end = System.currentTimeMillis();System.out.println(end-start);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (TranscoderException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

下面贴上 涉及的 jar 包(直接下载即可):

apacheBatik.zip-其它文档类资源-CSDN下载

如果没有积分,也可以自己去一个个下载:

补充:

对于svg 内包含图片的情况,转换时,情况如下:

如果图片是以base64 方式嵌入,是没问题的。

如果是 url方式,转换时会报错,但不影响其他转换,只是 pdf 中没有图片而已

补充:

下面列出 maven 的pom

<project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>b</groupId><artifactId>b</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>batik</groupId><artifactId>batik-bridge</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-transcoder</artifactId><version>1.6</version></dependency><dependency><groupId>org.apache.xmlgraphics</groupId><artifactId>xmlgraphics-commons</artifactId><version>1.3.1</version></dependency><dependency><groupId>xml-apis</groupId><artifactId>xml-apis-ext</artifactId><version>1.3.04</version></dependency><!-- batik 库针对 导出 pdf 的扩展,需要自己放入本地 --><dependency><groupId>xml-apis</groupId><artifactId>xml-apis-ext</artifactId><version>1.3.04</version><scope>system</scope><systemPath>${project.basedir}/mylibs/fop.jar</systemPath> </dependency><dependency><groupId>batik</groupId><artifactId>batik-rasterizer</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-squiggle</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-svgpp</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-slideshow</artifactId><version>1.6</version></dependency><!-- 依赖库 --><dependency><groupId>batik</groupId><artifactId>batik-awt-util</artifactId><version>1.6</version></dependency><dependency> <groupId>batik</groupId><artifactId>batik-bridge</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-css</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-dom</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-gvt</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-parser</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-script</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-svg-dom</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-ext</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-transcoder</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-util</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-xml</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-gui-util</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-gvt</artifactId><version>1.6</version></dependency><dependency><groupId>batik</groupId><artifactId>batik-swing</artifactId><version>1.6</version></dependency><dependency><groupId>rhino</groupId><artifactId>js</artifactId><version>1.5R4.1</version></dependency><dependency><groupId>xerces</groupId><artifactId>xercesImpl</artifactId><version>2.5.0</version></dependency><dependency><groupId>xml-apis</groupId><artifactId>xmlParserAPIs</artifactId><version>2.0.2</version></dependency></dependencies></project>

fop.jar 没有maven地址,需要自己放入本地

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。