ITEXT-定位PDF中图片的坐标与页码

PDF带目录导出java_itextpdf为pdf文件添加目录(可跳转) 需求: 有一个pdf文件source.pdf , 有这个pdf的目录数据Map catalogs , 将catalog作为目录添加到source.pdf文件中 ,且可以点击目录跳转到指定页描述:原本的source.pdf是没有目录的 , 且catalog目录数据是用别的方法读出来的或者自定义的工具代码如下://需要导入的包import com.itextpdf.kernel.pdf.PdfDocu... 阅读详情

问题场景:

用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里
                        @Override
                        public 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里的图片内容
                        @Override
                        public 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的值始终为1
                                    resu[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();
                            }

                        }

                        @Override
                        public void endTextBlock() {


                        }

                        @Override
                        public void beginTextBlock() {


                        }

                    });

                }

                pdfReader.close();

            } catch (IOException e) {

                e.printStackTrace();
            }
            return arrays;
    }

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

Itext5库的对PDF文件的基本操作(一)---新建文档,设置文档属性,设置文档密码 首先引入依赖,为了方便起见,我们采用maven方式构建demo项目。在pom中添加itext库的相应依赖。 &lt;!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --&gt; &lt;dependency&gt; &lt;groupId&gt;com.itextpdf&lt;/g... 阅读详情

相关推荐

itext5 生成pdf 使用总结

ITEXT5

欢迎来到我的博客 2万+

PDF生成

PDF生成 文章目录PDF生成POM依赖字体处理PDF内容处理生成目录事件样例展示参考文章 此版PDF生成包含: 封面, 目录,页码等功能,暂时没有实现目录跳转功能 POM依赖 <dependency> <groupId>com.itextpdf</groupId> <artifactId>layout</artifactId> <version>7.0.3</version> </dependency>

m0_58617940的博客 1020

Itext与pdfBox坐标定位问题

itext与pdfbox都可以做pdf解析工具,下面简单介绍itext与pdfbox坐标定位     itext: import java.io.IOException; import com.itextpdf.awt.geom.Rectangle2D.Float; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.t

coderdesion 1万+

java查找pdf关键字_java实现查找PDF关键字所在页码及其坐标

1、因为最近有这方面的需求,用过之后记录一下。2、此功能跟PDF中Ctrl+F性质一样,如果PDF中为图片形式的不支持定位到关键字。import com.itextpdf.awt.geom.Rectangle2D.Float;import com.itextpdf.text.pdf.PdfDictionary;import com.itextpdf.text.pdf.PdfName;import ...

weixin_31938727的博客 1364

Java使用iText库动态填充PDF模板:从坐标定位到表单填充的完整实践

PDF文档的动态生成是Java后端开发中处理合同、报告、票据等场景的常见需求。其核心原理是通过程序化操作,在预先设计好的PDF模板的指定位置插入可变数据。实现这一功能的技术价值在于能自动化、批量化地生成格式统一且内容各异的文档,极大地提升了业务处理效率。在Java生态中,iText库因其成熟稳定的API成为处理此类任务的优选方案,尤其适用于发票、证书、工单等固定格式文档的批量生成场景。本文聚焦于使用iText库的`PdfStamper`进行模板填充,详细阐述了如何通过坐标定位或`AcroFields`操作表

weixin_34226182的博客 404

Java实现PDF关键字定位与电子签章自动化

本文详细介绍了如何使用Java实现PDF关键字定位与电子签章自动化,通过iText库精准定位文档中的关键字并自动添加电子签章,大幅提升办公效率。适用于批量合同签署、标准化表单处理等场景,特别适合人力资源、财务和法务部门使用。

weixin_28363123的博客 387

【定位:PDF文件定位关键字所在坐标和页码】

iText简介: iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了。 iText使...

weixin_30871293的博客 896

Java实战:用iText7实现PDF关键字电子签章(附完整代码)

本文详细介绍了如何使用Java和iText7库实现基于关键字定位的PDF电子签章功能。通过解析PDF文本、精准定位关键字坐标,并动态叠加签章图像,提供了从静态定位到智能匹配的完整解决方案,附有核心代码示例,帮助开发者高效集成自动化签章能力。

weixin_29290863的博客 340

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

使用java开源itext库对pdf进行操作,分主要分两步先查找指定文字位置,然后再在指定位置插入图片。 1.查找指定文字的坐标位置 这里主要通过实现类RenderListener来完成查找坐标位置 代码如下: package com.anyu.PDFUtils; import java.io.File; import java.io.FileInputStream; import j...

知北行的博客 1万+

Java-OpenPDF、iText与PDFBox:三大PDF处理库的实战选型指南

本文深入对比了Java-OpenPDF、iText与PDFBox三大主流PDF处理库。从核心功能、性能表现到关键的法律许可问题,提供了实战选型指南。针对不同应用场景(如简单报表、复杂合同、内容解析),给出了明确的推荐方案,帮助Java开发者根据项目需求、开发成本与合规要求,做出最合适的技术选择。

weixin_29014939的博客 320

车载测试实战:adb logcat日志高效抓取与问题定位技巧

本文详细介绍了车载测试中adb logcat日志的高效抓取与问题定位技巧。作为车载测试的“第一现场”,adb logcat能实时、精准地抓取系统与应用日志,是定位应用崩溃、ANR及功能异常等问题的关键工具。文章从环境搭建、核心命令组合拳到实战分析与自动化脚本,提供了完整的操作指南,帮助测试人员快速掌握这一必备技能,大幅提升问题排查效率。

ii567的博客 1040

Itext7生成pdf最全api总结

Itext7生成pdf最全api总结 最近使用itext7生成pdf被折磨到崩溃,一是官方文档不全,网上文章基本都是基于老版本api的,已经完全不适用itext7版本;二是itext7的api和css很像,使用java写css很让人崩溃。把我用到的做一个总结。 显示中文 itext7在使用默认字体显示中文的时候,由于默认字库不支持中文,生成的pdf中的中文会显示空白,要解决这个问题需要自己引入字体。 下载一个中文字体,我这里用的是SourceHanSansCN.ttf(只用过ttf文件,不知道是否支

gairuichan的博客 1万+

巨量千川M-API实战:异步报表与批量操作自动化指南

API(应用程序编程接口)是现代软件系统间通信和数据交换的核心技术,它定义了服务间交互的协议和规范。在数字营销领域,营销API(Marketing API)通过程序化接口实现了广告账户管理、数据获取和操作自动化的能力,其技术价值在于将重复性人工操作转化为高效、准确的自动化流程,显著提升运营效率并降低人为错误。在广告投放精细化运营场景中,面对海量数据报表的获取与批量广告状态管理的需求,异步任务处理和批量操作接口成为关键技术解决方案。本文聚焦巨量千川M-API,深入解析其异步报表获取机制与批量操作实现,涵盖从任

weixin_32932149的博客 430

根据关键字位置为PDF添加文本和图片

首先引入ITEXT5的jar包 1、存放根据关键字查找位置后的信息: public class TextLocal { /** * 关键字在PDF中的X坐标 */ private float x; /** * 关键字在PDF中的Y坐标 */ private float y; /** * 关键字在PDF中的页码 */ private int pageNum; /** ..

走马川行雪的博客 1736

【论文复现】HiDDeN:Hiding Data With Deep Networks

(标签)是 float 类型,但代码中传入的是 long 类型(整数标签)。函数参数解析方式变化,导致无法正确保存生成的图像结果。这是因为新版torchvision的。使用预训练模型进行隐写和提取测试。HiDDeN支持多种噪声层组合。打印变量的类型,分别是。

qq_69146676的博客 971

【PADS-开发指南】

馒头破戒大师

sinat_23896491的博客 3225

iText 页码、页眉、页脚工具

iText页码,页眉,页脚 DEMO下载及实现:https://download.youkuaiyun.com/download/iosweb/10623375 1,页码工具类 package excelPOI; import java.io.IOException; import com.itextpdf.text.Document; import com.itextpdf.text.Doc...

IOS_Mainstay的博客 1378

IPSec Over GRE和GRE Over IPSec技术

IPSec Over GRE 和 GRE Over IPSec 一. 技术介绍 IPsec     主要作用是对数据进行加密,因为他能提供所有有时候被单独用作实现加密的一种方法!IPsec建立的是一个逻辑隧道,并不是真正意义上的隧道!并且不能提供路由功能,因为IPsec不支持非ip流量,也不支持广播(组播)! GRE     (通用路由封装)能很好的提供一个真正意义上的点对点的隧道,GRE是一种三层VPN封装技术。GRE可以对某些网络层协议(如IPX、Apple Talk、IP等)的报文进行封装,使封装后

qq_56228347的博客 9870

itext 在已知页码的情况下,往pdf中添加图片,实测有效,下面贴出代码

最近项目中非要在已经生成的pdf中添加二维码,网上搜索一把,终于找到一个合适点的,不过这个不灵活,不过却能解决我的问题,我就想在第一页某个位置插入一张图片而已,就这么简单,只要不覆盖原来pdf中的内容就行了。下面是代码: /**  * @author Administrator  *  */ package pdf; import java.io.File; import java.io.Fil...

qq_20423863的博客 1307

cutlass2.x源码解读之PitchLinearStripminedThreadMap

TensorCoord:使用layout::PitchLinearCoord作为张量坐标。Shape:使用模板参数Shape_作为tile的形状,kThreads:线程总数,定义为模板参数Threads。kElementsPerAccess:每次访问的元素数,定义为模板参数ElementsPerAccess。ThreadAccessShape:线程访问的形状,使用layout::PitchLinearShape定义。内部实现细节:ShapeVec。

jiangjkd的专栏 790

华为防火墙双线路配置实战:5分钟搞定主备自动切换(含健康检查避坑指南)

本文详细介绍了华为防火墙双线路配置实战,包括主备自动切换和健康检查机制的优化技巧。通过智能健康检查机制,华为防火墙能实现毫秒级故障自动切换,确保网络高可用性。文章提供了从架构设计到实战配置的全流程指南,并分享了常见配置误区与解决方案,帮助中小企业快速搭建稳定可靠的网络架构。

weixin_30872337的博客 605

canvas 添加 竖版文字_使用itext在pdf指定页面的指定位置添加图片与汉字

本文源码路径:https://github.com/jedyang/demo在指定页码的指定位置插入文字 在指定页码的指定位置插入文字属于常规操作,比较简单。但是如果要支持中文,需要多做一点操作。而且有坑要踩。 首先引入汉语系语言包。(非必须,后面讲)com.itextpdffont-asian${itext.version} 代码如下: publicvoidaddTextAb...

weixin_39888943的博客 1236

Agentic RL: 大模型后训练 SFT、PPO和GRPO

本文介绍了从LLM训练到Agentic RL的发展过程。传统LLM训练包括预训练和后训练两个阶段,其中后训练通过监督微调、奖励建模和强化学习等技术优化模型表现。针对智能体在复杂任务中的不足,提出了Agentic RL新范式,将LLM嵌入强化学习框架,通过多步交互、工具使用和环境反馈来优化长期目标。相比传统单轮对话优化(PBRFT),Agentic RL具有状态包含历史上下文、行动类型多样、动态状态转移等特点,更适合解决需要多步推理和规划的任务。这种新方法为开发更强大的智能体系统提供了可能。

Cachel Wood的博客 699

Java PDF坐标提取文本实战:基于PDFBox与OCR的高精度数据抽取

在数据处理与自动化办公场景中,PDF文档解析是常见的技术需求。其核心原理在于解析PDF内部结构,定位文本元素的空间位置信息。这项技术的价值在于能够将非结构化的PDF文档转化为结构化数据,极大提升信息处理效率。它广泛应用于财务报表解析、合同关键信息抽取、发票自动化处理等模板化文档处理场景。本文聚焦于通过坐标定位实现高精度文本抽取,详细探讨了Apache PDFBox的坐标遍历与筛选机制,并针对扫描件PDF介绍了结合Tesseract OCR的混合方案,为Java开发者提供了一套稳定、高效的解决方案。

weixin_34082789的博客 470

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: ITEXT-插入水印(itext-pdfa-5.5.6.jar)
下一篇: ITEXT-小图片并排显示,大图片按行显示
sand_clock
博客等级 码龄11年 66粉丝 89原创
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值