欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c#實現(xiàn)將pdf轉文本的示例分享

 更新時間:2014年03月10日 15:20:36   作者:  
這篇文章主要介紹了c#實現(xiàn)將pdf轉文本的示例,需要的朋友可以參考下

如何解析PDF文件

在.NET中從PDF文件里提取文本的幾種主要方法有:

1、Microsoft 的 IFilter 接口 和 Adobe 的 IFilter 實現(xiàn);

2、iTextSharp;

3、PDFBox。

不幸的是這些 PDF 解析方案都不完美。我們將在下面討論這些方法。

Adobe PDF IFilter

為了使用 IFilter 接口來解析 PDF 文件,你需要:

Windows 2000 或者后續(xù)版本

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 特別麻煩)。

需要在目標系統(tǒng)上單獨安裝 Adobe IFilter。如果你需要對其它人發(fā)布可索引的解決方案,會很痛苦。

iTextSharp
iTextSharp(http://sourceforge.net/projects/itextsharp/) 是一個 Java 的PDF 操作庫iText(http://itextpdf.com/) 的.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

PDFBox是另一個Java PDF類庫。它同時也可以與原來的Java Lucene一同使用(參見LucenePDFDocument)。

幸運的是,PDFBox有一個使用IKVM.NET開發(fā)的.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#隱藏控制臺鍵盤輸入的方法

    C#隱藏控制臺鍵盤輸入的方法

    這篇文章主要介紹了C#隱藏控制臺鍵盤輸入的方法,涉及C#針對系統(tǒng)底層調(diào)用的相關技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • c# 使用計時器和觀察者模式實現(xiàn)報警推送需求

    c# 使用計時器和觀察者模式實現(xiàn)報警推送需求

    這篇文章主要介紹了c# 使用計時器和觀察者模式實現(xiàn)報警推送需求,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • Unity3D選擇本地圖片并加載

    Unity3D選擇本地圖片并加載

    這篇文章主要為大家詳細介紹了Unity3D選擇本地圖片并加載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • C#異常處理的技巧和方法

    C#異常處理的技巧和方法

    在本篇文章里小編給大家整理了關于C#異常處理的技巧和方法以及相關知識點,需要的朋友們學習下。
    2019-03-03
  • c# 刪除所有的空文件夾的小例子

    c# 刪除所有的空文件夾的小例子

    c# 刪除所有的空文件夾的小例子,需要的朋友可以參考一下
    2013-03-03
  • C#通過Builder模式造車

    C#通過Builder模式造車

    這篇文章介紹了C#通過Builder模式造車的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • c#讀取xml文件到datagridview實例

    c#讀取xml文件到datagridview實例

    c#讀取xml文件到datagridview實例,需要的朋友可以參考一下
    2013-03-03
  • C# cefSharep控件的使用詳情

    C# cefSharep控件的使用詳情

    本文主要介紹了C# cefSharep控件的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • C#中的委托和事件詳解

    C#中的委托和事件詳解

    本文詳細講解了C#中的委托和事件,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • C#?中的partial?關鍵字詳解

    C#?中的partial?關鍵字詳解

    這篇文章主要介紹了C#?中的partial?關鍵字,partial 關鍵字用于拆分一個類、一個結構、一個接口或一個方法的定義到兩個或更多的文件中,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-07-07

最新評論