我已经实现了使用pdfbox在pdf中添加指向文件的链接的功能。以下是我正在使用的代码:
PDAnnotationLink txtLink = new PDAnnotationLink();
PDActionRemoteGoTo remoteGoto = new PDActionRemoteGoTo();
PDComplexFileSpecification fileDesc = new PDComplexFileSpecification();
file.setExecutable(true);
fileDesc.setFile(System.IO.Path.GetFileName(filePath));
fileDesc.setFileUnicode(System.IO.Path.GetFileName(filePath));
fileDesc.setFileDescription("");
remoteGoto.setOpenInNewWindow(true);
remoteGoto.setFile(fileDesc);
txtLink.setAction(remoteGoto);
txtLink.setRectangle(rect);
page.getAnnotations().add(txtLink);
生成的链接在基于Windows的pdf编辑器中工作,但不适用于ios的pdfviewer。使用上述代码以pdf格式输入的命令是:
12 0 obj
<<
/Type /Annot
/Subtype /Link
/A 17 0 R
/Rect [1578.599 316.56006 1600.6244 326.62427]
>>
endobj
17 0 obj
<<
/S /GoToR
/NewWindow true
/F 20 0 R
>>
endobj
20 0 obj
<<
/Type /Filespec
/F (A201NORTHSOUTHSITEELEVATIONS.pdf)
/UF (A201NORTHSOUTHSITEELEVATIONS.pdf)
/Desc ()
>>
endobj
如果我使用记事本手动将/ D [0 / Fit]命令添加到/ S / GoToR,则链接有效。 D =那么如何使用pdfbox库添加它。
答案 0 :(得分:0)
这样做:
PDPageDestination dest = new PDPageFitDestination();
dest.setPageNumber(0);
remoteGoto.setD(dest.getCOSObject());
或者,只需创建COSArray
并添加0和COSName.getPDFName("Fit")
,然后将其传递给setD()
。