請永遠不要創建PDF對象手動沒有諮詢ISO-32000-1。
您要創建一個GoToR操作。這樣的動作表示爲一個PDF字典,可以包含如下鍵:
![ISO-32000-1 Table 200](https://i.stack.imgur.com/1h9JV.png)
有沒有名爲放大在該表中的關鍵,因此,你的代碼是錯誤的。
您需要d鍵,當你要鏈接到一個網頁,並定義縮放因子,你需要定義一個目標:
![ISO-32000-1 Table 151](https://i.stack.imgur.com/rAzkM.png)
換句話說,目標需要是一個PdfArray
! PdfName.FIT
是不夠的!
(所有的屏幕截圖是從Adobe提供在其網站上ISO-32000-1的副本獲得。)
更新:
如果你想添加一個鏈接到遠程頁面,您也可以按照iText in Action - Second Edition的第197-198頁上的示例進行操作:請參閱使用gotoRemotePage()方法的LinkActions示例。
在內部,這個方法看起來是這樣的:
public static PdfAction gotoRemotePage(String filename, String dest, boolean isName, boolean newWindow) {
PdfAction action = new PdfAction();
action.put(PdfName.F, new PdfString(filename));
action.put(PdfName.S, PdfName.GOTOR);
if (isName)
action.put(PdfName.D, new PdfName(dest));
else
action.put(PdfName.D, new PdfString(dest, PdfObject.TEXT_UNICODE));
if (newWindow)
action.put(PdfName.NEWWINDOW, PdfBoolean.PDFTRUE);
return action;
}
注意,這個假設您有在目標文件中的命名目的地。
我認爲,你寧願要使用,需要一個頁碼的構造:
public PdfAction(String filename, int page) {
put(PdfName.S, PdfName.GOTOR);
put(PdfName.F, new PdfString(filename));
put(PdfName.D, new PdfLiteral("[" + (page - 1) + " /FitH 10000]"));
}
當然,這不使用PdfName.FIT
。如果你真的想自己定義目標,你需要一條線,看起來像這樣:
put(PdfName.D, new PdfLiteral("[" + (page - 1) + " /Fit]"));
我已經試過這chunk.setAction(PdfAction.gotoRemotePage(文件路徑,「1」,假,真)); –
這確實比試圖手動構建'PdfAction' *更容易*。我將添加一個指向描述該方法的官方文檔的指針。 –
使用上面的代碼(在評論中)是最好的選擇? –