J*a中给PDF添加注释主流用iText 7或Apache PDFBox:iText需手动构造PdfAnnotation并设置PDF坐标系下的矩形区域,PDFBox则通过PDAnnotation子类直接添加,二者均需注意坐标系转换、中文字体嵌入及权限处理。

J*a中给PDF添加注释,主流方式是使用 iText(推荐 7.x 版本)或 Apache PDFBox。两者都支持添加文本注释(如“高亮”“下划线”“弹出式备注”)、图章、线条批注等,但 API 设计和注释类型支持略有差异。
iText 7 的注释功能封装在 pdfa 和 layout 模块之外的 kernel 层,需手动构造 PdfAnnotation 并关联到指定坐标位置(基于 PDF 坐标系,原点在左下角)。
PdfDocument 打开目标 PDF,获取某页的 PdfPage
PdfTextAnnotation(带弹出框的文本备注)或 PdfMarkupAnnotation(高亮/下划线/删除线)setRectangle()),必须落在页面内容区内(单位:用户单位,默认1/72英寸)page.addAnnotation() 添加;若需显示弹出框,再 add 一个 PdfPopupAnnotation 并关联示例关键代码片段:
PdfTextAnnotation annot = new PdfTextAnnotation(new Rectangle(50, 750, 200, 50))
.setTitle(new PdfString("作者"))
.setContents(new PdfString("此处需补充实验数据"))
.setOpen(true); // 默认展开弹出框
page.addAnnotation(annot);PDFBox 更轻量,对基础注释支持友好。其 PDAnnotation 子类(如 PDAnnotationText、PDAnnotationHighlight)可直接添加到页面的 annotations 列表。
PDDocument.load()
document.getPage(0)
PDAnnotationHighlight highlight = new PDAnnotationHighlight();
COSArray 形式的四边形坐标,按顺时针顺序:x1,y1,x2,y2,...x4,y4)page.getAnnotations().add(highlight)
注意:PDFBox 的高亮坐标是四点定义的多边形,不是矩形,更适合真实高亮文本轮廓;若只需矩形标注,可用 PDAnnotationSquare 或 PDAnnotationCircle。
Writer
企业级AI内容创作工具
220
查看详情
无论用哪个库
,以下几点容易被忽略但直接影响效果:
y_pdf = pageHeight - y_screen
PdfFontFactory.createFont() 加载 NotoSansCJK;PDFBox 中设置 PDAnnotationText.setFont() 并 embed 字体流)PDDocument.setAllSecurityToBeRemoved(true) 或 iText 的 setEncryption() 解密)如果项目已用 iText 生成 PDF,继续用它加注释更连贯,且对复杂注释(如带动作的按钮、3D 标注)支持更好;若仅需轻量批注、避免商业授权(iText 7 AGPL 要求开源或购买许可),PDFBox 是更自由的选择。
基本上就这些。实际添加时,建议先用 PDF 阅读器测量目标位置的坐标,再写代码微调——注释“看不见”往往只是坐标偏了。
以上就是J*a如何在PDF添加注释的详细内容,更多请关注其它相关文章!
# apache
# 编码
# pdf
# java
# seo制作网页
# 大美推广视频素材网站
# 商丘专业的网站建设价格
# 德江网站关键词排名公司
# 投资推广署网站导航
# 虚拟网站建设公司好吗
# 什么叫短视频营销推广呢
# 太谷抖音seo运营
# 丹灶网站推广教程
# 山东教师网站建设
# 弹出式
# 加载
# 时长
# 如何在
# 先用
# 明度
# 好了
# 弹出
# 下划线
# 子类
# cos
相关文章:
《噬血代码2》新预告片发布 展示游戏剧情
win11 arm版怎么安装 M1/M2 Mac虚拟机安装ARM win11的方法
漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道
漫蛙2在线漫画入口 漫蛙正版漫画网页版直达
优化 Jest 模拟:强制未实现函数抛出错误以提升测试效率
汽水音乐在线解析 汽水音乐在线解析入口
Win11怎么关闭触摸屏_Windows 11禁用HID符合标准触摸屏
Safari自带网页翻译功能怎么用 无需插件轻松看懂外文网站【方法】
PHP表单数据传递:如何通过隐藏输入字段获取动态ID
微信网页版官方入口教程 微信网页版网页版快速登录步骤
如何更改在 Excel 中打开超链接时的默认浏览器
J*aScript中正确使用querySelectorAll与复杂CSS选择器
抖音网页版快捷访问 抖音网页版网页版入口操作教程
mc.js免安装版 mc.js一键畅玩入口
Win10系统服务哪些可以禁用 Win10安全优化服务列表【干货】
实现全屏滚动与导航点:专业教程
在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明
mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析
Linux如何排查内存不足OOME问题_LinuxOOM分析教程
Lar*el用户头像管理:实现图片缩放、存储与旧文件安全删除的最佳实践
美团外卖商家服务中心入口 美团商家版官网入口
html网页设计源代码怎么运行_运行html网页设计源代码步骤【指南】
Mac怎么查看崩溃日志_Mac控制台错误报告分析
狙击外星人小游戏开始_狙击外星人小游戏立即开始
深入理解Go语言中的指针类型:以*string为例
汽水音乐在线版入口_汽水音乐网页播放手册
打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门
反效果?《战地6》免费试玩开启后玩家数不升反降
在Pyomo中实现基于变量的条件约束:Big-M方法详解
Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】
Composer如何在生产环境安全地执行composer update
Odoo 16:在表单视图中基于当前记录动态修改Tree视图属性
Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法
Lar*el 递归关系中排除指定分支的教程
Excel文件在线转换快速入口 Excel在线格式转换网站
Win11怎么开启省电模式_Win11电池节电模式自动开启
我的世界官方游戏入口 我的世界官网平台直达链接
解决 Express.js 中 PUT 请求密码修改失败的路由配置指南
电脑安装程序提示“错误1722”怎么办_Windows Installer服务问题解决【教程】
DLsite中文平台入口 DLsite官网内容在线查看
1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】
深入理解Google Cloud Datastore查询:祖先路径与数据一致性
极速漫画官方主页网址 极速漫画漫画在线浏览官网链接
Go语言中JSON数据解析与字段访问教程
Excel组合图表怎么做 Excel创建柱状图与折线组合图教程【图表】
虫虫漫画精品漫画官网_虫虫漫画精品漫画官网进入精品漫画
一加手机拍照效果不好怎么办 一加哈苏影像调校与专业模式使用教程【高手篇】
深入理解J*aScript中的B样条曲线与节点向量生成
steam官方入口大全 steam账号注册及操作指南
在VS Code中配置和运行Dart程序的完整步骤
*请认真填写需求信息,我们会在24小时内与您取得联系。