问题场景:

用itext自动生成PDF的过程中,想要在PDF中的某一页加入水印,这个水印图片的页码不固定,所以不能直接用‘sealStamperUnder = stamp.getUnderContent(page-1);’方式加入水印。但是该水印在某一固定图片的上一页,那么我们可以定位这张图片的位置信息,以此获取水印图片的页码信息。通过这种方法还可以获得图片的坐标信息。

代码

需导入的jar包:itext-pdfa-5.5.6.jar、itext-xtra-5.5.6.jar、itext-5.5.6.jar、itext-asian.jar

/*** 返回关键字所在页码和坐标* @param filePath  PDF位置* @param image     要定位的图片* @return  List<float[]>  返回关键字所在的坐标和页数 float[0] >> X; float[1] >> Y; float[2] >> page*/public List<float[]> getKeyWords(String filePath, final Image image) {final List<float[]> arrays = new ArrayList<float[]>();PdfReader pdfReader;try {pdfReader = new PdfReader(filePath);int pageNum = pdfReader.getNumberOfPages();PdfReaderContentParser pdfReaderContentParser = new PdfReaderContentParser(pdfReader);for (int i = 1; i <= pageNum; i++) {final int finalI = i;pdfReaderContentParser.processContent(i, new RenderListener() {//此方法是监听PDF里的文字内容,有重复情况会都把坐标和页码信息都存入arrays里@Overridepublic void renderText(TextRenderInfo textRenderInfo) {/*String text = textRenderInfo.getText(); // 整页内容if (null != text && text.contains(key)) {Rectangle2D.Float boundingRectange = textRenderInfo.getBaseline().getBoundingRectange();float[] resu = new float[3];resu[0] = (float)boundingRectange.getCenterX();resu[1] = (float)boundingRectange.getCenterY();resu[2] = finalI;arrays.add(resu);}*/}//此方法是监听PDF里的图片内容@Overridepublic void renderImage(ImageRenderInfo arg0) {PdfImageObject image0;try {image0 = arg0.getImage();byte[] imageByte = image0.getImageAsBytes();Image imageInPDF = Image.getInstance(imageByte);if(image0!=null && imageInPDF.equals(image)){float[] resu = new float[3];// 0 => x;  1 => y;  2 => z//z的值始终为1resu[0] = arg0.getStartPoint().get(0);resu[1] = arg0.getStartPoint().get(1);resu[2] = finalI;arrays.add(resu);}} catch (IOException e) {e.printStackTrace();} catch (BadElementException e) {e.printStackTrace();}}@Overridepublic void endTextBlock() {}@Overridepublic void beginTextBlock() {}});}pdfReader.close();} catch (IOException e) {e.printStackTrace();}return arrays;}

后记:此方法是获取图片的坐标与页码信息,如果想获取文本的坐标与页码信息,请把renderText()中的注释去掉,getKeyWords()的参数换一下即可。

ITEXT-定位PDF中图片的坐标与页码相关推荐

  1. itext替换pdf中的中文

    2019独角兽企业重金招聘Python工程师标准>>> 在网上找了一段时间,发现有两个版本的 1,使用aspose.pdf,这篇文章写得很清楚https://blog.csdn.ne ...

  2. python 两种提取pdf中图片的包

    项目需求,提取pdf中图片,找半天的结果 1.fitz (我没找到元素定位的方法) pip install pymupdf import fitzdef extract_pic_from_pdf(pd ...

  3. 在线提取PDF中图片和文字

    无需下载软件,你就可以在线提取PDF中图片和文字,http://www.extractpdf.com/不仅可以获取本地PDF文档的图片和文字,还能获取远程PDF文档的图片和文字. 结果本人测试,该工具 ...

  4. IText导出PDF添加图片,解决中文问题

    利用IText导出PDF: 使用.ftl模板引入图片不显示,不报错,但是它找不到图片, .separator {margin: 15px;height: 16px;text-align: center ...

  5. java 使用itext 导出pdf 控制图片的大小

    在使用itext 导出pdf 的过程中,可能会遇到这样的需求,就是导出文字加图片.使用我们前面写的程序,确实是可以导出图片,如果针对于类似简历的需求,图片填充单元格,会满足效果,如下图所示: 但在实际 ...

  6. PDF 中图片的提取

    1.1 PDF 文件图像分类 PDF 文件中的图像分为两类:①图像外部对象(XObject):在内容流 (content stream) 之外定义的一个有名字的被引用对象.一个XObject的内部阐述 ...

  7. PDF中图片表格可以转成Excel表格吗?

    对于PDF的修改和使用大部分人都不太熟悉,特别是PDF文档中的内容全部都是图片更无法直接编辑,如果需要使用到PDF中的表格时,就比较麻烦了,那么能不能将PDF中的图片转换成表格呢?这样直接修改表格不就 ...

  8. itext导出pdf中新加一页空白页面(itext 遇到的问题持续更新)

    itext开发遇到的问题(持续更新) 中文无法显示 在你的pom.xml 导入,一般来说就可以解决 <dependency><groupId>com.itextpdf</ ...

  9. java读取图片、PDF中图片上的文字

    读取图片上的文字 提示:本文是基于tess4j 文章目录 读取图片上的文字 前言 一.tess4j是什么? 二.使用步骤 1.POM引入库 2.实例代码 总结 前言 总是有一些与众不同的需求在等着研发 ...

最新文章

  1. xlrd.biffh.XLRDError: Excel xlsx file; not supported解决方法
  2. 接到一个需求,想在页面上加一个链接有多难?
  3. 计算机视觉--GIST特征及其MATLAB代码实现
  4. devops工程师_如何过渡为DevOps工程师的职业
  5. spss正态性检验_SPSS和R中的正态分布的确定和几何均值的计算
  6. Vue2.0 $set()处理数据更新但视图不更新的问题(给对象添加属性必须用this.$set(this.data,”key”,value’))
  7. ES Search After 分页查询
  8. 2021-01-29 大数据课程笔记 day9
  9. 深入浅出学大数据(一)大数据发展历程及大数据的简单介绍
  10. socks5认证过程
  11. 湖南工大计算机学院大一分班,大一新生入学计算机分级教学考试会影响分班吗?...
  12. 中国传统文化课程笔记
  13. 每天一个设计模式——写在前面
  14. Python进阶(十八)Python3爬虫小试牛刀
  15. 用Origin找两曲线的交点
  16. webpack-webpack-dev-server
  17. bash和vim的使用-1
  18. 服务器文件夹 删除 修改 日志,win服务器 删除文件夹
  19. 面试时期望薪资如何谈
  20. 一笔画完C语言程序寻找路径算法

热门文章

  1. x64 编译 静态链接_C++静态库与动态库
  2. python抓取数据时失败_python爬取页面元素失败
  3. go 之 浮点数相等判断
  4. 城乡投票源码php_一个简单的PHP投票程序源码
  5. CentOS 7 万网申请免费 SSL 证书,apache 详细教程
  6. 全拼输入法在计算机内部,全拼输入法,怎么安装在电脑里?
  7. C/C++编程语言必读技术书单推荐入门到进阶+技术书阅读方法论(附网盘链接)
  8. 特殊的一篇日志——介绍一位大牛Matrix67
  9. access对比数据_七大数据库产品测评Sqlserver完美胜出,五大理由告诉你最好选择...
  10. DBSwitch阉割版实现异构数据库表结构同步