Как скопировать AcroForm с помощью iText? - PullRequest
4 голосов
/ 23 апреля 2009

У меня есть PDF с акроформой. Я использую iText, чтобы открыть этот PDF-файл и заполнить поля формы некоторыми данными. Иногда мне нужно сгенерировать больше страниц, чем в оригинальном PDF. Для этого я создаю одну страницу и заменяю ее существующей, используя этот код:

    OutputStream output = new FileOutputStream("C:\\newFile.pdf");
    PdfStamper stamper = PdfHelper.openPdfStamper("C:\\template.pdf", output);
    stamper.insertPage(NEW_PAGE_NUMBER,  new Rectangle(0,0));
    stamper.replacePage(stamper.getReader(), EXISTING_PAGE_NUMBER, NEW_PAGE_NUMBER);

При этом поля существующей страницы не копируются на новую страницу.

Это хороший способ добавить новую страницу? (новая страница должна совпадать с существующей)

Как скопировать поля формы на новую страницу? Как изменить имя нового поля формы, чтобы не было дублированных полей?

РЕДАКТИРОВАНИЕ: На странице, которую я хочу скопировать, есть таблица. Но в этой таблице всего десять строк. Если пользователь вводит более десяти элементов, я хочу заполнить всю таблицу и создать новую страницу для заполнения другими элементами.

Теперь я делаю несколько копий этой страницы, чтобы избежать этого переполнения. Но я не думаю, что это элегантное решение, и оно не работает для очень больших входов.

1 Ответ

0 голосов
/ 25 ноября 2009

Я использовал для этого PdfCopyFields. Сначала я открываю новый экземпляр PdfCopyFields с именем SetFullCompression (). Затем я загружаю свой шаблон в байтовый буфер, и для каждой страницы «шаблона» я использую PdfStamper, устанавливаю поля формы и добавляю этот вывод этого в Reader, а этот читатель в PdfCopyFields. Это было это. В моем тесте он отлично масштабировался для нескольких страниц, и окончательный размер PDF был приличным.

...