使用iTextSharp迭代PDF表格行

时间:2018-02-04 01:16:22

标签: c# pdf itext

所以,我有一个带标签的Tagged PDF文件。正如您在此屏幕截图中看到的那样:
PDF Tags

/ TABLE标签包含所有/ TR(行)和/ TD(单元格) 现在我尝试使用以下代码获取这些对象:

    PdfReader reader = new PdfReader("test.pdf");
    PdfObject dict = null;
    for (int i = 0; i < reader.XrefSize; i++)
    {
        PdfObject obj = reader.GetPdfObject(i);
        if (obj != null)
            if (obj.GetType() == typeof(PdfDictionary))
            {
                dict = ((PdfDictionary)obj).GetAsDict(PdfName.TABLE);
                if (dict != null)
                {
                    //Do Something
                }
            }
    }

但它永远不会捕获它们。我该怎么办? 我还使用iText RUPS来调试PDF文件。我得到了这个:
iText RUPS output

1 个答案:

答案 0 :(得分:0)

你正试图重新发明轮子。当我查看你的代码时,我看到一个需要大量编程的过程的第一步,但是工作已经完成。

如果您使用的是iText 5,请查看此TaggedPdfReaderTool;如果您使用的是iText 7,请查看此TaggedPdfReaderTool

我很久以前在我的书“iText in Action - Second Edition”的背景下写了这个工具。我把它写成概念证明,表明我可以将XML文件转换为Tagged PDF,并且我可以将Tagged PDF转换回原始的XML文件。

在iText 7中,这个工具得到了改进,现在它已经在我们的测试套件中使用了。我们创建标记PDF,在我们的测试中,我们将它们转换为XML。如果XML与“预烘焙”XML不对应,则测试失败。

您可以使用此工具将Tagged PDF转换为XML文件,然后处理该XML文件以提取表格。