Spire.Pdf 的各種操作總結
簡介
試驗新産品總是給我帶來許多挑戰,當然這也是一個引進創新技術的好方法。在這裡我要跟大家分享的是使用Spire.Pdf的過程,它是來自E-iceblue公司的輕便PDF程式庫。
設計情節
我以前經常沒事就搞搞PDF。Spire.Pdf是用C# 寫的PDF元件。他們自己聲稱:
pastingSpire.PDF for .NET is a professional PDF component applied to creating, writing, editing, handling and reading PDF files without any external dependencies within .NET application. Using this .NET PDF library, you can implement rich capabilities to create PDF files from scratch or process existing PDF documents entirely through C#/VB.NET without installing Adobe Acrobat.
先決條件
首先,從這下載下傳它的免費版: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檔案。
//create PdfDocument instance
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方法将檔案儲存為需要的格式。
//Input pdf file
String file = @"G:\FromHTML.pdf";
//open pdf document
doc.LoadFromFile(file);
//convert to xps file.
doc.SaveToFile(@"G:\PDFToXPS.xps", FileFormat.XPS);
XPS到PDF的轉換:
Spire.Pdf 也提供了上述方法的逆向轉換,那就是從XPS到PDF的轉換,有所不同的是加載檔案方法的不同。這裡我們使用方法LoadFromXPS就可以了。
//open xps document
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”就搞定了。
//Create a pdf document.
// 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可以用以下代碼來解決:
// String for hold the extracted text
StringBuilder buffer = new StringBuilder();
buffer.Append(page.ExtractText());
}
//save text
String fileName = "TextInPdf.txt";
File.WriteAllText(fileName, buffer.ToString());
buffer = null;
上面的程式片段就将文本提取出來并生成名為TextInPdf.txt的文本文檔。
結論