我们正在使用带有C# WinForms应用程序的iTextSharp来解析PDF文件。使用iTextSharp,我可以轻松地从PDF文件中提取文本数据。假设一个PDF文件包含一个由两行文本包围的图像。在这种情况下,我无法提取有关图像的信息。
我的要求是:
例如,结构图元与以下内容类似:
text :paragraph1
text :paragraph2
Image:Image
text :paragraph3
Table:table info
text :Paragraph4
如果我能以这样的格式获得信息,我就可以很容易地理解文本、图像、表格、页眉或页脚信息。
那么,是否可以使用iTextSharp来获取此类信息呢?如果是,请告诉我这一点。另外,你能推荐一些其他的工具来满足这个需求吗?
感谢所有人,
萨拉瓦南
发布于 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并处理其中的各种数据。但我不确定你需要的“垂直性”部分。
希望能对你有所帮助。
https://stackoverflow.com/questions/9306970
复制相似问题