Spire.Pdf 的各種操作總結
簡介
試驗新產品總是給我帶來許多挑戰,當然這也是一個引進創新技術的好方法。在這里我要跟大家分享的是使用Spire.Pdf的過程,它是來自E-iceblue公司的輕便PDF程序庫。
設計情節
我以前經常沒事就搞搞PDF。Spire.Pdf是用C# 寫的PDF組件。他們自己聲稱:
先決條件
首先,從這下載它的免費版:http://freepdf.codeplex.com/
安裝下載的軟件,結果你會得到兩個dll文件(Spire.License.dll和 Spire.Pdf.dll),如下圖所示在你的程序中添加他們的引用:

創建PDF並設置它的格式
創建PDF和使用Spire.Pdf一樣簡單。這就意味着,僅僅用Spire.Pdf寫幾行代碼就可以實現了。參照以下代碼:
//
Create a pdf document.
PdfDocument doc =
new PdfDocument();
//
Create one page
PdfPageBase page = doc.Pages.Add();
//
Draw the text
page.Canvas.DrawString(
"
Hello, I'm Created By SPIRE.PDF!
",
new PdfFont(PdfFontFamily.TimesRoman, 30f),
new PdfSolidBrush(Color.Black),
10,
10);
//
Save pdf file.
doc.SaveToFile(
"
MyFirstPDF.pdf
");
doc.Close();
以上代碼創建了一個單頁的PDF文件


現在我們在同一個PDF文件中再加點料,像邊框啊,水印啦,再加一些有格式設置的圖片。我為了讓我這篇教程看上去比較簡潔,就把所有代碼附在了示例中。它是一個包含了所有代碼的小型windows窗口程序,你可以從這里下載。
轉換成其它格式並設置相應的格式:
基本上每個程序員都被這類的需求困擾過。從一種格式轉換成另一種格式在開發模式中是一件痛苦的事情。舉例來說,現在有很多程序員會問如何把HTML頁面轉換為PDF?Spire.Pdf對這個問題給出了簡單的解決方法。不僅僅如此,SPIRE.PDF還提供了如下的轉換:
HTML To PDF
· XPS to PDF
· PDF to XPS
· PDF to Image
HTML到PDF的轉換:
我上面說的,這是幾乎每個開發人員都需要的功能。用 Spire.Pdf的話,轉換簡直是飛一般的感覺。Spire.Pdf包含創建方法“LoadFromHTML”,它可以用URL做為參數而返回一個PDF文件。
PdfDocument doc = new PdfDocument();
// load html from URL
string url = " http://www.google.com ";
var thread = new Thread(() =>
{
doc.LoadFromHTML(url, false, true, true);
});
// set to single thread
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
// save to PDF document
doc.SaveToFile( " FromHTML.pdf ", FileFormat.PDF);
doc.Close();
System.Diagnostics.Process.Start( " FromHTML.pdf ");
從上面的幾行代碼中,你可以觀察到我嘗試從URL中創建一個PDF文件,只是一行叫做LoadFromHTML的方法就可以實現神奇的轉換,下面幾行為保存文件。下面在轉換中有趣的事情就是SPIRE.PDF將鏈接地址的頁面自動轉換為PDF鏈接。
PDF到XPS的轉換:
XPS,是另外一個Microsoft在2006年開發的流行文件格式。 Spire.Pdf也提供了將目標文件保存為XPS格式的選擇。看下面代碼, Spire.Pdf僅僅是加載了PDF文件並使用SaveToFile方法將文件保存為需要的格式。
String file = @" G:\FromHTML.pdf ";
// open pdf document
PdfDocument doc = new PdfDocument();
doc.LoadFromFile(file);
// convert to xps file.
doc.SaveToFile( @" G:\PDFToXPS.xps ", FileFormat.XPS);
doc.Close();
XPS到PDF的轉換:
Spire.Pdf 也提供了上述方法的逆向轉換,那就是從 XPS 到 PDF 的轉換,有所不同的是加載文件方法的不同。這里我們使用方法 LoadFromXPS 就可以了。PdfDocument doc = new PdfDocument();
doc.LoadFromXPS(file);
// convert to pdf file.
doc.SaveToFile( " XPSToPDF.pdf ");
在Spire.Pdf使用枚舉FileFormat,我們可以有4種格式的輸出文件:DOC, HTML, PDF 和XPS。

擷取PDF –從PDF中擷取文本/圖片
在平常工作中,我遇到過需要單獨從PDF文件中擷取圖片或文本的問題。
Spire.Pdf 也給出了簡潔的解決方案。 它 做的很好的地方是,提供一個單行的代碼就是調用“ that ”就搞定了。
PdfDocument doc = new PdfDocument();
// Load the PDF Document
doc.LoadFromFile( @" G:\sample.pdf ");
// Image collection to hold
IList<Image> images = new List<Image>();
// Loop thru each pages
foreach (PdfPageBase page in doc.Pages)
{
// Check that page contains any images
if (page.ExtractImages() != null)
{
foreach (Image image in page.ExtractImages())
{
images.Add(image);
}
}
}
// close the document
doc.Close();
// save image
int index = 0;
foreach (Image image in images)
{
String imageFileName = String.Format( " Image-{0}.png ", index++);
image.Save(imageFileName, ImageFormat.Png);
}
在以上代碼中圖片被保存為png格式,輸出界面如下圖:

從PDF中擷取文本也是很簡單。每個編程人員的職業生涯都會面對的擷取。Spire.Pdf可以用以下代碼來解決:
PdfDocument doc = new PdfDocument();
// Load the PDF Document
doc.LoadFromFile( @" G:\sample.pdf ");
// String for hold the extracted text
StringBuilder buffer = new StringBuilder();
foreach (PdfPageBase page in doc.Pages)
{
buffer.Append(page.ExtractText());
}
doc.Close();
// save text
String fileName = " TextInPdf.txt ";
File.WriteAllText(fileName, buffer.ToString());
buffer = null;
上面的程序片段就將文本提取出來並生成名為TextInPdf.txt的文本文檔。
結論
