NumberOfPages仅返回1页而不是PDF的16页

时间:2018-05-18 13:39:06

标签: vb.net pdf itext

我需要读取包含16页的PDF文件中的值。我没有创建PDF文件。表单从第3页开始,两个第一页只是文本。

我的iTextSharp DLL的版本是:5.5.10.0

当我运行这行代码(vb.net)时:

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

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

    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

有什么可以解释iText只读取第1页而不是PDF文件的其他15页?

有一点我注意到我能正确解析的PDF文件是版本6.虽然我遇到问题的PDF是版本7.这可能是原因吗?

iTextSharp是否可以将PDF保存为较低版本,然后重试读取?

感谢您的帮助。

已编辑 - 已找到解决方案

正如KenS所说,我的PDF是XFA表格。这是我在XML Document对象中获取表单的代码

 <scale
                android:drawable="@drawable/shape_round"
                android:scaleHeight="100%"
                android:scaleGravity="bottom"/>

0 个答案:

没有答案