kesav prakash Ответов: 1

Не считывание полей из PDF-файла с помощью iTextSharp


имейте PDF-файл, который генерируется сторонним программным обеспечением. Я пытаюсь прочитать поля PDF-файла с помощью iTextSharp. Мне нужно найти поле и поместить на него черное изображение.

В режиме отладки Акрополя и ключи всегда отсутствуют.(0)

Я пробовал разные коды, но не могу прочитать поля PDF-файла. Я также искал на форумах, но не смог понять этого.

Я могу понять, как поместить изображение, но поиск конкретного поля не работает.

В моем коде ниже я просто пытаюсь распечатать, но поля и ключи равны нулю



var pdfReader = new PdfReader(fileName);
    var fieldList = GetFormFieldNames(pdfReader);
    var fieldList2 = GetFormFieldNamesWithValues(pdfReader);
    private static string GetFormFieldNames(PdfReader pdfReader)
    {
        return string.Join("\r\n", pdfReader.AcroFields.Fields

                                       .Select(x => x.Key).ToArray());
    }

    private static string GetFormFieldNamesWithValues(PdfReader     pdfReader)
    {
        return string.Join("\r\n", pdfReader.AcroFields.Fields

                                       .Select(x => x.Key + "=" +

                                        pdfReader.AcroFields.GetField(x.Key))

                                       .ToArray());
    }

   //I have also tried like this just to display the fields
        var pdf_filename = @"C:\DownloadTXT\DA9XGWKYB 5001.pdf";
        using (var reader = new PdfReader(pdf_filename))
        {
            var fields = reader.AcroFields.Fields;

            foreach (var key in fields.Keys)
            {
                var value = reader.AcroFields.GetField(key);
                Response.Write(key + " : " + value);
            }
        }

Richard Deeming

Вы абсолютно уверены, что стороннее программное обеспечение генерирует PDF-файлы, содержащие поля? Это может быть просто добавление текста в PDF-файл, без создания каких-либо полей.

kesav prakash

pdf, разработанный в Adobe LiveCycle Designer ES9.0 клиентом, я не могу его изменить.

kesav prakash

приведенный выше код работал в некотором образце pdf только на моем клиенте pdf его не работает

Richard Deeming

Это означает, что PDF-файл, отправленный вам клиентом, не содержит никаких полей.

Вам либо нужно будет заставить вашего клиента отправить вам новый PDF-файл, который делает используйте поля или найдите другой способ сделать то, что вы пытаетесь достичь.

1 Ответов

Рейтинг:
2

mikecheel@gmail.com

Страница книги : Почему Акрофилы в моем документе пусты?[^]

Перепишите файл:

PdfReader reader = new PdfReader(src);
PdfDictionary root = reader.Catalog;
PdfDictionary form = root.GetAsDict(PdfName.ACROFORM);
PdfArray fields = form.GetAsArray(PdfName.FIELDS);
PdfDictionary page;
PdfArray annots;
for (int i = 1; i <= reader.NumberOfPages; i++) {
    page = reader.GetPageN(i);
    annots = page.GetAsArray(PdfName.ANNOTS);
    for (int j = 0; j < annots.Size; j++) {
        fields.Add(annots.GetAsIndirectObject(j));
    }
}
PdfStamper stamper = new PdfStamper(reader, new FileStream(dest, FileMode.Create));
stamper.Close();
        reader.Close();