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

Add hyperlink to pdf files using pdfbox

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

知道如何使用此库在页面上添加超链接吗?

我发现了这个问题:,但这不起作用。

我只想在 pdf 文件的第一页添加超链接。

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

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

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

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

  2. colourBlue未初始化

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

首先,您需要像这样创建一个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);

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

希望这对你有用!

如果你想添加一些文本,那么你需要像这样创建一个PDPageContentStream

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

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

P.S。抱歉缩进不好,但在手机上写起来很难。如果您需要任何进一步的帮助,甚至可以用罗马尼亚语给我写私信。