2014-03-12 86 views
0

我們正在將我們的代碼庫從iText 2.1.7移植到iText 5.5.0(是的,我知道..我們有一點點時間了;-)。 嗯..「現在」是copyAcroForm已經渡渡鳥的方式,我在努力尋找替代驗證碼:copyAcroForm的替代方案是什麼?

File outputFile = new File... 
    Document document = new Document(); 
    FileOutputStream fos = new FileOutputStream(outputFile); 
    PdfCopy subjobWriter = new PdfCopy(document, fos); 
    document.open(); 
    PdfReader reader = new PdfReader(generationReader); 
    for (int i=1; i<=reader.getNumberOfPages(); i++) { 
    PdfImportedPage page = subjobWriter.getImportedPage(reader, i); 
    subjobWriter.addPage(page); 
    } 
    PRAcroForm form = reader.getAcroForm(); 
    if (form != null) 
    subjobWriter.copyAcroForm(reader); 
    subjobWriter.freeReader(reader); 
    reader.close(); 
    subjobWriter.close(); 
    document.close(); 
    fos.close(); 

,但還沒有真正發現任何東西。我讀了4.34左右的更新日誌,顯然我應該使用PdfCopy.addDocument()。我試過並且註釋掉了其他代碼,例如:

... 
    PdfReader reader = new PdfReader(generationReader); 
    reader.consolidateNamedDestinations(); 
    subjobWriter.addDocument(reader); 
    subjobWriter.freeReader(reader); 
    subjobWriter.setOutlines(SimpleBookmark.getBookmark(reader)); 
    ... 

但是這也沒有幫助。

問題是,除了複製表單(及其字段和內容)外,複製了原始PDF中的所有內容,或者更確切地說,它看起來像是整個表單已被展平。由於我可以找到的所有樣本都使用了不再存在的copyAcroForm()或已棄用的PdfCopyFields類,並且在itextpdf.com和「iText in Action,2nd edition」中的所有樣本都使用copyAcroForm() ),以及如何解決這個問題。任何想法的人?

羅格

回答

4

請大家看看MergeForms例如:

Document document = new Document(); 
PdfCopy copy = new PdfCopy(document, new FileOutputStream(filename)); 
copy.setMergeFields(); 
document.open(); 
for (PdfReader reader : readers) { 
    copy.addDocument(reader); 
} 
document.close(); 
for (PdfReader reader : readers) { 
    reader.close(); 
} 

其中尤其是線是非常重要的:

copy.setMergeFields(); 

你加這一行?

+0

啊謝謝布魯諾..是的,我一次添加,但顯然在錯誤的位置。您的示例工作,並表示讚賞,非常感謝!是否有計劃在iText行動的第三版(我會是一個快樂的購買者:-)? – Fuggly

+0

是和不是。我正在寫一系列書籍,但不是出版商。他們將免費在LeanPub上提供:https://leanpub.com/u/itextsoftware我已經開始寫一本關於低級PDF的書,但正如你所看到的,我已經在收集有關高級PDF的書籍示例,高級PDF創建和操作。這個視頻教程已經給你一個你可以期待的印象:http://itextpdf.com/codenvy_webapp –

+0

整潔!我會看看他們......謝謝你幫助我。還有一個最後一個問題:我看到XmpWriter.addRdfDescription()已被棄用。什麼是替代呢?是否有一個頁面可以查看已棄用方法的替代方案?或者我可以提出一個建議並添加一個Javadoc描述(如果可能的話),該描述鏈接到交互項,或者如果它的一個小改動,已經顯示了JavaDoc中的更改? – Fuggly

相關問題