2015-05-21 75 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