这篇文章最初只描述使用 PDFBox 来解析PDF文件。现在它已经被扩展到包括使用 IFilter 和 iTextSharp 的例程了。
   这篇文章和对应的Visual Studio项目已经更新到目前最新的 PDFBox 版本(1.8.4)。可以下载包含所有依赖内容的完整项目(要消除依赖关系有点棘手)。
   如何解析 PDF 文件
   在。NET中从PDF文件里提取文本的几种主要方法有:
   Microsoft 的 IFilter 接口 和 Adobe 的 IFilter 实现;
   iTextSharp;
   PDFBox.
   不幸的是这些 PDF 解析方案都不完美。我们将在下面讨论这些方法。
   Adobe PDF IFilter
   为了使用 IFilter 接口来解析 PDF 文件,你需要:
   Windows 2000 或者后续版本
   Adobe Acrobat 或 Reader 7.0.5+ (或单独的 Adobe PDF IFilter [adobe.com])
   IFilter COM 封装类 [dotlucene.net]
   样例代码:
   using IFilter;
   // …
   public static string ExtractTextFromPdf(string path) {
   return DefaultParser.Extract(path);
   }
   缺点:
   使用了不可靠的 COM 互操作来处理 IFilter 接口 (并且组合 IFilter COM、 Adobe PDF IFilter 特别麻烦)。
   需要在目标系统上单独安装 Adobe IFilter.如果你需要对其它人发布可索引的解决方案,会很痛苦。
   iTextSharp www.yztrans.com
   iTextSharp是一个 Java 的PDF 操作库iText的。NET输出。它主要着眼于编辑PDF而不是阅读,但它当然也支持从PDF中提取文本(尽管有点大材小用)。
   例程:
   using iTextSharp.text.pdf;
   using iTextSharp.text.pdf.parser;
   // …
   public static string ExtractTextFromPdf(string path)
   {
   using (PdfReader reader = new PdfReader(path))
   {
   StringBuilder text = new StringBuilder();
   for (int i = 1; i <= reader.NumberOfPages; i++)
   {
   text.Append(PdfTextExtractor.GetTextFromPage(reader, i));
   }
   return text.ToString();
   }
   }
   信用证: 成员号 10364982
   缺点:
   需要许可证(如果你不喜欢 AGPL许可证 的话)
   PDFBox www.tygj123.com
   PDFBox是另一个Java PDF类库。它同时也可以与原来的Java Lucene一同使用(参见LucenePDFDocument)。
   幸运的是,PDFBox有一个使用IKVM.NET开发的。NET版本 (只需访问PDFBox下载页)。
   在。NET中使用PDFBox需要引用:
   IKVM.OpenJDK.Core.dll
   IKVM.OpenJDK.SwingAWT.dll
   pdfbox-1.8.4.dll
   并将下列文件复制到bin文件夹下:
   commons-logging.dll
   fontbox-1.8.4.dll
   IKVM.OpenJDK.Util.dll
   IKVM.Runtime.dll
   使用PDFBox解析PDF十分简单:
   using org.apache.pdfbox.pdmodel;
   using org.apache.pdfbox.util;
   // …
   private static string ExtractTextFromPdf(string path)
   {
   PDDocument doc = null;
   try {
   doc = PDDocument.load(path)
   PDFTextStripper stripper = new PDFTextStripper();
   return stripper.getText(doc);
   }
   finally {
   if (doc != null) {
   doc.close();
   }
   }
   }
   编译后的大小加起来差不多有18MB:
   IKVM.OpenJDK.Core.dll (4 MB)
   IKVM.OpenJDK.SwingAWT.dll (6 MB)
   pdfbox-1.8.4.dll (4 MB)
   commons-logging.dll (82 kB)
   fontbox-1.8.4.dll (180 kB)
   IKVM.OpenJDK.Util.dll (2 MB)
   IKVM.Runtime.dll (1 MB)
   速度还可以:解析U.S. Copyright Act PDF (5.1 MB)文件用了13秒。
   感谢bobrien100提供的改进建议。
   缺点:
   IKVM.NET依赖 (18 MB)
   速度(尤其是IKVM.NET的启动时间)

C# 实现将PDF转文本的功能的更多相关文章

  1. C# 实现将 PDF 转文本的功能

    更新 2014年2月27日: 这篇文章最初只描述使用 PDFBox 来解析PDF文件.现在它已经被扩展到包括使用 IFilter 和 iTextSharp 的例程了. 这篇文章和对应的Visual S ...

  2. PDF编辑:pdfFactory文本备注功能详解

    除了word的doc文件外,PDF也是我们经常接触到的文件格式,经常需要在pdf文件上进行编辑与修改,或者给内容做提示和备注. 文件的文本备注功能可以用pdfFactory来进行,编辑打印PDF一条龙 ...

  3. 个人永久性免费-Excel催化剂功能第50波-批量打印、导出PDF、双面打印功能

    在倡导无纸化办公的今天,是否打印是一个碍眼的功能呢,某些时候的确是,但对于数据的留存,在现在鼓吹区块链技术的今天,仍然不失它的核心价值,数据报表.单据打印出来留存,仍然是一种不可或缺的数据存档和防篡改 ...

  4. ABBYY FineReader 15新增智能PDF文档转换功能

    ABBYY FineReader 15(Windows系统)新增智能PDF文档转换功能,可自动检测导入PDF数字文档的文本层质量,确保转变为可编辑格式后的准确结果:从表单字段和文本框中提取文本,准确保 ...

  5. ABBYY FineReader 15 PDF文档查看功能

    PDF文档查看功能是ABBYY FineReader 15(Windows系统)OCR文字识别软件中PDF编辑器的一项基础功能,可供用户查看,搜索PDF文档,无需进入编辑模式,也可复制其中的文本,图片 ...

  6. ABBYY FineReader 15 PDF文档编辑功能详解

    ABBYY FineReader 15(Windows系统)OCR文字识别软件作为一款通用 PDF 工具,能轻松有效地对各种 PDF文档和纸质文档,进行数字化.检索.编辑.转换.包含.分享和合作,而其 ...

  7. 设置Adobe Reader打开PDF文件保持记忆功能

    设置Adobe Reader打开PDF文件保持记忆功能 打开菜单“编辑”->“首选项”. 选择种类中的“文档”,在“打开设置”区域勾上“重新打开文档时恢复上次视图设置(R)”,确定之后就可以在下 ...

  8. 个人永久性免费-Excel催化剂功能第25波-小白适用的文本处理功能

    翻看各大插件,都不约而同地出现系列文本处理的功能,自己在使用Excel过程中,在临时性的需求时,也会用上这几种文本处理,但仅适用于小范围的使用,使用这些功能不是数据处理的正确的之道,数据处理的核心需求 ...

  9. java -PDF添加文本水印与图片水印

    java pdf添加水印文本及图片文本 PDF文件添加文本水印: private static int interval = 30; public static void waterMark(Stri ...

随机推荐

  1. !!!全球最流行开源硬件平台!不知道就OUT了!

    全球最流行的几个开源硬件平台!不知道就OUT了! 随着物联网的推广和普及,五年内全球会有200亿台智能设备的需求,而如今随着创客概念的兴起,开源硬件也越加的火热,让我们来看看现在都有哪些主流的开源硬件 ...

  2. jquery validate 自定义验证方法 日期验证

    jquery validate有很多验证规则,但是更多的时候,需要根据特定的情况进行自定义验证规则. 这里就来聊一聊jquery validate的自定义验证. jquery validate有一个方 ...

  3. 安装SQL SERVER2005时,需要win7下安装IIS,记录下

    安装SQL server2005 时,需要先安装IIS,这里描述win7系统下配置IIS的方法. 虽然很多文章都有写过,这里只是重复一下 关键是IIS组件全都勾选上,如果没有全部勾选上,IIS组件没有 ...

  4. ZOJ(ZJU) 1002 Fire Net(深搜)

    Suppose that we have a square city with straight streets. A map of a city is a square board with n r ...

  5. Wad Manager的下载和运行

    关于WAD版的软件 WAD版的软件分为两种: 独立安装版:程序完全安装在Wii的内置存储空间上,可以在Wii的主界面直接启动软件. Forwarder版:程序安装在Wii的内置存储空间上,同时在SD卡 ...

  6. HDU_1254——推箱子,两次BFS

    这题做的一把鼻涕一把泪,果断考虑不周555 Problem Description 推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱 ...

  7. Java学习日记-2 零零碎碎

    一.使用Scanner类进行控制台的输入 文档中Scanner类的定义为A simple text scanner which can parse primitive types and string ...

  8. B - Networking - poj 1287

    有一些地方需要铺盖电缆,这些地方两点间的路可能不止一条,需要求出来至少需要多少电缆才能让所有的点都连接起来,当然,间接连接也算. /////////////////////////////////// ...

  9. windows2012R2虚拟机快速激活的方法

    相信Hyper-v管理员都有这样的经历,安装多台虚拟机后,都要一台一台手工激活,如果虚拟机足够多的话,这是一项很繁琐的工作,但从Windows Server 2012 R2开始,就不需要这么做了,微软 ...

  10. AutoCompleteTextView ArrayAdapter

    AutoCompleteTextView   继承于EditText,拥有EditText所有属性和方法 在输入框中输入我们想要输入的信息就会出现其他与其相关的提示信息 首先在activity_mai ...