2014-01-14 45 views
1

在您提問之前,我已閱讀過另一篇SO文章,以及由iText的創建者Bruno Lowagie撰寫的關於如何執行此操作的文章。事實仍然是,我無法實現它的工作。通過eclipse跟蹤執行,使其看起來像它的工作,但沒有實際使用此代碼複製書籤。未被複制的書籤

我可能失去了一些東西真的很愚蠢,並要求有人點我的正確方法:

void resize (String pdfIn, String pdfOut, float x, float y, float scale) { 
PdfReader reader = new PdfReader(pdfIn); 
List <HashMap <String, Object>> bookmarks = SimpleBookmark.getBookmark (reader) ; 
// landscape letter: 
Document doc = new Document(new RectangleReadOnly(792, 612), 0, 0, 0, 0); 
PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(pdfOut)); 
doc.open(); 
PdfContentByte cb = writer.getDirectContent(); 
for(int i=1; i<=reader.getNumberOfPages(); i++){ 
    doc.newPage(); 
    PdfImportedPage page = writer.getImportedPage(reader, i); 
    // page rescaling, mandatory: 
    cb.addTemplate(page, scale, 0, 0, scale, x, y); 
} 
writer.setOutlines (bookmarks) ; 
doc.close(); 

任何線索?

回答

1

我不是真的很肯定這一點,但

寫這條線

List <HashMap <String, Object>> bookmarks = SimpleBookmark.getBookmark (reader) ; 

doc.open(); 
+0

謝謝,但是這並沒有做到這一點。 doc對象屬於作者,而不是讀者。但我無論如何都無濟於事。 – billmill

+0

但是,您先打開文檔以閱讀內容,那麼請查看您在哪裏打開文檔以供閱讀 – Aarav

+0

您打開文檔以供書寫,而不是閱讀。我檢查了你的建議解決方案,以防萬一,但它沒有奏效。 – billmill