最近因為工作需要,小小的研究了一下HTML生成PDF的方法,這方面的內容很多,但要么是不盡如人意的方法,要么就是那種收費的類庫!為了廣大.neter的福利,把自己的一點小小心得總結出來與大家分享!
先說說我最后采用的方法吧!wkhtmltopdf,一個集成好了的exe文件(C++編寫),基本的調用方法是,wkhtmltopdf www.jingzhengli.cn myhomepage.pdf,可以先在命令行測試一下,有其他的需要可以在命令行通過wkhtmltopdf --help查詢,如果是超長頁的花,可以用命令wkhtmltopdf www.jingzhengli.cn myhomepage.pdf -H --outline (-H是添加默認標題,--outline是添加pdf的左側概要哦!)而且可以批量生成哦,中間用空格隔開,用命令wkhtmltopdf www.jingzhengli.cn www.jingzhengli.com myhomepage.pdf 快去試試吧!提醒下:如果是轉換GB2132編碼的網頁是會出現亂碼的哦! 好了,其他的自己琢磨琢磨吧!上面都是在命令行下測試,下面給出在C#下的調用方法:
using System.Diagnostics;
/// <summary>
/// HTML生成PDF
/// </summary>
/// <param name="url">地址</param>
/// <param name="path">PDF存放路徑</param>
public static bool HtmlToPdf(string url, string path)
{
try
{
if (string.IsNullOrEmpty(url) || string.IsNullOrEmpty(path))
return false;
Process p = new Process();
string str = System.Web.HttpContext.Current.Server.MapPath("wkhtmltopdf.exe");
if (!System.IO.File.Exists(str))
return false;
p.StartInfo.FileName = str;
p.StartInfo.Arguments = " \"" + url + "\" " + path;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
System.Threading.Thread.Sleep(500);
return true;
}
catch (Exception ex)
{
HttpContext.Current.Response.Write(ex);
}
return false;
}
調用方法:HtmlToPdf("網頁URL", Server.MapPath("PDF存放路徑"));
下載地址:http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.8.3.exe
源碼地址:http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.8.3.tar.bz2
這里再給出個貌似是國人寫的一個類似的,效果不佳,但值得鼓勵:PageToPDF,調用方法類似,但這個的exe文件必須和itextsharp.dll放在同一目錄下!且不支持長頁面的生成PDF,轉換新浪網就是一片白了!
下面給出幾個國外網站賣的C#編寫的類庫的試用版,功能強大,可惜需要License key,大家可以下載下來看看。我嘗試用reflector反編譯到一半就卡住不動,望有志達人為了廣大.neter的福利,破解一下!
1.ExpertPDF-HtmlToPdf-v5.4.0 $350(真黑,知識就是money啊)
2.WnvHtmlToPDF (這個一樣的黑價,達人快來破解吧)
3.PDFKit.NET 2.0 http://tallcomponents.com 這個網站的
這收費的就太黑了,都開源時代了,還這樣!下面呢,給出一些PDF生成相關的資料,有志之士可以自己研究下,說不定你也可以開發個類庫,買¥350也好啊!
- iTextSharp,類庫,創建PDF、RTF、XML等,並可解析PDF,功能最強;
- Report.NET,類庫,創建PDF,不錯;
- sharpPDF,類庫,創建PDF,不錯;
- iTextdotNET,類庫,創建PDF,與Java原版最能保持更新同步;
- A pdf Forms Parser,類庫,PDF解析器;
- pdf Library for creating pdf with tables and text, in C# ,類庫,輕量級的創建,中文支持不好;
- pdfizer, a dumb HTML to pdf converter, in C#,轉換HTML到PDF;
- TEXT to pdf Converter in .NET using Reporter.NET,利用Report.NET把純文本轉換成為PDF;
- pdf creation using C# (and Office) from RTF/DOC files,從RTF/Doc文件中生產PDF文件;
- Generate pdf docs from a HTML page using ASP.NET ,使用.NET把HTML生成PDF.
http://www.cnblogs.com/yzenet/archive/2012/07/13/2590555.html
http://www.cnblogs.com/leeolevis/archive/2010/12/07/1898917.html
http://www.cnblogs.com/gzh4455/archive/2012/09/18/2690733.html
html先轉為圖片,在輸入到pdf
http://www.cnblogs.com/TNTZWC/archive/2010/10/07/1845023.html
ASP.NET MVC HTMLWORKER itextsharp
http://www.cnblogs.com/lonelyxmas/p/3619072.html