itextPDF操作PDF,获取PDF内容
class TestRenderListener implements RenderListener {//用来存放文字的矩形List<Rectangle2D.Float> rectText = new ArrayList<Rectangle2D.Float>();//用来存放文字List<String> textList = new ArrayList<String>();//用来存放文字的y坐标List<Float> listY = new ArrayList<Float>();//用来存放每一行文字的坐标位置List<Map<String, Rectangle2D.Float>> rows_text_rect = new ArrayList<>();//PDF文件的路径protected String filepath = null;public TestRenderListener() {}//step 2,遇到"BT"执行@Overridepublic void beginTextBlock() {// TODO Auto-generated method stub}//step 3/*** 文字主要处理方法*/@Overridepublic void renderText(TextRenderInfo renderInfo) {//获取文字的下面的矩形//Rectangle2D.Float rectBase = renderInfo.getBaseline().getBoundingRectange();String text = renderInfo.getText();if (text.length() > 0) {RectangularShape rectBase = renderInfo.getBaseline().getBoundingRectange();//获取文字下面的矩形Rectangle2D.Float rectAscen = renderInfo.getAscentLine().getBoundingRectange();//计算出文字的边框矩形float leftX = (float) rectBase.getMinX();float leftY = (float) rectBase.getMinY() - 1;float rightX = (float) rectAscen.getMaxX();float rightY = (float) rectAscen.getMaxY() 1;Rectangle2D.Float rect = new Rectangle2D.Float(leftX, leftY, rightX - leftX, rightY - leftY);// System.out.println("text:" text "--x:" rect.x "--y:" rect.y "--width:" rect.width "--height:" rect.height);if (listY.contains(rect.y)) {int index = listY.indexOf(rect.y);float tempx = rect.x > rectText.get(index).x ? rectText.get(index).x : rect.x;rectText.set(index, new Rectangle2D.Float(tempx, rect.y, rect.width rectText.get(index).width, rect.height));textList.set(index, textList.get(index) text);} else {rectText.add(rect);textList.add(text);listY.add(rect.y);}Map<String, Rectangle2D.Float> map = new HashMap<>();map.put(text, rect);rows_text_rect.add(map);}}//step 4(最后执行的,只执行一次),遇到“ET”执行@Overridepublic void endTextBlock() {// TODO Auto-generated method stub}//step 1(图片处理方法)@Overridepublic void renderImage(ImageRenderInfo renderInfo) {}}
try {PdfReader reader = new PdfReader(pdfPath);//新建一个PDF解析对象PdfReaderContentParser parser = new PdfReaderContentParser(reader);//包含了PDF页面的信息,作为处理的对象PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("E:/pdftest/test2.pdf"));//获取pdf的页数PdfContentByte page = stamper.getOverContent(1);for (int i = 1; i <= reader.getNumberOfPages(); i ) {//新建一个ImageRenderListener对象,该对象实现了RenderListener接口,作为处理PDF的主要类TestRenderListener listener = new TestRenderListener();//解析PDF,并处理里面的文字parser.processContent(i, listener);//获取文字的矩形边框List<Rectangle2D.Float> rectText = listener.rectText;List<String> textList = listener.textList;List<Float> listY = listener.listY;List<Map<String, Rectangle2D.Float>> list_text = listener.rows_text_rect;Map<String, Position> map1 = new HashMap<>();for (int k = 0; k < list_text.size(); k ) {Map<String, Rectangle2D.Float> map = list_text.get(k);for (Map.Entry<String, Rectangle2D.Float> entry : map.entrySet()) {System.out.println(entry.getKey() "----" entry.getValue());}}}System.out.println(JSON.toJSON(positionMap));} catch (Exception ex) {ex.printStackTrace();}
itextPDF操作PDF,获取PDF内容相关推荐
- java解析pdf获取pdf中内容信息
java解析pdf获取pdf中内容信息 今日项目中需要将pdf中的数据获取到进行校验数据,于是前往百度翻来覆去找到以下几种办法,做个笔记,方便日后查询. 废话不多说,我要直接上代码装逼了 第一种 使用 ...
- c语言文件操作获取文件位置,C语言文件操作:获取文件内容
在 C Premier Plus 中看到一个文本处理程序,写的非常精妙,分析一下: #include #include // 要求在命令行中运行程序,并附带文件名作为参数 int main(int a ...
- 通过itextpdf操作PDF,动态向PDF文件最后一页添加图片
通过itextpdf操作PDF,向PDF文件最后一页添加图片(缩放图片并判断最后一页是否能放下图片) 本人第一篇博客,哈哈!第一次接触itextpdf,想实现将图片向PDF尾部追加(判断原页面使用情况 ...
- java操作office和pdf文件java读取word,excel和pdf文档内容
在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...
- java获取pdf的页数、内容和缩略图
1.导入maven依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfb ...
- 用pdfbox获取pdf内容及座标
1.引入maven依赖 <dependency> <groupId>org.apache.pdfbox</groupId> ...
- php使用FPDI获取PDF内容、合并PDF文件、导入模板
使用FPDI获取PDF内容的方式 FPDI内部使用了StreamReader类,它使用低级函数,如fread()或ftell()来与流交互. 流读取器类提供了通过特定输入类型创建实例的静态方法.它的构 ...
- 如何获取PDF文件中对应内容的坐标及范围?
如何获取PDF文件中对应内容的坐标及范围? 介绍 安装地址 使用方式 打开软件 开启坐标显示 坐标显示单位切换 开启网格辅助线 测量工具使用 介绍 这款来至Adobe公司旗下的PDF阅读器: 它免费提 ...
- java解析pdf格式文件获取文本内容
思路:先将pdf按照页数分割成图片,在将分割的图片做图片识别,提取文字,最后将提取到的文字解析或者保存到txt文件. 图片识别我使用的是百度开发者中心提供的 图片识别接口,我在上一篇文章中有详细说明, ...
最新文章
- 基于Transformer对透明物体进行分割
- java项目的逻辑结构
- LeetCode Same Tree
- GitLab怎样实现新建仓库并允许开发者推送代码实现协同开发
- 在VS2010调试javascript程序时的各种问题
- 可视化太酷辽!一文了解排序和搜索算法在前端中的应用
- c语言程序源代码_程序的编译、链接和执行
- 今天的在一旁看电视的蜡笔小新
- 推荐一个牛逼的生物信息 Python 库 - Dash Bio
- rabbitMQ linux 安装步骤
- iOS:ODRefreshControl
- 杭电多校HDU 6601 Keen On Everything But Triangle(主席树)题解
- 从托管映像创建 VM
- php学生信息管理系统(源码)
- 通达信标记符号_通达信符号大全
- 轻松熊喵喵个人笔记 -- java学习路线记录
- pandas时间序列——时间基础、时间增量、时间周期、日期偏移处理
- ios:苹果手机直接安装ipa文件
- 2021年十佳优惠券返利APP排名榜 2021年用户喜欢的优惠券返利APP前10排行榜
- 学习mysql_day2