iTextPDF 超链接未链接到正确的位置

iTextPDF hyperlink not linking to the right place

我有一堆 PDF,我已经在代码中合并了这些文件。在合并的 PDF 的开头,我有一个内容页面,分别 links 到所述 PDF。这些 pdfAction.gotoLocalPage links 有时 无法正常工作,而是跳转到页面底部和下一页之间,但是 PDF 书签 hyperlink总是工作正常。

书签代码:

int pageToLinkTo=prevSectionPageCount+sectionPageCount+numberOfIndexPages+currentIndexPage+1;

document.put("Title", documentName);
document.put("Action", "GoTo");                 
document.put("Page",String.format("%d Fit", pageToLinkTo));

内容页面的代码link:

PdfAction action = PdfAction.gotoLocalPage(pageToLinkTo, new PdfDestination(PdfDestination.FIT,-1,-1,0), stamper.getWriter());                              
chunk.setAction(action);

这两个评估到同一页。源 PDF 文件可能有问题吗?有效的 links 和跳转到错误位置的 links 之间唯一显着的区别是源 PDF 的页面大小略有不同(0.1 英寸不同)。

如有任何帮助,我们将不胜感激!

谢谢

我看到您是这样创建目的地的:

new PdfDestination(PdfDestination.FIT,-1,-1,0)

这是一种奇怪的创建目标的方式,以便页面显示适合查看者 window。请看一下The ABC of PDF with iText。这本书还没有完成,但它是免费的,在 table 3.7 中,您可以看到哪些目标采用多少参数。

如果您希望页面适合查看者 window,则不需要任何额外参数:

new PdfDestination(PdfDestination.FIT)

有一个目的地需要三个额外的参数:

new PdfDestination(PdfDestination.XYZ, x, y, z)

在这种情况下,xy 是坐标,z 是缩放因子。我认为您在添加 xyz 参数时混淆了 PDF 查看器,而您只是希望它适合查看器中的页面 window.