Мне нужно прочитать значения в файле 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