java实现向PDF中插入图片

这篇具有很好参考价值的文章主要介绍了java实现向PDF中插入图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、场景

二、案例结果

三、环境准备

四、引入的第三方jar包坐标

五、思路

六、单元测试代码

七、总结



一、场景

        现有一个PDF文件、需向PDF中插入图片

二、案例结果

java实现向PDF中插入图片

三、环境准备

             1、  maven3.8.6、jdk17

             2、PDF文件和一张图片

四、引入的第三方jar包坐标

        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.1</version>
        </dependency>

五、思路

                1、得到PDF文件流对象【可以时从文件中读取、也可以是由其他方式得到】。

                 2、转为Document对象。

                 3、再由Document得到Page对象。

                4、由Document对象和Page创建pageStream。

                5、由Document对象和图片路径创建image对象。

                6、由pageStream绘制image的位置及大小。

                7、将Document保存到输出路径。

注意:1、流一般先开后关。2、a流依赖b流。先关a再关b。

六、单元测试代码


    public static String PATH  ="C:\\Users\\HP\\Desktop\\invoice\\temp\\input.pdf";
    public static String PNG_PATH="C:\\Users\\HP\\Desktop\\invoice\\temp\\input.png";
    public static String OUT_PATH="C:\\Users\\HP\\Desktop\\invoice\\temp\\output.pdf";

    @Test
    public void modifyPdf() throws IOException {

 //        1、获得PDF文件流对象
        FileInputStream pdfInputStream = new FileInputStream(PATH);
//        2、得到PDF文档对象
        PDDocument  pdDocument = PDDocument.load(pdfInputStream);
//        3、由Document得到Page对象
        PDPage page = pdDocument.getPage(0);
//        4、通过图片路径和PDF文档对象得到图片image对象
        PDImageXObject image = PDImageXObject.createFromFile(PNG_PATH, pdDocument);
//        5、创建pageStream对象
        PDPageContentStream pageStream = new PDPageContentStream(pdDocument, page,PDPageContentStream.AppendMode.APPEND,false,false);

        /**
         * 可优化位置
         */
//   6、pageStream对象绘制图片位置及大小,已PDF文件右下角为原点(x,y)是图片左下角左边,width、height是图片的长和宽
        pageStream.drawImage(image, 450, 700,50,50);
        pageStream.close();
//    7、保存PDF到指定路劲
        pdDocument.save(OUT_PATH);
//      8、关闭流
        pdDocument.close();
        pdfInputStream.close();
    }

java实现向PDF中插入图片

        缺点:1、图片区域的内容将会被覆盖。

七、总结

    1、 若是在真实项目中是取不到绝对路径的、通常用的以上下文路径拼接,以下是获取项目上下文路径的一种方式。

  public static String CONTENT_PATH=null;
    
    static {
        try {
            CONTENT_PATH = ResourceUtils.getURL("").getPath();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

2、真实场景中、需要浏览器端拿到响应结果并下载PDF、所以会将修改后的PDF作为httpServletResponse的OutputStream返回给浏览器。可以直接加载修改后的PDF文件得到FileInputStream对象,copy给OutputStream。

        FileInputStream inputStream = new FileInputStream(OUT_PATH);
        ServletOutputStream outputStream = response.getOutputStream();
        IOUtils.copy(inputStream,outputStream);

3、若是下载、需要将下载的文件名、类型、字符集等也相应给浏览器。

        String substring = PATH.substring(PATH.length() - 4);
        System.err.println(substring);
        String filename ="output"+substring;
        ServletContext servletContext = request.getServletContext();
        String mimeType = servletContext.getMimeType(PATH);
        response.setContentType(mimeType);
        response.setHeader("Content-Disposition","attachment;filename="+     URLEncoder.encode(filename, StandardCharsets.UTF_8));

java实现向PDF中插入图片java实现向PDF中插入图片

也可以暂时将inputStream对象先转为byte[] bytes,由其他业务模块处理该bytes后、再具体响应给浏览器。

4、若创建了temp.pdf、temp.png临时接收PDF和图片、为避免占用内存或者缓存问题、方法调用后应将temp.pdf、temp.png删除。

.文章来源地址https://www.toymoban.com/news/detail-464100.html

//   删除生成的临时文件temp.pdf、temp.png
        File pdfFile = new File(CONTEXT_PATH + "temp.pdf");
        File pngFile = new File(CONTEXT_PATH + "temp.png");
        if(pdfFile.exists()){
            pdfFile.delete();
        }
        if(pngFile.exists()){
            pngFile.delete();

        }

到了这里,关于java实现向PDF中插入图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java实现图片转PDF

    某w*s图片转PDF还要收费,简直不讲武德!我啪的一下,很快啊,一段代码搞定! 引入pom依赖 工具类

    2024年01月15日
    浏览(55)
  • JAVA 实现PDF转图片格式

    依赖: pdf存放路径 正文开始: pdf转换多张图片、长图 展示效果: 附加:小程序预览wxml代码

    2024年02月06日
    浏览(42)
  • pdf转图片【java版实现】

    引入需要导入到项目中的依赖,如下所示: pdf转图片的工具类如下所示,直接拷贝到项目即可 执行工具类中的main方法就行,会将pdf文件转换成多张图片到同级目录中。

    2024年02月13日
    浏览(40)
  • JAVA 实现PDF转图片(spire.pdf.free版)

    1. 引入 jar 包 导入方法1: 手动引入。将Free Spire.PDF for Java下载到本地,解压,找到lib文件夹下的Spire.PDF.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序:  导入方法2:如果您想通过 Maven安装,则可以在 pom.xml 文件中添加以下代码导入 JAR 文件。 1 2 3 4 5

    2024年02月05日
    浏览(39)
  • JAVA 实现PDF转图片(pdfbox版)

    依赖: pdf存放路径 正文开始: pdf转换多张图片、长图 展示效果: 附加:小程序预览wxml代码 依赖: pdf存放路径 正文开始: pdf转换多张图片、长图

    2024年02月06日
    浏览(55)
  • JAVA实现向Word模板中插入Base64图片和数据信息

    在服务端提前准备好Word模板文件,并在用户请求接口时服务端动态获取图片。数据等信息插入到模板当中,然后返回包含数据信息的Word文件流。 在需要插入图片的地方使用:{{@参数名}},文本信息使用:{{参数名}},进行占位,占位格式将会被保留,经过处理后格式不变 将准

    2024年01月19日
    浏览(35)
  • JavaScript string对象(属性,方法)获取图片后缀案例 输入和输出结果转换形式案例

    一、创建string对象 var strOb = new String(\\\"abcefg\\\"); var strOb = String(\\\"abcefg\\\"); var strOb = \\\"abcefg\\\"; 二、属性 length    (字符串长度) 三、方法 1、子字符串位置 indexOf(string, [ index]) string : 查找的字符串的内容,必填项 index:开始查找位置,可有可无 返回值:返回值是查找到的子字符串的位

    2024年02月05日
    浏览(53)
  • PDF二维码识别,PDF转图片再识别二维码java实现

    实现步骤: 1.使用icepdf把pdf转化为图片 2.使用google的zxing识别图片中的二维码 包引用 代码部分,一个类几个方法就实现了,还是比较简单

    2024年03月15日
    浏览(78)
  • java实现图片、word、pdf等多文件融合到一个pdf(word转pdf)

    本文主要介绍了srpingboot如何将 jpg、jpeg、png、pdf、docx、doc六种格式文件合并输出成一个pdf文件 以及 word文档如何转换为pdf ,关键是 开源免费 在日常工作学习中免不了会涉及到将多种格式的文件合并为一个pdf或者是将word文档、ppt、excel等转换为pdf。废话不多说,直接上代码

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包