ITextPDF - 使用PDFAnnotation创建链接
我对使用itext创建的pdf文档中的超链接有疑问。目前,使用以下用java编写的代码,我能够成功创建链接。但是,当我将鼠标悬停在链接上时,会显示链接文本。客户端不希望悬停时出现链接文本。我该如何移除悬停,或给它显示替代文字(例如“课程信息”)?我正在使用itext版本5.5.9。我看过“行动中的iText”第7章,但无法找到我需要的东西。有没有更好的方法来创建链接?任何帮助和例子将不胜感激。谢谢。ITextPDF - 使用PDFAnnotation创建链接
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(enter)和X(exit)事件在有关其他操作的部分中描述时。人们可以使用额外的动作,例如在一个窗口小部件标注上,当有人悬停在窗口小部件标注上时,自定义的工具提示就会出现/消失。
当您学习PDF标准时,您会看到有几个实例可以定义附加动作(/AA
),但链接注释不是其中之一。
替代字段名
另外还有/TU
条目(前身为用户名条目),这是(我引用的规范),其将代替使用的替代字段名实际字段名称,无论字段在用户界面中何处标识(例如错误或状态消息指向字段)。在提取文档内容以支持残障用户的可访问性或其他用途时,此文本也很有用。/TU
条目的值通常被查看者用作工具提示,但是从描述中可以看出,/TU
条目特定于字段,而不是注释。它只能用于字段字典中,而不能用于注释字典中。
结论:
当有人悬停在链接注释未在说明书中描述无论被示出。当用户悬停在链接注释上时,PDF查看器的每个供应商可能会决定显示什么内容(如果有的话)。没有办法在PDF中添加一些可以强制观众显示其他内容(或不显示任何内容)的内容。