Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将部分数据标记为超链接,iText_Java_Itextsharp_Itext - Fatal编程技术网

Java 将部分数据标记为超链接,iText

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

我有一个段落(来自数据库表),其中可能包含一个网址(例如www.google.com)。在生成的PDF文档中,这会自动表现为一个超链接(带有可单击操作的手动光标)。 有没有办法将其标记为超链接

我以前使用以下代码创建并标记为超链接:

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索引,并且不会产生任何效果。