• pdf转成图片


    http://blog.csdn.net/wydhao123/article/details/51596028

    jar commons-logging.jar、 pdfbox-2.0.1.jar、fontbox-2.0.1.jar

    import java.awt.image.BufferedImage;  
    import java.io.ByteArrayOutputStream;  
    import java.io.File;  
    import java.io.FileOutputStream;  
    import java.util.ArrayList;  
    import java.util.List;  
      
      
    import javax.imageio.ImageIO;  
      
      
    import org.apache.pdfbox.pdmodel.PDDocument;  
    import org.apache.pdfbox.rendering.ImageType;  
    import org.apache.pdfbox.rendering.PDFRenderer;  
      
      
    public class PDFBOXCreate {  
      
      
        public static void main(String[] args)throws Exception {  
            long start = System.currentTimeMillis();  
            String filepath = "D:/Users/ex-wangyide001/workspace/testsrc/1.pdf";  
            PDDocument document = new PDDocument();  
            File pdfFile = new File(filepath);  
            document = PDDocument.load(pdfFile, (String)null);  
            int size = document.getNumberOfPages();  
            List<BufferedImage> piclist = new ArrayList();   
            for(int i=0 ; i < size; i++){  
                BufferedImage  image = new PDFRenderer(document).renderImageWithDPI(i,130,ImageType.RGB);  
                piclist.add(image);  
            }  
            document.close();  
            yPic(piclist,"D:/Users/ex-wangyide001/workspace/testsrc/PDFBox1.jpg");  
           /* FileOutputStream out = new FileOutputStream("D:/Users/ex-wangyide001/workspace/testsrc/yanglaoxian/PDFBox-"+i+".jpg"); 
            ImageIO.write(image, "jpg", out); 
            out.close();*/  
            long end = System.currentTimeMillis();  
            System.out.println(end-start);  
        }  
          
          
        /** 
         * 将宽度相同的图片,竖向追加在一起 ##注意:宽度必须相同 
         *  
         * @param piclist 
         *            文件流数组 
         * @param outPath 
         *            输出路径 
         */  
        public static void yPic(List<BufferedImage> piclist, String outPath) {// 纵向处理图片  
            if (piclist == null || piclist.size() <= 0) {  
                System.out.println("图片数组为空!");  
                return;  
            }  
            try {  
                int height = 0, // 总高度  
                width = 0, // 总宽度  
                _height = 0, // 临时的高度 , 或保存偏移高度  
                __height = 0, // 临时的高度,主要保存每个高度  
                picNum = piclist.size();// 图片的数量  
                File fileImg = null; // 保存读取出的图片  
                int[] heightArray = new int[picNum]; // 保存每个文件的高度  
                BufferedImage buffer = null; // 保存图片流  
                List<int[]> imgRGB = new ArrayList<int[]>(); // 保存所有的图片的RGB  
                int[] _imgRGB; // 保存一张图片中的RGB数据  
                for (int i = 0; i < picNum; i++) {  
                    buffer = piclist.get(i);  
                    heightArray[i] = _height = buffer.getHeight();// 图片高度  
                    if (i == 0) {  
                        width = buffer.getWidth();// 图片宽度  
                    }  
                    height += _height; // 获取总高度  
                    _imgRGB = new int[width * _height];// 从图片中读取RGB  
                    _imgRGB = buffer  
                            .getRGB(0, 0, width, _height, _imgRGB, 0, width);  
                    imgRGB.add(_imgRGB);  
                }  
                _height = 0; // 设置偏移高度为0  
                // 生成新图片  
                BufferedImage imageResult = new BufferedImage(width, height,  
                        BufferedImage.TYPE_INT_BGR);  
                for (int i = 0; i < picNum; i++) {  
                    __height = heightArray[i];  
                    if (i != 0)  
                        _height += __height; // 计算偏移高度  
                    imageResult.setRGB(0, _height, width, __height, imgRGB.get(i),  
                            0, width); // 写入流中  
                }  
                File outFile = new File(outPath);  
                ByteArrayOutputStream out = new ByteArrayOutputStream();  
                ImageIO.write(imageResult, "jpg", out);// 写图片  
                byte[] b = out.toByteArray();  
                FileOutputStream output = new FileOutputStream(outFile);  
                output.write(b);  
                out.close();  
                output.close();  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
    }
  • 相关阅读:
    easyui combo自动高度(下拉框空白问题)
    log4net
    asp.net mvc 生成条形码
    Kubernetes 初探
    美国最顶级的投资机构在关注什么
    Ansible--01
    第一章 进入java的世界
    正则表达式
    zabbix接口调用注意事项--Python
    Docker+K8S实践
  • 原文地址:https://www.cnblogs.com/weixiaole/p/5948974.html
Copyright © 2020-2023  润新知