使用batik将svg文件转pdf

batik下载地址
https://xmlgraphics.apache.org/batik/download.html
下载完成后将相应jar包导入项目

    @Test
    public void testPDF() throws Exception {
//        File f = new File("src/ceshi.svg");        
        File f = new File("src/0008.svg");
        convertSvgFile2Pdf(f);
    }

    //svg文件转pdf    
    public static void convertSvgFile2Pdf(File file) throws IOException {
        InputStream inputStream = new FileInputStream(file);
        OutputStream outputStream = new FileOutputStream(new File("D:\\sun.pdf"));
        outputStream = new BufferedOutputStream(outputStream);
        try {
            TranscoderOutput transcoderOutput = new TranscoderOutput(outputStream);
            TranscoderInput transcoderInput = new TranscoderInput(inputStream);
//            Transcoder transcoder = new PNGTranscoder();
            // 转png            
            Transcoder transcoder = new PDFTranscoder();           
            transcoder.transcode(transcoderInput, transcoderOutput);       
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            inputStream.close();
            outputStream.close();
        }
    }
	//字符串转pdf,svg文件的字符串形式
    public static void convertSvgString2Pdf(String pageStr) throws IOException {
        ByteArrayInputStream inputStream = new ByteArrayInputStream(pageStr.getBytes());
        OutputStream outputStream = new FileOutputStream(new File("D:\\sun.pdf"));
        outputStream = new BufferedOutputStream(outputStream);
        try {
            TranscoderOutput transcoderOutput = new TranscoderOutput(outputStream);
            TranscoderInput transcoderInput = new TranscoderInput(inputStream);
            //            Transcoder transcoder = new PNGTranscoder();
            // 转png            
            Transcoder transcoder = new PDFTranscoder();
            transcoder.transcode(transcoderInput, transcoderOutput);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            inputStream.close();
            outputStream.close();
        }
    }

多张图片转PDF

/**
     * @param outPdfFilepath 生成pdf文件路径
     * @param imageFiles     需要转换的图片File类list,按list的顺序合成图片
     */
    public static void imagesToPdf(String outPdfFilepath, List<File> imageFiles) throws Exception {

        File file = new File(outPdfFilepath);
        // 第一步:创建一个document对象。
        Document document = new Document();
        document.setMargins(0, 0, 0, 0);
        // 第二步:创建一个PdfWriter实例,
        PdfWriter.getInstance(document, new FileOutputStream(file));
        // 第三步:打开文档。
        document.open();
        // 第四步:在文档中增加图片。
        for (File imgFile : imageFiles) {
            if (imgFile.getName().toLowerCase().endsWith(".bmp")
                    || imgFile.getName().toLowerCase().endsWith(".jpg")
                    || imgFile.getName().toLowerCase().endsWith(".jpeg")
                    || imgFile.getName().toLowerCase().endsWith(".gif")
                    || imgFile.getName().toLowerCase().endsWith(".png")) {
                String temp = imgFile.getAbsolutePath();
                Image img = Image.getInstance(temp);
                img.setAlignment(Image.ALIGN_CENTER);
//                img.scaleAbsolute(597, 844);// 直接设定显示尺寸
                // 根据图片大小设置页面,一定要先设置页面,再newPage(),否则无效
                document.setPageSize(new Rectangle(img.getWidth(), img.getHeight()));
//                document.setPageSize(new Rectangle(597, 844));
                document.newPage();
                document.add(img);
            }
        }
        // 第五步:关闭文档。
        document.close();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Batik是一个Java开发的SVG工具库,可以将SVG文件换为各种图形格式,其中包括PDFSVG(可缩放矢量图形)是一种基于XML语法的图形格式,旨在描述二维矢量图形。由于SVG是一种矢量图形格式,因此它可以无限缩放而不会失去其清晰度。而PDF(便携式文档格式)是一种跨平台的文档格式,旨在以可靠和可重复的方式呈现文档。 要将SVG文件换为PDF文件,可以使用Batik库中的一个名为"Transcoder"的类。利用Transcoder,开发者可以轻松地将SVG文件换为PDF格式。以下是一个使用Batik Transcoder的简单示例: 1. 导入Batik库: ```java 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.batik.transcoder.pdf.PDFTranscoder; ``` 2. 创建一个Transcoder对象: ```java Transcoder transcoder = new PDFTranscoder(); ``` 3. 从SVG文件中创建一个TranscoderInput对象: ```java TranscoderInput input = new TranscoderInput(new FileInputStream(new File("input.svg"))); ``` 4. 从PDF文件中创建一个TranscoderOutput对象: ```java TranscoderOutput output = new TranscoderOutput(new FileOutputStream(new File("output.pdf"))); ``` 5. 执行换: ```java try { transcoder.transcode(input, output); } catch (TranscoderException ex) { ex.printStackTrace(); } ``` 通过Batik库,将SVG文件换为PDF文件变得非常简单。无论您是为Web应用程序创建静态图像还是将SVG图像添加到PDF文件中,Batik库都提供了功能强大而灵活的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值