Vb.net 解析Microsoft Office和PDF文档的最佳方法是什么?

Vb.net 解析Microsoft Office和PDF文档的最佳方法是什么?,vb.net,pdf,ms-office,parsing,lucene.net,Vb.net,Pdf,Ms Office,Parsing,Lucene.net,我正在使用VB9(VS2008)和Lucene.NET开发一个桌面搜索引擎。 Lucene.NET中的索引器只接受原始文本数据,无法直接从Microsoft Office(DOC、DOCX、PPT、PPTX)和PDF文档中提取原始文本。 从这些文件中提取原始文本数据的最佳方法是什么?您可以像Windows桌面搜索一样,使用实现IFilter界面的组件 我只能在这里谈论MS Office文档。有几种方法可以做到这一点: 使用COM自动化 使用以更易访问的格式输出文档的转换器 使用第三方库

我正在使用VB9(VS2008)和Lucene.NET开发一个桌面搜索引擎。 Lucene.NET中的索引器只接受原始文本数据,无法直接从Microsoft Office(DOC、DOCX、PPT、PPTX)和PDF文档中提取原始文本。
从这些文件中提取原始文本数据的最佳方法是什么?

您可以像Windows桌面搜索一样,使用实现IFilter界面的组件


我只能在这里谈论MS Office文档。有几种方法可以做到这一点:

  • 使用COM自动化
  • 使用以更易访问的格式输出文档的转换器
  • 使用第三方库
  • 使用Microsoft的OpenXMLSDK
COM自动化的缺点是不总是可靠的,主要是因为应用程序往往由于模式弹出对话框而挂起

转换器可用于Word。您可以查看Microsoft提供的文本转换器SDK,该SDK允许您在独立应用程序中使用Word附带的文档转换器。需要一些C编码,但由于您使用与Office相同的转换引擎,因此将获得高保真结果。SDK可从以下网站获得

对于使用第三方库的第三个选项,您可能希望了解ApachePOI或SourceForge上的。后者提供了一个C#库,允许您从二进制Word文档中提取文本。PowerPoint开发仍处于早期阶段,但文本提取应该已经开始工作

最后一种选择是使用微软的OpenXMLSDK。这可能是首选/最简单的方法。在谷歌上搜索样本。您还可以通过首先使用Office Compatibility Pack(从Microsoft下载并安装)转换二进制文档来处理它们:

字:

“C:\Program Files\Microsoft Office\Office12\wordconv.exe”-oice-nme
卓越:

"C:\Program Files\Microsoft Office\Office12\excelcnv.exe" -oice <input file> <output file>
“C:\Program Files\Microsoft Office\Office12\excelcnv.exe”-oice
幻灯片:

"C:\Program Files\Microsoft Office\Office12\ppcnvcom.exe" -oice <input file> <output file>
“C:\Program Files\Microsoft Office\Office12\ppcnvcom.exe”-oice

对于PDF,您可以使用我公司的具有文本提取功能的组件

这正是您为从PDF中提取文本而编写的代码:

public String ReadTextFromPages(Stream s)
{
    using (PdfTextDocument doc = new PdfTextDocument(s))
    {
        PdfTextReader rdr = doc.GetPdfTextReader();
        return rdr.ReadToEnd();
     }
}

如果我能补充一点——为了对所有神圣事物的热爱,请使用FoxIt PDF IFilter。32位版本是免费的。它比Adobe的更快、更稳定。
public String ReadTextFromPages(Stream s)
{
    using (PdfTextDocument doc = new PdfTextDocument(s))
    {
        PdfTextReader rdr = doc.GetPdfTextReader();
        return rdr.ReadToEnd();
     }
}