Spire.Pdf 的各种操作总结
?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文件。
//create?PdfDocument?instancePdfDocument?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?fileString?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”就搞定了。?
//Create?a?pdf?document.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可以用以下代碼來解決:
?
//Create?a?pdf?document.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的文本文檔。
結論
綜上所述,換句話說,它用簡單有效的方法處理PDF文件。SPIRE.PDF是一個很好的解決PDF 的API。
轉載于:https://www.cnblogs.com/Yesi/p/4289981.html
總結
以上是生活随笔為你收集整理的Spire.Pdf 的各种操作总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RMQ求区间最值 nlog(n)
- 下一篇: Struts+Tomcat搭建