iTextSharp: Pdf Прямоугольные переключатели становятся круглыми при заполнении данных - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь заполнить существующий PDF. Есть прямоугольные переключатели, которые я пытаюсь заполнить. Но когда я оцениваю это. Внешний вид меняется с прямоугольного на круглый.

Это мой код:

 using (var existingFileStream = new FileStream(existingFileNameWithPath, FileMode.Open, FileAccess.Read))
            using (var newFileStream = new FileStream(fileNameNew, FileMode.Create))
            {
                // Open existing PDF
                var pdfReader = new PdfReader(existingFileStream);

                // PdfStamper, which will create
                var stamper = new PdfStamper(pdfReader, newFileStream,'\0', true);
                var form = stamper.AcroFields;
                form.SetField("Application for Export", "New");
                stamper.Close();
                pdfReader.Close();
            }

PDF, который я пытаюсь сделать, похож на этот pdf: https://www.faa.gov/documentLibrary/media/Form/FAA_Form_8130-1.pdf

1 Ответ

0 голосов
/ 28 августа 2018

Поля формы в PDF-файлах немного уникальны. Они определяют, как они должны выглядеть во включенном, выключенном, а иногда даже сфокусированном (активном нажатии) состоянии с помощью явных операций рисования.

При заполнении форм iText должен создавать эти значения, так как нет гарантии, что они существуют (особенно когда вы создаете форму с iText!), И iText вставляет «типичный» вид. Для радио кнопок это круглая кнопка. Обратите внимание, что, по крайней мере для меня, круглая кнопка появляется только тогда, когда я активно нажимаю кнопку.

У вас есть два варианта: поверьте, что рассматриваемый PDF-файл уже имеет состояния внешнего вида, и отключите его создание (в указанном вами PDF-файле они есть)

    PdfReader reader = new PdfReader(INPUT_FILE);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(OUTPUT_FILE));
    AcroFields fields = stamper.getAcroFields();
    fields.setGenerateAppearances(false); //Add this line
    fields.setField("Application for Export", "New");
    stamper.close();

В качестве альтернативы вы можете вручную написать операции рисования и вставить их в состояние внешнего вида поля формы самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...