我需要创建一个小的工具,在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上找到的解决方案至少有两个问题:
PDPageContentStream类型的方法drawString(String)不适用于参数(PDAnnotationLink)
colourBlue未初始化
我希望在页面底部以URL为中心添加超链接。但是目前任何建议都会有所帮助
答案 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。很抱歉缩进不好,但是很难在移动设备上编写。如果您需要进一步的帮助,甚至可以给我写一封罗马尼亚语的私人短信。