You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

iText7技术问题:如何添加无边框无下划线的PDF链接

我来帮你搞定iText7里添加无下划线、无边框文档内部链接的问题!你遇到的情况其实挺常见的——官方示例可能没把两个关键设置说透,只改其中一个自然达不到预期效果。

正确实现思路

要同时去掉链接的下划线和边框,需要分别处理文本显示样式链接注释属性两个独立部分:

  • 下划线属于文本样式,直接控制链接文字的外观;
  • 边框属于PDF的链接注释(点击交互区域的标识),需要单独关闭注释的边框属性。

完整代码示例

// 初始化PDF和文档对象
PdfDocument pdfDoc = new PdfDocument(new PdfWriter("output.pdf"));
Document doc = new Document(pdfDoc);

// 1. 创建跳转目标(这里以跳转到第2页顶部为例)
PdfDestination pageDest = PdfDestination.makeDestination(new PdfString("topOfPage2"));
pdfDoc.addNamedDestination("topOfPage2", pageDest);

// 2. 创建跳转动作
PdfAction goToAction = PdfAction.createGoTo("topOfPage2");

// 3. 创建链接并设置样式
Link internalLink = new Link("点击跳转到第二页顶部", goToAction);
// 取消文本下划线
internalLink.setUnderline(false);

// 4. 取消链接注释的边框
PdfLinkAnnotation linkAnnotation = internalLink.getLinkAnnotation();
if (linkAnnotation != null) {
    linkAnnotation.setBorder(PdfAnnotationBorder.NO_BORDER);
}

// 5. 将链接添加到文档中
doc.add(new Paragraph("这是一段包含").add(internalLink).add("的测试文本。"));

// 别忘了关闭文档
doc.close();

为什么之前的方法没生效?

  • 官方示例可能只提到了取消文本下划线(setUnderline(false)),但没说明PDF链接注释默认带有边框,所以你看不到边框消失;
  • 你改编的方案可能只替换了边框样式为下划线,但没同时关闭文本下划线和注释边框这两个独立设置。

这段代码会生成完全无下划线、无边框,但跳转功能正常的文档内部链接,你可以直接测试使用。

内容的提问来源于stack exchange,提问作者Arne S

火山引擎 最新活动