如何在C#中从pdf或word文件中删除文本(删除粗体,图像和其他富文本格式化媒体)?
答案 0 :(得分:7)
您可以使用为索引服务设计/使用的过滤器。它们旨在从各种文档中提取纯文本,这对于在文档内部进行搜索很有用。您可以将它用于Office文件,PDF,HTML等,基本上任何具有过滤器的文件类型。唯一的缺点是您必须在服务器上安装这些过滤器,因此如果您无法直接访问服务器,则可能无法实现。有些过滤器预先安装了Windows,但有些过滤器,如PDF,您必须自己安装。对于C#实现,请查看以下文章:Using IFilter in C#
答案 1 :(得分:5)
您有多种选择。
<强> 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
答案 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或带有边界矩形的字符。
免责声明:我为图书馆的供应商工作。