使用pdfbox将超链接添加到pdf文件

时间:2018-06-21 17:33:52

标签: java pdf pdfbox

我需要创建一个小的工具,在PDF文件的首页上添加超链接。我正在使用Apache PDFBox来读取pdf文件。

有什么想法如何使用此库在页面上添加超链接?

我发现了这个问题:how to set hyperlink in content using pdfbox,但这不起作用。

我只想在pdf文件的首页上添加超链接。

File file = new File(filename);
PDDocument doc = PDDocument.load(file);

PDPage page = doc.getPage(0);
...

this question上找到的解决方案至少有两个问题:

  1. PDPageContentStream类型的方法drawString(String)不适用于参数(PDAnnotationLink)

  2. colourBlue未初始化

我希望在页面底部以URL为中心添加超链接。但是目前任何建议都会有所帮助

1 个答案:

答案 0 :(得分:3)

首先,您需要像这样创建PDAnnotationLink

PDAnnotationLink link = new PDAnnotationLink(); 

link应该有一个动作:

PDActionURI actionURI = new PDActionURI();
actionUri.setURI("http://www.Google.com"); 
link.setAction(action);

最后,您需要在所需位置定义一个矩形,最后将link添加到页面的注释中。

PDRectangle pdRectangle = new PDRectangle();

pdRectangle.setLowerLeftX(...);
pdRectangle.setLowerLeftY(...);

pdRectangle.setUpperRightX(...);
pdRectangle.setUpperRightY(...);

link.setRectangle(pdRectangle);

page.getAnnotations().add(link);

如果需要,还可以通过调用link方法来为setBorderStyle(...)添加下划线。

希望这对您有用!

如果要添加一些文本,则需要创建一个PDPageContentStream,如下所示:

PDPageContentStream contentStream = new PDPageContentStream(doc,  page);
contentStream.beginText();
contentStream.newLineAtOffset(..., ...);
contentStream.showText(...);
contentStream.endText();
contentStream.close();

newLineAtOffset(..., ...)方法用于将文本放置在所需位置。

P.S。很抱歉缩进不好,但是很难在移动设备上编写。如果您需要进一步的帮助,甚至可以给我写一封罗马尼亚语的私人短信。