pdf文档的内容都是坐标定位的,文档内容主要包含文本、图片、线条;对于表格的解析,可以通过判断线条的位置来判断表格。PDFBox的api,不是很方便把内容和对应坐标读取出来。
Pdf2Dom是一个按绝对坐标的方式来把pdf转成html渲染的,Pdf2Dom基于Apache PDFBox库。
需要解析的pdf文档内容:
需要用到pdfbox和pdf2dom两个依赖包

MyPdf.java解析pdf代码

package com.penngo.pdf;public class MyPdf extends PDFDomTree{public MyPdf() throws IOException {super();}protected void startNewPage(){System.out.println("====页码:" + pagecnt);super.startNewPage();}@Overrideprotected void renderText(String data, TextMetrics metrics){System.out.println("====文本:" + data + "," +  ",x:" + (int)metrics.getX() + ",top:" + (int)metrics.getTop() + ",width:" + (int)metrics.getWidth() + ",height:" + (int)metrics.getHeight() );curpage.appendChild(createTextElement(data, metrics.getWidth()));}@Overrideprotected void renderPath(List<PathSegment> path, boolean stroke, boolean fill) throws IOException{PathSegment path1 = path.get(0);System.out.println("====路径1:" + "x1:" + path.get(0).getX1() + ",y1:" + path1.getY1() + ",x2:" + path1.getX2() + ",y2:" + path1.getY2() + ",stroke:" + stroke + ",fill:" + fill);super.renderPath(path, stroke, fill);}@Overrideprotected void renderImage(float x, float y, float width, float height, ImageResource resource) throws IOException{System.out.println("====图片:" + "x:" + x + ",y:" + y + ",width:" + width + ",height:" + height);curpage.appendChild(createImageElement(x, y, width, height, resource));}public void parsePdf(PDDocument doc){try{DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();DOMImplementationLS impl = (DOMImplementationLS)registry.getDOMImplementation("LS");LSSerializer writer = impl.createLSSerializer();LSOutput output = impl.createLSOutput();writer.getDomConfig().setParameter("format-pretty-print", true);createDOM(doc);} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {try {File pdfFile = new File("F:\\dev\\test\\test.pdf");PDDocument document = PDDocument.load(pdfFile);MyPdf pdfDomTree = new MyPdf();pdfDomTree.parsePdf(document);}catch(Exception e){e.printStackTrace();}}
}

运行结果:

====页码:0
====文本:文章:https://blog.csdn.net/penngo/article/details/125436956,x:90,top:81,width:312,height:13
====文本:1.2,x:90,top:112,width:14,height:13
====文本:安装,x:110,top:112,width:20,height:13
====文本:HTML,x:133,top:112,width:29,height:13
====文本:Publisher,x:166,top:112,width:46,height:13
====图片❌90.0,y:139.2,width:414.48,height:177.36
====文本:插件,x:215,top:112,width:20,height:13
====文本:表头,x:90,top:331,width:20,height:13
====文本:1,x:113,top:331,width:6,height:13
====文本:表头,x:196,top:331,width:20,height:13
====文本:2,x:220,top:331,width:6,height:13
====文本:表头,x:303,top:331,width:20,height:13
====文本:3,x:326,top:331,width:6,height:13
====文本:表头,x:409,top:331,width:20,height:13
====文本:4,x:433,top:331,width:6,height:13
====文本:列,x:90,top:362,width:10,height:13
====文本:1,x:103,top:362,width:6,height:13
====文本:列,x:196,top:362,width:10,height:13
====文本:2,x:209,top:362,width:6,height:13
====文本:列,x:303,top:362,width:10,height:13
====文本:3,x:316,top:362,width:6,height:13
====文本:列,x:409,top:362,width:10,height:13
====线条size:1
====线条0,x1:84.36,y1:321.83997,x2:510.94,y2:321.83997,stroke:true,fill:false
====线条size:1
====线条0,x1:84.36,y1:353.54,x2:510.94,y2:353.54,stroke:true,fill:false
====线条size:1
====线条0,x1:84.36,y1:385.24,x2:510.94,y2:385.24,stroke:true,fill:false
====线条size:1
====线条0,x1:84.6,y1:321.59998,x2:84.6,y2:385.0,stroke:true,fill:false
====线条size:1
====线条0,x1:191.1,y1:321.59998,x2:191.1,y2:385.0,stroke:true,fill:false
====线条size:1
====线条0,x1:297.6,y1:321.59998,x2:297.6,y2:385.0,stroke:true,fill:false
====线条size:1
====线条0,x1:404.15,y1:321.59998,x2:404.15,y2:385.0,stroke:true,fill:false
====线条size:1
====线条0,x1:510.7,y1:321.59998,x2:510.7,y2:385.0,stroke:true,fill:false
====文本:4,x:422,top:362,width:6,height:13

源码下载

java读取pdf的文字、图片、线条和对应坐标相关推荐

  1. 初次爬虫:读取PDF转成图片,再提取图片里的文字信息

    读取PDF转成图片,再提取图片里的文字信息 三步走 第一步 读取PDF并转换成图片 第二步 调用百度API来识别图片里面的文字信息 第三步 提取自己想要的文字信息 三步走 1 读取PDF,将PDF转换 ...

  2. java 图片识别提取_老司机帮您Java 提取/读取PDF中的图片

    电脑现已成为我们工作.生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到Java 提取/读取PDF中的图片的问题,如果我们遇到了Java 提取/读取PDF中的图片的情况,该怎么处理怎么才能解决 ...

  3. java读取pdf文本转换html

    java读取pdf文本转换html 完整代码地址 也就两个文件 java读取pdf中的纯文字,这里使用的是pdfbox工具包 maven引入如下配置 <dependency><gro ...

  4. JAVA 替换pdf中文字

    java 读取PDF文件内容进行替换 需要使用到的包 监听类(对需要替换的内容关键词进行匹配) 实体类(保存关键字字体格式信息以及其位置) 工具类(对关键字进行替换) 测试类 需要使用到的包      ...

  5. Java实现pdf文件转图片

    Java实现pdf文件转图片 文章顺序是按照测试类- -Service- -Service实现类- -工具类- - POM依赖. test测试类里 pdfPath:存放pdf源文件的地方 imgflo ...

  6. Java读取pdf模板,并动态生成pdf文件,如动态生成准考证

    Java读取pdf模板,并动态生成pdf文件,如动态生成准考证 ​ 前几天遇到了一个生成准考证的需求,并提供用户下载,然后百度了一圈还是觉得使用itextpdf这个框架好用点.但是还需要找到一个能创建 ...

  7. java 获取文件大小_利用百度AI OCR图片识别,Java实现PDF中的图片转换成文字

    序言:我们在读一些PDF版书籍的时候,如果PDF中不是图片,做起读书笔记的还好:如果PDF中的是图片的话,根本无法编辑,做起笔记来,还是很痛苦的.我是遇到过了.我们搞技术的,当然得自己学着解决现在的痛 ...

  8. java为PDF添加水印,图片水印和文字水印

    java为PDF添加水印,文字水印和图片水印 一个需求,下载pdf.word.excel文件时要带有水印,要求铺满.先分开,先介绍为PDF文件添加文字水印和图片水印. 所需jar包:itext-2.0 ...

  9. Java 读取PDF中的文本和图片

    本文将介绍通过Java程序来读取PDF文档中的文本和图片的方法.分别调用方法extractText()和extractImages()来读取. 使用工具:Free Spire.PDF for Java ...

  10. java读取pdf三维图片_java 读取PDF文件生成图片形式

    引入所需maven依赖 org.icepdf.os icepdf-core 6.2.2 javax.media jai_core JAVA代码工具类package com.util; import c ...

最新文章

  1. 什么是数据中台?全面解读数据中台
  2. Platform Builder 6.0与Windows 7兼容性的问题
  3. html怎么在图片上加文字_怎么把图片文字转换成word文档
  4. 开放世界下的混合域适应 ——面向真实自然场景下的全新迁移学习范式
  5. 数据结构(四)选择排序
  6. EGit/User Guide
  7. 在下层捕获上层抛出的异常
  8. 各种语言和各种前沿技术的简介和科普
  9. 栅栏密码怎么写java程序_栅栏密码
  10. 在Hisi3531环境中为wm8978芯片添加音量调节功能及测试
  11. 使用video标签时报错 Uncaught (in promise) DOMException
  12. 真正“透明”的PNG图片
  13. 视频文件太大?使用FFmpeg来无损压缩它
  14. 安卓视频播放,部分手机不能快进
  15. 互联网日报 | 微博热搜榜被暂停更新一周;陆正耀辞任神州租车董事会主席;教育部严格国际学生申请资格...
  16. 程序的与时俱进之一——面向接口编程
  17. python 字典 按值排序贺按键排序 得到一个新字典
  18. php 判断下载状态,关于php:如何检测文件的下载是否已经完成?
  19. java中判断对象中某个属性是否为空
  20. Flutter 新手之路,报错记录01

热门文章

  1. 随便写了个猪八戒网的任务小助手“小八戒”,需要的拿去
  2. 话筒性能测试软件,LogiTech的话筒屏蔽性能测试方案
  3. autocad.net-图片打印合成
  4. 探索另类圆环图的做法
  5. swiper5 点击图换下一张_软网推荐:骗倒社交好友 制作另类隐藏图
  6. macbook安装免费vmware fusion
  7. 中国邮递员问题的深入剖析与算法实现(附例题及MATLAB、LINGO代码)
  8. C语言也能干大事第十四节(如鹏基础)
  9. FireFox把Gmail变成大容量网络硬盘
  10. HTML5七夕情人节表白网页制作【雪花爱心】HTML+CSS+JavaScript 爱心代码 爱心制作 表白代码 告白网页制作