首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >可以使用iTextSharp从PDF文件中获取结构元素吗?

可以使用iTextSharp从PDF文件中获取结构元素吗?
EN

Stack Overflow用户
提问于 2012-02-16 15:09:35
回答 1查看 6.1K关注 0票数 18

我们正在使用带有C# WinForms应用程序的iTextSharp来解析PDF文件。使用iTextSharp,我可以轻松地从PDF文件中提取文本数据。假设一个PDF文件包含一个由两行文本包围的图像。在这种情况下,我无法提取有关图像的信息。

我的要求是:

  1. 获取PDF文件的结构元素
  2. Process,无论每个元素的类型是文本、图像、表还是其他

例如,结构图元与以下内容类似:

text :paragraph1
text :paragraph2
Image:Image
text :paragraph3
Table:table info
text :Paragraph4

如果我能以这样的格式获得信息,我就可以很容易地理解文本、图像、表格、页眉或页脚信息。

那么,是否可以使用iTextSharp来获取此类信息呢?如果是,请告诉我这一点。另外,你能推荐一些其他的工具来满足这个需求吗?

感谢所有人,

萨拉瓦南

EN

回答 1

Stack Overflow用户

发布于 2014-01-19 05:31:10

不久前,我曾经有过这种需求。我使用了这个函数(来自Extract images using iTextSharp):

private static PdfObject FindImageInPDFDictionary(PdfDictionary pg)
{
    PdfDictionary res =
        (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));


    PdfDictionary xobj =
      (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));
    if (xobj != null)
    {
        foreach (PdfName name in xobj.Keys)
        {

            PdfObject obj = xobj.Get(name);
            if (obj.IsIndirect())
            {
                PdfDictionary tg = (PdfDictionary)PdfReader.GetPdfObject(obj);

                PdfName type =
                  (PdfName)PdfReader.GetPdfObject(tg.Get(PdfName.SUBTYPE));

                //image at the root of the pdf
                if (PdfName.IMAGE.Equals(type))
                {
                    return obj;
                }// image inside a form
                else if (PdfName.FORM.Equals(type))
                {
                    return FindImageInPDFDictionary(tg);
                } //image inside a group
                else if (PdfName.GROUP.Equals(type))
                {
                    return FindImageInPDFDictionary(tg);
                }

            }
        }
    }

    return null;
}

正如您在foreach (PdfName name in xobj.Keys)语句中看到的,我认为您可以轻松地解析整个PDF并处理其中的各种数据。但我不确定你需要的“垂直性”部分。

希望能对你有所帮助。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9306970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档