当前位置: 代码网 > it编程>编程语言>Java > SpringBoot实现PDF转图片的代码示例

SpringBoot实现PDF转图片的代码示例

2024年08月11日 Java 我要评论
不是单页图片,是多页pdf转成一张图片的逻辑。我这里的场景是pdf转成图片之后返回给前端,前端再在图片上实现签字,并且可拖拽的逻辑,就是签订合同的场景。但是这里只写后端多页pdf转图片的逻辑。先说逻辑

不是单页图片,是多页pdf转成一张图片的逻辑。

我这里的场景是pdf转成图片之后返回给前端,前端再在图片上实现签字,并且可拖拽的逻辑,就是签订合同的场景。

但是这里只写后端多页pdf转图片的逻辑。

先说逻辑,后面直接上代码,大致分为以下几步:

  1. 读取pdf文件(我的代码里是将在线的url转成inputstream了)
  2. 按pdf的页面循环计算图片的宽度和高度,其中宽度为pdf最宽的那一页的宽度(毕竟有的pdf比较骚,可能一页是横的,一页是竖的),高度为所有页面加起来的高度
  3. 用graphics2d绘制
  4. 将graphics2d的绘制结果输出为图片(只要有outputstream都好说,我这里是输出成base64给前端了,没什么存起来的必要)

好了,直接上代码:

先在pom.xml导入依赖:

		<!--   pdf读取     -->
        <dependency>
            <groupid>org.apache.pdfbox</groupid>
            <artifactid>pdfbox</artifactid>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupid>org.apache.pdfbox</groupid>
            <artifactid>fontbox</artifactid>
            <version>2.0.1</version>
        </dependency>
	public string getsinglepicbase64contracts(string fileurl) throws ioexception {
        byte[] pdfbytes = httputil.createget(fileurl).execute().bodybytes();
        inputstream inputstream = new bytearrayinputstream(pdfbytes);
        pddocument doc = pddocument.load(inputstream);
        pdfrenderer pdfrenderer = new pdfrenderer(doc);
        list<bufferedimage> imagelist = new arraylist<>(doc.getnumberofpages());
        int maxwidth = 0;
        int totalheight = 0;
        for (int i = 0; i < doc.getnumberofpages(); i++) {
            bufferedimage image = pdfrenderer.renderimage(i, 1.25f);
            imagelist.add(image);
            if (image.getwidth() > maxwidth) {
                maxwidth = image.getwidth();
            }
            totalheight += image.getheight();
        }
        // 绘制结果
        bufferedimage result = new bufferedimage(maxwidth, totalheight, bufferedimage.type_int_rgb);
        graphics2d g2d = result.creategraphics();
        int nowheight = 0;
        for (bufferedimage bufferedimage : imagelist) {
        	// padding 为页面的左边距
            int padding = (maxwidth - bufferedimage.getwidth()) / 2;
            g2d.drawimage(bufferedimage, padding, nowheight, null);
            nowheight += bufferedimage.getheight();
        }
        bytearrayoutputstream outputstream =  new bytearrayoutputstream();
        imageio.write(result, "png", outputstream);
        string singlepicbase64 = "data:image/png;base64," + base64.encodebase64string(outputstream.tobytearray());
        return singlepicbase64;
    }

到此这篇关于springboot实现pdf转图片的代码示例的文章就介绍到这了,更多相关springboot pdf转图片内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com