zoukankan      html  css  js  c++  java
  • java 多图片转换PDF

      公司提了个小优化:因为有些图片是分开上传(十多张),然后需要打印,需要提供一次性能直接打印,而无需每张图片保存在打印(上传人员跟打印人员不是同一拨人),所以就希望能把多张图片全转换在一个PDF文件里。

      这里使用到了个工具类:

    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.5.10</version>
    </dependency>

      总的来说,还是比较简单:

    package com.example.zgz.demo;
    
    import com.itextpdf.text.Document;
    import com.itextpdf.text.Image;
    import com.itextpdf.text.Rectangle;
    import com.itextpdf.text.pdf.PdfWriter;
    
    import java.io.File;
    import java.io.FileOutputStream;
    
    /**
     * @author zhangguangze
     * @version v1.0
     * @project: zgz
     * @description: 这里描述类的用处
     * @copyright: © 2018
     * @company:
     * @date 2018/5/16 14:23
     */
    public class PdfUtil {
    
        private static String FILEPATH = "F:\testpdf\pdf\";
    
        /**
         *
         * @param fileName
         *            生成pdf文件
         * @param imagesPath
         *            需要转换的图片路径的数组
         */
        public static void imagesToPdf(String fileName, String imagesPath) {
            try {
                fileName = FILEPATH+fileName+".pdf";
                File file = new File(fileName);
                // 第一步:创建一个document对象。
                Document document = new Document();
                document.setMargins(0, 0, 0, 0);
                // 第二步:
                // 创建一个PdfWriter实例,
                PdfWriter.getInstance(document, new FileOutputStream(file));
                // 第三步:打开文档。
                document.open();
                // 第四步:在文档中增加图片。
                File files = new File(imagesPath);
                String[] images = files.list();
                int len = images.length;
    
                for (int i = 0; i < len; i++)
                {
                    if (images[i].toLowerCase().endsWith(".bmp")
                            || images[i].toLowerCase().endsWith(".jpg")
                            || images[i].toLowerCase().endsWith(".jpeg")
                            || images[i].toLowerCase().endsWith(".gif")
                            || images[i].toLowerCase().endsWith(".png")) {
                        String temp = imagesPath + "\" + images[i];
                        Image img = Image.getInstance(temp);
                        img.setAlignment(Image.ALIGN_CENTER);
                        // 根据图片大小设置页面,一定要先设置页面,再newPage(),否则无效
                        document.setPageSize(new Rectangle(img.getWidth(), img.getHeight()));
                        document.newPage();
                        document.add(img);
                    }
                }
                // 第五步:关闭文档。
                document.close();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args)
        {
            String name = "20001543";
            String imagesPath = "F:\testpdf\image";
            imagesToPdf(name, imagesPath);
        }
    }
  • 相关阅读:
    js前端分享功能
    git常用命令
    webstorm中.vue报错
    页面重绘重排
    浏览器渲染引擎总结
    javascript中的this总结
    cookie、session、sessionid 与jsessionid
    promise和Angular中的 $q, defer
    C++11之nullptr
    C++ 输入ctrl+z 不能再使用cin的问题
  • 原文地址:https://www.cnblogs.com/zgz21/p/9067224.html
Copyright © 2011-2022 走看看