目前,我们正在将代码库从iText 2.1.7移植到iText 5.5.0(是的,我知道..我们花了一点时间;-)。好吧..“现在” copyAcroForm已经取代了Dodo,我正在努力寻找该代码的替代方案:
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();
Run Code Online (Sandbox Code Playgroud)
但还没有真正找到任何东西。我读了4.34或以上的变更日志,因此我显然应该使用PdfCopy.addDocument()。我试过了,并注释掉了其他代码,例如:
...
PdfReader reader = new PdfReader(generationReader);
reader.consolidateNamedDestinations();
subjobWriter.addDocument(reader);
subjobWriter.freeReader(reader);
subjobWriter.setOutlines(SimpleBookmark.getBookmark(reader));
...
Run Code Online (Sandbox Code Playgroud)
但这也无济于事。
问题是,除了表格(及其字段和内容)以外,原始PDF的所有内容都被复制了,或者看起来整个表格已被展平。
由于所有示例都可以使用不再存在的copyAcroForm()或已弃用的PdfCopyFields类,因此itextpdf.com和“ iText in Action,第二版”中的所有示例也都使用copyAcroForm(),我不知道如何解决这个问题。有人知道吗?
罗格
itext ×1