java实现pdf根据内容定位插入图片

1.导入jar包

<dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.1.12</version><type>pom</type></dependency>

2.实现类

package test;import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.parser.PdfDocumentContentParser;
import com.itextpdf.kernel.pdf.canvas.parser.listener.IPdfTextLocation;
import com.itextpdf.kernel.pdf.canvas.parser.listener.RegexBasedLocationExtractionStrategy;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Image;import java.util.Collection;public class Test {public static void main(String[] args)  throws Exception {String input = "D:\\te1.pdf";//通过指定pdf文件名,指定关键字,和指定的pdf文件的待处理页数做参数getKeyWordsLocation(input, "甲方:", 1);}/*** 得到关键字位置* @param input 源文件* @param KEY_WORD 关键字* @param pageNum 文档页数*/public static void getKeyWordsLocation(String input, String KEY_WORD, int pageNum) {RegexBasedLocationExtractionStrategy strategy = new RegexBasedLocationExtractionStrategy(KEY_WORD);try {//得到需要插入的图片ImageData imageData = ImageDataFactory.create("D:\\1.jpg");//核心思路为对PdfDocument对象采用某种Strategy,这里使用RegexBasedLocationExtractionStrategyPdfReader pr = new PdfReader(input);//生成新的PDF文件PdfDocument pd = new PdfDocument(pr, new PdfWriter("D:\\test.pdf"));//pageNum = pd.getNumberOfPages();Document document = new Document(pd);PdfDocumentContentParser pdcp = new PdfDocumentContentParser(pd);//文本内容具体解析借助使用PdfDocumentContentParser类(实质使用PdfCanvasProcessor进行处理), 对待处理页面装配合适策略RegexBasedLocationExtractionStrategy regexStrategy = pdcp.processContent(pageNum, strategy);//获取处理结果Collection<IPdfTextLocation> resultantLocations = strategy.getResultantLocations();//自定义结果处理if (!resultantLocations.isEmpty()) {for (IPdfTextLocation item : resultantLocations) {Rectangle boundRectangle = item.getRectangle();System.out.println(item.getText());System.out.println("关键字“" + KEY_WORD + "” 的坐标为 x: " + boundRectangle.getX() + "  ,y: " + boundRectangle.getY());Image image = new Image(imageData).scaleAbsolute(70, 20).setFixedPosition(pageNum, boundRectangle.getRight() + 5f, boundRectangle.getBottom());document.add(image);}document.close();} else {System.out.println("结果为空");}pr.close();pd.close();} catch (Exception e) {System.err.println("读取文件失败!");e.printStackTrace();}}}

3.实现效果

【java】java实现pdf根据内容定位插入图片相关推荐

  1. CSS3内容处理插入图片

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...

  2. Java实现读取pdf文件内容(how to read pdf in java)

    本文将利用pdfbox实现pdf文件内容的读取. 环境: 1. eclipse oxygen 2. maven 3.3 3. jdk 1.8 1.通过eclipse创建maven项目,最终项目目录如下 ...

  3. java pdf扫描文件内容,java 怎么读取PDF文件内容(按页读取)

    Java code// 搜索pdf public List searchPdfFile(String keyword,List items) throws IOException { File f = ...

  4. java生成二维码,中间插入图片,以及二维码解析

    在实际的项目中有用到生成二维码的功能,生成的二维码中间可以插入一张图片. 先来效果图 (这是我事先准备了一张图片 a)---- 生成的二维码的效果图 (二维码中间插入的图片就是上面保存的图片a) 好了 ...

  5. java使用poi操作word模板,插入图片、段落、表格

    java使用poi操作word插入图片.段落.表格 其他链接 准备工作 创建word模板.docx文件 编写模板格式.xml文件 java上手poi maven依赖 使用到的包 具体应用 对应封装方法 ...

  6. java poi在word文档中插入图片后文件无法打开

    错误情况 POI生成的word文档包含图片时用office打开失败,提示错误.但是用wps却可以打开. 原因分析 这是因为poi本身的问题,单纯的插入图片是不显示的,可以使用如下处理方式createP ...

  7. 使用itext对pdf指定文字位置插入图片

    使用java开源itext库对pdf进行操作,分主要分两步先查找指定文字位置,然后再在指定位置插入图片. 1.查找指定文字的坐标位置 这里主要通过实现类RenderListener来完成查找坐标位置 ...

  8. 使用icepdf将pdf首页内容转成图片

    说明: 1.图片命名规则:给定的文件所属目录+给定的文件的名称+.+png,即同目录下同名称的png图片 2.基本业务: a.判断同目录下同名称的png图片是否存在,若已经存在直接return b.若 ...

  9. PDF内根据关键字插入图片

    根据pdf内指定关键字的坐标插入图片,实现分为两个步骤. 1:查找出dpf内所有的关键字的坐标和关键字所在的页数. 2:根据查到的关键字位置出入图片: 引入 compile('com.itextpdf ...

  10. 第二章: 第二课 内容处理-插入图片

    我们在网上经常会看到最新的文章列表标题后面都会有个"推荐","New"等诸如此类的图片,如下图: 上节课,我们学习了content属性配合选择器:before和 ...

最新文章

  1. 浅析「扣减库存」的方案设计
  2. 新概念 Lesson 7 A new dress 定冠词、不定冠词
  3. JZOJ 4933. 【NOIP2017提高组模拟12.24】C
  4. Trunk Vlan
  5. acill排序 java_Map集合按照ASCII码从小到大(字典序)排序--JAVA
  6. String类型转换的三种方法分析
  7. javascript 操作服务器 文件,使用javascript读取服务器文件
  8. 大一微积分笔记整理_大一上学期微积分高数复习要点
  9. 实用分享-在线公式编辑器(可导图识别)
  10. 10.24程序员节日快乐
  11. 为什么学小易显示服务器开小差,学小易搜题APP
  12. PC端如何使用ITunes无线连接ios手机
  13. stm32f107基本资料
  14. 从普通程序员到估值上亿的公司老板,他只用了1年!
  15. Microsoft Visual Studio 2019 美化之——透明化窗口 Microsoft Visual Studio 2019 C/C++ Windows 下重量级编辑器 Editor
  16. 华为2019开发者大会内容小记
  17. SuperMap iDesktop .NET 9D(2019)产品白皮书
  18. 密码学Kerberos协议理解
  19. 拖延症患者的自我反省
  20. Linux终端光标的调整方法

热门文章

  1. 七月算法-P2 概率论与数理统计(1)
  2. 双因素认证(two-factor authentication)
  3. 码怪之程序员的日常语录
  4. 4.16 期货每日早盘操作建议
  5. 高端玩家分析 DNF大搬运后TOP10大工作引荐
  6. js 判断2月份多少天
  7. 内网IP可以申请SSL证书吗
  8. 问卷调查报告html,问卷调查报告格式
  9. html5圆形图片自动旋转,纯CSS3圆形图片鼠标滑过旋转翻盖动画特效
  10. 2022-2028年全球与中国MEMS话筒行业竞争格局与投资战略研究