栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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)http://xmlgraphics.apache.org/batik/强大个 batik 库本身 就能读取、创建 svg,同时 可以转为 png jpeg。。。

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

下面贴上代码:

由于没有 maven ,所以只能直接下载上面的 jar。


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 block
            e.printStackTrace();
        } catch (TranscoderException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

下面贴上 涉及的 jar 包:

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

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


补充:

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

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

 

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

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571789.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号