pdf转图片 然后使用 BufferedImage 合成多张图片

直接梭代码,关键位置有注释

 @RequestMapping("/pdf")
    public void pdf2Image(HttpServletResponse response) throws IOException {
        PDDocument doc = PDDocument.load(new File("C:\\Users\\F\\Desktop\\foxmail.pdf"));
        BufferedImage imageNew = null;
        PDFRenderer pdfRenderer = new PDFRenderer(doc);
        int pageCounter = 0;
        int width = 0;
        int height = 0;
        for (PDPage page : doc.getPages()) {
            //dpi为缩放参数,越小图片越模糊
            BufferedImage bim = pdfRenderer.renderImageWithDPI(pageCounter++, 72, RGB);
            width = width > bim.getWidth() ? width : bim.getWidth();//图片宽度
            height = height > bim.getHeight() ? height : bim.getHeight();//图片高度
        }
        int count = doc.getPages().getCount();
        //多张图片垂直排列  , 所以长度要叠加
        imageNew = new BufferedImage(width, height * count, BufferedImage.TYPE_INT_RGB);
        pageCounter = 0;
        for (PDPage page : doc.getPages()) {
            BufferedImage bim = pdfRenderer.renderImageWithDPI(pageCounter++, 72, RGB);
            int w = bim.getWidth();//图片宽度
            int h = bim.getHeight();//图片高度
            int[] imageArrayOne = new int[width * height];
            imageArrayOne = bim.getRGB(0, 0, w, h, imageArrayOne, 0, w);
            /*
            * 第三,第四参数,不是终点位置,而是要填充内容的 宽  高
            * */
            imageNew.setRGB(0,
                    height * (pageCounter - 1),
                    w,
                    h,
                    imageArrayOne, 0, w);
//            Graphics graphics = bim.getGraphics();
//            graphics.drawImage();
        }
        ImageIOUtil.writeImage(imageNew, "jpg", response.getOutputStream(), 72);
        //如果纯文字  可以使用这个方法  text/html   表格样式没有了
        /*PDFText2HTML pdfText2HTML = new PDFText2HTML();
        pdfText2HTML.writeText(doc,response.getWriter());*/
        doc.close();
//        JPEGCodec.createJPEGEncoder(response.getOutputStream()).encode();
    }

用到了pdfbox开源框架,pom需要添加

<dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.11</version>
        </dependency>
        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox-tools</artifactId>
            <version>2.0.11</version>
        </dependency>


另一种合成图片的方法:

点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值