如何使用免費PDF控件從PDF文檔中提取文本和圖片


 

         如何使用免費PDF控件從PDF文檔中提取文本和圖片

 

 

概要

 

現在手頭的項目有一個需求是從PDF文檔中提取文本和圖片,我以前也使用過像iTextSharp, PDFBox 這些免費的PDF插件,可是這次都測試了一下,或多或少有一些地方不是很滿意。最后同事推薦我使用免費的Spire.PDF,結果真是讓我驚喜。最重要的是,作為一家中國企業,他們還能提供完全沒有時差的免費中文技術支持。所以迫不及待的想和大家分享一下我的使用經驗。

 

開發環境需求

 

首先,從Codeplex官網下載免費的Spire.PDF :http://freepdf.codeplex.com/安裝好程序后,添加Spire.License.dll, Spire.Pdf.dll  這兩個引用到我們的工程程序。免費Spire.PDF支持.NET 2.0--.NET4.5版本。根據自己的項目需求添加相應文件夾里的.dll就可以。

 

 

 

操作步驟

 

前面提到過,我們需要從PDF文檔里將文本和圖片單獨獲取出來。使用Spire.PDF,只需要幾行代碼就能完成。下面是詳細的操作步驟。

1. 生成一個PDF,將文本和圖片添加到PDF里面。

2. PDF文檔中提取所有圖片。

3. PDF文檔中提取所有文本。

 

下面的代碼示例是講如何創建一個空的PDF文檔,將文本和圖片加進PDF。

 

PdfDocument doc =  new PdfDocument();
PdfPageBase page = doc.Pages.Add();
     
// 添加文本  
page.Canvas.DrawString( " Demo of extract text and imgae from PDF! ",
new PdfFont(PdfFontFamily.Helvetica, 20f),
new PdfSolidBrush(Color.Black),  1010);
     
// 添加圖片
PdfImage image = PdfImage.FromFile( " pdf.png ");
float width = image.Width *  0.75f;
float height = image.Height *  0.75f;
float x = (page.Canvas.ClientSize.Width - width) /  2;
page.Canvas.DrawImage(image, x,  60, width, height);
     
PdfImage image2 = PdfImage.FromFile( " image.jpg ");
width = image2.Width *  0.75f;
height = image2.Height *  0.75f;
page.Canvas.DrawImage(image2, x- 100220, width, height);
doc.SaveToFile( " sample.pdf ");

 

生成的PDF文件

 

  

 

下面的代碼將展示如何從PDF文檔中獲取圖片。同樣,也只需要幾行代碼。

 

PdfDocument doc =  new PdfDocument();
doc.LoadFromFile( " sample.pdf "); 
IList<Image> images =  new List<Image>();
foreach (PdfPageBase page  in doc.Pages)
{
if (page.ExtractImages() !=  null)
   {
      foreach (Image image  in page.ExtractImages())
         {
               images.Add(image);
          }
   }
}
doc.Close();
int index =  0;
foreach (Image image  in images)
{
  String imageFileName = String.Format( " Image-{0}.png ", index++);
  image.Save(imageFileName, ImageFormat.Png);
 }

 

 

運行后,所有的圖片被保存為了.png格式。在debug文件夾里可以看到我們從PDF文檔中獲取的兩幅圖像。

 

  

下面的代碼將顯示如何從PDF文檔中提取文本。

 

PdfDocument doc =  new PdfDocument();
doc.LoadFromFile( " sample.pdf ");
 
StringBuilder buffer =  new StringBuilder();
foreach (PdfPageBase page  in doc.Pages)
{
    buffer.Append(page.ExtractText());
}
doc.Close();
String fileName =  " TextInPdf.txt ";
File.WriteAllText(fileName, buffer.ToString());
buffer =  null;
 
 

 

提取的文本被保存為了.txt文件。詳情見下圖:

 

  



 

總結

   

    總的來說,網上有很多用來操作PDF文檔的第三方控件Free Spire.PDF的優點在於免費,易用,大大節省了開發者的時間。但是免費版本在加載和寫出時,PDF頁面被限制在了十頁以內。不過這已經足夠我項目的需要了。如果你的項目超出限制,也有收費版Spire.PDF可以使用。官方提供30天免費試用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM