2013年2月11日 星期一

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

最近遇到一個需求,需要將Html轉成PDF,上網找解決方案找老半天,
不是付費的不然就是匯出後整個版面跑掉,或者是中文亂碼
甚至用過itextsharp這種控制PDF的套件去寫,也不是麼容易T__T
後來發現wkhtmltopdf這個免費的套件,終於解決了我的問題,所以一定要來分享一下!
一開始先至官網下載,依據自己的作業系統下載
1
安裝的話就是一直下一步就對了,
筆者安裝路徑為D:\wkhtmltopdf\wkhtmltopdf.exe
接著我們進入DOS模式去執行程式
2
3
第一個黃框為執行檔的位置
第二個黃框為轉檔目標的URL
第三個黃框為PDF儲存的位置
接著執行就直接進行轉換了:
image
目前測試效果還不錯,如果是中文字的話,記得要在編碼設定為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

有機會再分享囉!

相關文章:

http://brooky.cc/2011/05/26/convert-html-to-image-and-pdf/

http://code.google.com/p/wkhtmltopdf/

http://www.cnblogs.com/heblade/archive/2009/10/16/Html_to_pdf.html

沒有留言:

張貼留言