【java】java实现pdf根据内容定位插入图片
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根据内容定位插入图片相关推荐
- CSS3内容处理插入图片
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...
- Java实现读取pdf文件内容(how to read pdf in java)
本文将利用pdfbox实现pdf文件内容的读取. 环境: 1. eclipse oxygen 2. maven 3.3 3. jdk 1.8 1.通过eclipse创建maven项目,最终项目目录如下 ...
- java pdf扫描文件内容,java 怎么读取PDF文件内容(按页读取)
Java code// 搜索pdf public List searchPdfFile(String keyword,List items) throws IOException { File f = ...
- java生成二维码,中间插入图片,以及二维码解析
在实际的项目中有用到生成二维码的功能,生成的二维码中间可以插入一张图片. 先来效果图 (这是我事先准备了一张图片 a)---- 生成的二维码的效果图 (二维码中间插入的图片就是上面保存的图片a) 好了 ...
- java使用poi操作word模板,插入图片、段落、表格
java使用poi操作word插入图片.段落.表格 其他链接 准备工作 创建word模板.docx文件 编写模板格式.xml文件 java上手poi maven依赖 使用到的包 具体应用 对应封装方法 ...
- java poi在word文档中插入图片后文件无法打开
错误情况 POI生成的word文档包含图片时用office打开失败,提示错误.但是用wps却可以打开. 原因分析 这是因为poi本身的问题,单纯的插入图片是不显示的,可以使用如下处理方式createP ...
- 使用itext对pdf指定文字位置插入图片
使用java开源itext库对pdf进行操作,分主要分两步先查找指定文字位置,然后再在指定位置插入图片. 1.查找指定文字的坐标位置 这里主要通过实现类RenderListener来完成查找坐标位置 ...
- 使用icepdf将pdf首页内容转成图片
说明: 1.图片命名规则:给定的文件所属目录+给定的文件的名称+.+png,即同目录下同名称的png图片 2.基本业务: a.判断同目录下同名称的png图片是否存在,若已经存在直接return b.若 ...
- PDF内根据关键字插入图片
根据pdf内指定关键字的坐标插入图片,实现分为两个步骤. 1:查找出dpf内所有的关键字的坐标和关键字所在的页数. 2:根据查到的关键字位置出入图片: 引入 compile('com.itextpdf ...
- 第二章: 第二课 内容处理-插入图片
我们在网上经常会看到最新的文章列表标题后面都会有个"推荐","New"等诸如此类的图片,如下图: 上节课,我们学习了content属性配合选择器:before和 ...
最新文章
- 浅析「扣减库存」的方案设计
- 新概念 Lesson 7 A new dress 定冠词、不定冠词
- JZOJ 4933. 【NOIP2017提高组模拟12.24】C
- Trunk Vlan
- acill排序 java_Map集合按照ASCII码从小到大(字典序)排序--JAVA
- String类型转换的三种方法分析
- javascript 操作服务器 文件,使用javascript读取服务器文件
- 大一微积分笔记整理_大一上学期微积分高数复习要点
- 实用分享-在线公式编辑器(可导图识别)
- 10.24程序员节日快乐
- 为什么学小易显示服务器开小差,学小易搜题APP
- PC端如何使用ITunes无线连接ios手机
- stm32f107基本资料
- 从普通程序员到估值上亿的公司老板,他只用了1年!
- Microsoft Visual Studio 2019 美化之——透明化窗口 Microsoft Visual Studio 2019 C/C++ Windows 下重量级编辑器 Editor
- 华为2019开发者大会内容小记
- SuperMap iDesktop .NET 9D(2019)产品白皮书
- 密码学Kerberos协议理解
- 拖延症患者的自我反省
- Linux终端光标的调整方法