BufferedImage 、 Graphics 合成图片

本文提供了一个将PDF文件转换为图片的Java代码实例。通过使用PDFBox库,文章详细介绍了如何加载PDF文件、设置图片分辨率、合并多页PDF为一张图片,并最终输出为JPEG格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接上代码,关键位置有注释,有错误,不懂的地方请留言。

 @RequestMapping("/pdf")
    public void pdf2Image(HttpServletResponse response) throws IOException {
        PDDocument doc = PDDocument.load(new File("C:\\Users\\F\\Desktop\\foxmail.pdf"));
        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 += bim.getHeight();//图片高度  多张图片垂直排列  , 所以长度要叠加
        }
        BufferedImage imageNew = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics graphics = imageNew.getGraphics();
        //记录当前绘制页面高度
        int totalHeight = 0;
        pageCounter = 0;
        for (PDPage page : doc.getPages()) {
            BufferedImage bim = pdfRenderer.renderImageWithDPI(pageCounter++, 72, RGB);
            //
            graphics.drawImage(bim, 0, totalHeight, bim.getWidth(), bim.getHeight(), null);
            totalHeight += bim.getHeight();
        }
//       两种把图片解析成流都可以 ,第二种 需要额外导包,PDFbox的tool包
        JPEGCodec.createJPEGEncoder(response.getOutputStream()).encode(imageNew);
//        ImageIOUtil.writeImage(imageNew, "jpg", response.getOutputStream(), 72);
        doc.close();
    }

另外一种合成图片的方法: 点击打开链接



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值