iT邦幫忙

DAY 4
7

ASP.NET Web技術小技巧分享系列 第 4

[ASP.NET]Html轉成PDF的解決方案

最近遇到一個需求,需要將Html轉成PDF,上網找解決方案找老半天,
不是付費的不然就是匯出後整個版面跑掉,或者是中文亂碼
甚至用過itextsharp這種控制PDF的套件去寫,也不是麼容易T__T
後來發現wkhtmltopdf這個免費的套件,終於解決了我的問題,所以一定要來分享一下!
官網下載連結:https://code.google.com/p/wkhtmltopdf/
依據自己的作業系統下載

安裝的話就是一直下一步就對了,
筆者安裝路徑為D:\wkhtmltopdf\wkhtmltopdf.exe
接著我們進入DOS模式去執行程式

第一個黃框為執行檔的位置
第二個黃框為轉檔目標的URL
第三個黃框為PDF儲存的位置
接著執行就直接進行轉換了:

目前測試效果還不錯,如果是中文字的話,記得要在編碼設定為utf-8
不然轉換後都會是亂碼!
接著我們自己寫程式執行吧!
基本上大同小異,只是利用Process這個類別去執行它而已:

protected void Page_Load(object sender, EventArgs e)
{
    Process _process = new Process();
    _process.StartInfo.FileName = @"D:\wkhtmltopdf\wkhtmltopdf.exe";
    _process.StartInfo.Arguments = @"http://www.google.com.tw D:\temp2.pdf";
    _process.Start();
}

如果你要在產生過後,對這個PDF檔案做一些處理(例如開啟此檔案),
必須要等這個執行續完成,不然會出錯,可以用以下方法:

Process _process = new Process();
_process.StartInfo.FileName = @"D:\wkhtmltopdf\wkhtmltopdf.exe";
_process.StartInfo.Arguments = @"http://www.google.com.tw D:\temp2.pdf";
_process.Start();
 
while (_process.HasExited)
{
    //讓執行續暫停1秒
    Thread.Sleep(1000);
}
 
Process.Start(@"D:\temp2.pdf");

這樣就完成了,其實他還有很多姊妹作,像是HtmlToImage
有機會再分享囉!


上一篇
[IDE]使用Adobe Source Code Pro字型~使用Visual Studio 2010
下一篇
[ASP.NET]點選下載PDF,跳出下載視窗
系列文
ASP.NET Web技術小技巧分享27

1 則留言

我要留言

立即登入留言