У меня есть приложение, которое я использую для заполнения формы PDF с помощью iTextSharp.
/// <summary>
/// Imports XFA Data into a new PDF file.
/// </summary>
/// <param name="pdfTemplate">A PDF File with an unpopulated form.</param>
/// <param name="xmlFormData">XFA form data in XML format.</param>
/// <returns>a memorystream containing the new PDF file.</returns>
public static void XFAImport(System.IO.Stream pdfTemplate, System.IO.Stream xmlFormData, System.IO.Stream outputStream)
{
using (iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(pdfTemplate))
{
using (iTextSharp.text.pdf.PdfStamper stamper = new iTextSharp.text.pdf.PdfStamper(reader, outputStream))
{
stamper.Writer.CloseStream = false;
stamper.AcroFields.Xfa.FillXfaForm(xmlFormData);
}
}
}
Приведенный выше код принимает незаполненную форму pdf и данные xml и записывает в outputStream, который затем сохраняется в файл.
Когда вы открываете файл в Adobe, вы видите, что данные формы заполнены правильно. Однако если вы затем сохраните этот файл из Acrobat XI, а затем снова откроете его, импортированные данные больше не будут видны.
Я не думаю, что проблема связана с XML, который я импортирую, потому что, если вместо использования iTextShart я вместо этого использую Acrobat XI «инструменты/форма/дополнительные параметры формы/импорт данных». Полученный файл можно сохранить и снова открыть корректно.
Мой вопрос:
Правильно ли я использую PdfStamper выше?
Есть ли какие-либо шаги, которые я могу предпринять, чтобы правильно сохранить полученный файл?
PS. Я заметил, что после повторного сохранения выходного pdf-файла с помощью Acrobat XI результирующий файл в основном идентичен оригиналу, однако в конце вставлены дополнительные 11 КБ данных.
конец выходного pdf-файла:
trailer
<</Size 51/Root 14 0 R/Info 3 0 R/ID [<56549fdaf0c5ab4e9321d77f406e6455><5b60738018e0cdac94c6d1b924fc8bed>]>>
%iText-5.4.4
startxref
529008
%%EOF
После сохранения в Acrobat XI к нему добавляется больше данных:
trailer
<</Size 51/Root 14 0 R/Info 3 0 R/ID [<56549fdaf0c5ab4e9321d77f406e6455> <5b60738018e0cdac94c6d1b924fc8bed>]>>
%iText-5.4.4
startxref
529008
%%EOF
3 0 obj
<</CreationDate(D:20100120124725-05'00')/Creator(Adobe LiveCycle Designer ES 8.2)/ModDate(D:20140221145558-06'00')/Producer(Adobe LiveCycle Designer ES 8.2; modified using iTextSharp’ 5.4.4 ©2000-2013 1T3XT BVBA \(AGPL-version\))>>
endobj
4 0 obj
<</Length 3261/Subtype/XML/Type/Metadata>>stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
/*more data excluded*/