ITextPDF - Link creation with PDFAnnotation
我对使用itext创建的pdf文档中的超链接有疑问。 当前,使用以下用Java编写的代码,我能够成功创建链接。 但是,当我将鼠标悬停在链接上时,将显示链接文本。 客户端不希望链接文本在悬停时出现。 如何删除悬停鼠标,或为其显示替代文本(例如"课程信息")? 我正在使用itext 5.5.9版本。 我看过第7章" iText in Action",但找不到所需的内容。 有没有更好的方法来创建链接? 任何帮助和示例将不胜感激。 谢谢。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | package edu.ucsd.act.academic.studente2t.util; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.PdfAction; import com.itextpdf.text.pdf.PdfAnnotation; import com.itextpdf.text.pdf.PdfBorderArray; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPCellEvent; import com.itextpdf.text.pdf.PdfWriter; class LinkInCellEvent implements PdfPCellEvent { protected String url; public LinkInCellEvent(String url) { this.url = url; } public void cellLayout(PdfPCell cell, Rectangle position, PdfContentByte[] canvases) { PdfWriter writer = canvases[0].getPdfWriter(); PdfAction action = new PdfAction(url); PdfAnnotation link = PdfAnnotation.createLink(writer, position, PdfAnnotation.HIGHLIGHT_INVERT, action); PdfBorderArray border = new PdfBorderArray(0, 0, 0); link.setBorder(border); writer.addAnnotation(link); } } |
这不是iText问题。它是PDF固有的。 PDF规范(ISO-32000-1)没有说明查看者应如何显示链接注释的工具提示。
您的客户(可能也应该是我们的客户)可能被以下概念所迷惑:
额外动作
在有关其他操作的部分中描述了E(输入)和X(退出)事件时,"注释"一词仅在注释中出现。当有人将鼠标悬停在小部件注释上时,可以使用其他操作(例如,在小部件注释上使用)来显示/消失自定义工具提示。
在学习PDF标准时,您会发现有几个实例可以定义其他操作(
备用栏位名称
还有一个
结论:
规范中没有描述当有人将鼠标悬停在链接注释上时显示的内容。当用户将鼠标悬停在链接注释上时,PDF查看器的每个供应商都可以决定显示什么(如果有)。无法将任何内容添加到PDF中,以迫使查看器显示其他内容(或什么也不显示)。