NumberOfPages возвращает только 1 страницу, а не 16 страниц PDF - PullRequest
0 голосов
/ 18 мая 2018

Мне нужно прочитать значения в файле PDF, который имеет 16 страниц.Я не создал файл PDF.Форма начинается на странице 3, две первые страницы - просто текст.

Версия моей библиотеки iTextSharp: 5.5.10.0

Когда я запускаю эту строку кода (vb.net):

Dim pdfReader As New PdfReader(pdfTemplate)

pdfReader.NumberOfPages возвращает 1.

Так что я не могу прочитать значение формы.У кого-нибудь есть идея, почему я получаю это?

Я проверил свой код с другими файлами PDF и он работает.Я могу читать все страницы и поля.Это полный фрагмент кода, который я использую для своего теста.Он просто открывает PDF и просматривает поля.

Try
    Dim pdfTemplate As String = "D:\myFile.pdf"
    Dim pdfReader As New PdfReader(pdfTemplate)

    Dim pdfFields As AcroFields = pdfReader.AcroFields
    Dim pdfVal As String = ""

    For Each pdfField As KeyValuePair(Of String, AcroFields.Item) In pdfReader.AcroFields.Fields
        pdfVal = pdfFields.GetField(pdfField.Key)
        ShowMessage("KEY=[" & pdfField.Key & "]...VALUE=[" & pdfVal & "]", mINFO)
    Next
Catch ex As Exception
    ShowMessage(ex.ToString, mERROR)
End Try

Что может объяснить, что iText читает только страницу 1, а не 15 других страниц файла PDF?

Одна вещь, которую я заметилэто файл PDF, который я могу правильно проанализировать, версии 6. Хотя у меня проблемы с PDF, это версия 7. Может ли это быть причиной?

Могу ли я с iTextSharp сохранить PDF вболее низкая версия, а затем повторите попытку чтения?

Спасибо за помощь.

РЕДАКТИРОВАНИЕ - НАЙДЕНО РЕШЕНИЯ

Как и предлагал KenS, мой PDF был формой XFA.Это мой код для получения формы в объекте XML Document

Try

    Dim pdfTemplate As String = "D:\myFile.pdf"
    Dim pdfReader As New PdfReader(pdfTemplate)
    Dim pdfFields As AcroFields = pdfReader.AcroFields

    If pdfFields.Xfa.XfaPresent = True Then

        Dim xmlDoc As New XmlDocument
        xmlDoc.LoadXml(pdfFields.Xfa.DatasetsNode.OuterXml)

        //Your code here to parse through xmlDoc

    Else
        MessageBox.Show("The file is not valid.")
    End If

    pdfReader.Close()
    pdfReader.Dispose()

Catch ex As Exception
    MessageBox.Show(ex.Message)
End Try
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...