从pdf和word文件中提取文本

时间:2010-09-06 16:33:55

标签: c# pdf ms-word

如何在C#中从pdf或word文件中删除文本(删除粗体,图像和其他富文本格式化媒体)?

6 个答案:

答案 0 :(得分:7)

您可以使用为索引服务设计/使用的过滤器。它们旨在从各种文档中提取纯文本,这对于在文档内部进行搜索很有用。您可以将它用于Office文件,PDF,HTML等,基本上任何具有过滤器的文件类型。唯一的缺点是您必须在服务器上安装这些过滤器,因此如果您无法直接访问服务器,则可能无法实现。有些过滤器预先安装了Windows,但有些过滤器,如PDF,您必须自己安装。对于C#实现,请查看以下文章:Using IFilter in C#

答案 1 :(得分:5)

PDF:

您有多种选择。

<强> pdftotext:
下载XPDF utilities。在.zip文件中有各种命令行实用程序。一个是pdftotext(.exe)。它可以从行为良好的PDF文件中提取所有文本内容。键入pdftotext -help以了解其命令行参数。

<强>的Ghostscript:
安装latest version of Ghostscript(v.8.71)。 Ghostscript是一个PostScript和PDF解释器。您也可以使用它从PDF中提取文本:

gswin32c.exe ^
 -q ^
 -sFONTPATH=c:/windows/fonts ^
 -dNODISPLAY ^
 -dSAFER ^
 -dDELAYBIND ^
 -dWRITESYSTEMDICT ^
 -dSIMPLE ^
 -f ps2ascii.ps ^
 -dFirstPage=3 ^
 -dLastPage=7 ^
 input.pdf ^
 -dQUIET 

这会将input.pdf第3-7页中包含的文本输出到stdout。您可以通过将> /path/to/output.txt附加到命令来将其重定向到文件。 (检查以确保Ghostscript的ps2ascii.ps子目录中存在PostScript实用程序lib。)

如果省略-dSIMPLE参数,则文本输出将猜测换行符和单词间距。有关详细信息,请查看ps2ascii.ps文件本身内的注释。您甚至可以使用-dCOMPLEX替换该参数以获取其他文本格式信息。

答案 2 :(得分:0)

对于PDF,你看了TallPDF

同时检查一下:http://www.codeproject.com/KB/files/PDF_to_TEXT.aspx

答案 3 :(得分:0)

使用Word对象模型,这是唯一可靠的方式,因为Word格式未打开,因版本而异。

答案 4 :(得分:0)

您可能想要查看PDFBox。这是一个代码项目页面的链接,向您展示如何在C#中使用它以及其他有用的注释。

http://www.codeproject.com/KB/string/pdf2text.aspx

至于Word,使用Word对象模型的建议可能是最准确的。

答案 5 :(得分:0)

Docotic.Pdf library可用于从PDF文件中提取文本。

图书馆可以extract plain text and text with formatting。此外,可以使用库的API检索collection of words或带有边界矩形的字符。

免责声明:我为图书馆的供应商工作。