2015-05-21 77 views
1

我有一堆PDF,我已经合并了这一点在代码中。在合并PDF开始时,我有一个内容页面,分别链接到所述PDF。这些pdfAction.gotoLocalPage链接有时不能正常工作,而是跳转到页面底部和下一页之间,但PDF书签超链接始终正常工作。iTextPDF超链接没有链接到正确的地方

为书签的代码:

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

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

的内容页面的链接代码:

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

这些评价都到同一页。源PDF文件可能有问题吗?链接之间唯一显着的区别是工作链接和跳转到错误位置的链接是源PDF具有略微不同的页面大小(0.1英寸不同)。

任何帮助,将不胜感激!

感谢

回答

2

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

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

这使得显示,以适应浏览器窗口中的页面创建一个目的地一种奇怪的方式。请看The ABC of PDF with iText。这本书尚未完成,但它是免费的,在表3.7中,您可以看到哪些目的地需要多少个参数。

如果你想在页面以适合查看器窗口,你不需要任何额外的参数:

new PdfDestination(PdfDestination.FIT) 

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

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

在这案例xy是坐标,z是缩放因子。我认为当您想让它适合查看器窗口中的页面时,您通过添加xyz参数来混淆PDF查看器。

+0

就是这样。非常感谢您的帮助。额外的参数必须一直抛弃它。这很好奇,因为除了少数精选的PDF外,99%的PDF工作得很好。无论哪种方式,它现在工作。感谢您提供该资源的链接 – Smittey