Java 将部分数据标记为超链接,iText
我有一个段落(来自数据库表),其中可能包含一个网址(例如www.google.com)。在生成的PDF文档中,这会自动表现为一个超链接(带有可单击操作的手动光标)。 有没有办法将其标记为超链接 我以前使用以下代码创建并标记为超链接:Java 将部分数据标记为超链接,iText,java,itextsharp,itext,Java,Itextsharp,Itext,我有一个段落(来自数据库表),其中可能包含一个网址(例如www.google.com)。在生成的PDF文档中,这会自动表现为一个超链接(带有可单击操作的手动光标)。 有没有办法将其标记为超链接 我以前使用以下代码创建并标记为超链接: Chunk c = new Chunk("www.google.com", font); PdfAction action = new PdfAction("www.google.com"); PdfAnnotation annotation = PdfAnnot
Chunk c = new Chunk("www.google.com", font);
PdfAction action = new PdfAction("www.google.com");
PdfAnnotation annotation = PdfAnnotation.createLink(writer,new Rectangle(0, 0), PdfName.HIGHLIGHT, action);
annotation.put(PdfName.CONTENTS,new PdfString("www.google.com"));
annotation.setBorderStyle(new PdfBorderDictionary(0,PdfBorderDictionary.STYLE_BEVELED));
c.setAnnotation(annotation);
但这是一个静态文本。
有关段落可能包含链接,也可能不包含链接。
如何克服这种情况?当您从数据库中获取段落文本时,我假设您有一个
字符串。您只需检查该字符串是否包含URL,例如使用basic或,具体取决于需要的详细程度
一旦确定了字符串的哪一部分是URL,就可以将其分为3部分:前、URL和后。然后使用之前使用的代码将超链接创建为一个区块
,并将这三个部分组合成一个段落
:
Chunk before = new Chunk("Before ");
Chunk c = new Chunk("www.google.com");
Chunk after = new Chunk(" After");
// create link annotation for c
Paragraph p = new Paragraph();
p.add(before);
p.add(c);
p.add(after);
如果你想处理一个段落内的多个超链接,只需对后面的文本再次执行同样的操作
对于测试,您可能希望在PDF查看器中禁用自动超链接,以便检查链接注释是否确实存在。在Adobe Acrobat中,您可以在“常规首选项”窗格中执行此操作:取消选中“从URL创建链接”。仅供参考,“文本自动转换为超链接”实际上是Adobe产品的一项功能,不保证是其他产品的一项功能。您可以通过进入编辑>首选项>常规>从URL创建链接来禁用它。根据,即使手动创建注释,这些自动链接仍将被创建,但是它们将在注释后面有效地进行z索引,并且不会产生任何效果。