HTML转换成PDF工具:wkhtmltopdf

有时候我们需要把HTML页面内存转换成PDF,当然可以截图做成Excel然后转换成PDF。下面介绍一下HTML转换成PDF的工具wkhtmltopdf(http://code.google.com/p/wkhtmltopdf/ )。这个工具可以在Linux和Windows等系统下运行。

下面以Windows为例子。先下载工具wkhtmltopdf-版本号-.exe。下载把文件放到自己个一个文件夹下面,比如D:\tool\htmltopdf。然后启动命令行,在命令行里面输入命令就可以执行转换了。

这边以CSDN主页为例子:wkhtmltopdf-0.8.3.exe www.csdn.com myhomepage.pdf

注意若遇到编码乱码的问题,需要修改页面的编码,用Dreamweaver修改网页的编码,编辑、页面属性里面。

这里wkhtmltopdf-0.8.3.exe下载的程序名,www.csdn.com是要输出为PDF的HTML的URL,myhomepage.pdf是输出的PDF文件名。

Linux中的命令是:wkhtmltopdf www . myhomepage . com myhomepage . pdf

还可以通过 wkhtmltopdf — help 命令来查看其它参数和帮助。

生成的pdf效果如下:

下面给出在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存放路径”));

需要注意的是:使用wkhtmltopdf时,PDF保存的文件夹不能有非Ansi字符,如中文、日文等,且转换gb2312、韩文charset、日文charset等非utf-8\ansi等网页时,会出现乱码。

本地文件出现乱码,可用DW修改HTML的编码为UTF8,再用记事本打开,另存为,选择编码为UTF8。