登录
首页 >  文章 >  java教程

Java添加PDF注释教程详解

时间:2025-12-11 23:27:37 406浏览 收藏

推广推荐
免费电影APP ➜
支持 PC / 移动端,安全直达

小伙伴们对文章编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《Java添加PDF注释方法详解》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

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

Java如何在PDF添加注释

Java中给PDF添加注释,主流方式是使用 iText(推荐 7.x 版本)或 Apache PDFBox。两者都支持添加文本注释(如“高亮”“下划线”“弹出式备注”)、图章、线条批注等,但 API 设计和注释类型支持略有差异。

用 iText 7 添加文本注释(如高亮、下划线)

iText 7 的注释功能封装在 pdfalayout 模块之外的 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 添加简单批注(如文字备注、高亮)

PDFBox 更轻量,对基础注释支持友好。其 PDAnnotation 子类(如 PDAnnotationTextPDAnnotationHighlight)可直接添加到页面的 annotations 列表。

  • 加载 PDF:用 PDDocument.load()
  • 获取页面:document.getPage(0)
  • 创建高亮注释:PDAnnotationHighlight highlight = new PDAnnotationHighlight();
  • 设置高亮区域(COSArray 形式的四边形坐标,按顺时针顺序:x1,y1,x2,y2,...x4,y4)
  • 设置颜色、不透明度,并添加进页面注释列表:page.getAnnotations().add(highlight)

注意:PDFBox 的高亮坐标是四点定义的多边形,不是矩形,更适合真实高亮文本轮廓;若只需矩形标注,可用 PDAnnotationSquarePDAnnotationCircle

添加注释前的关键准备事项

无论用哪个库,以下几点容易被忽略但直接影响效果:

  • 坐标系理解:PDF 页面坐标原点在左下角,y 向上增长;而屏幕或打印预览常以左上为原点——需做 y 转换:y_pdf = pageHeight - y_screen
  • 字体与编码:中文注释内容需确保嵌入支持中文的字体(iText 中用 PdfFontFactory.createFont() 加载 NotoSansCJK;PDFBox 中设置 PDAnnotationText.setFont() 并 embed 字体流)
  • 保存与权限:部分 PDF 启用编辑限制(如禁止注释),需先检查并移除密码或权限(PDDocument.setAllSecurityToBeRemoved(true) 或 iText 的 setEncryption() 解密)

选型建议:iText 还是 PDFBox?

如果项目已用 iText 生成 PDF,继续用它加注释更连贯,且对复杂注释(如带动作的按钮、3D 标注)支持更好;若仅需轻量批注、避免商业授权(iText 7 AGPL 要求开源或购买许可),PDFBox 是更自由的选择。

基本上就这些。实际添加时,建议先用 PDF 阅读器测量目标位置的坐标,再写代码微调——注释“看不见”往往只是坐标偏了。

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>