zoukankan      html  css  js  c++  java
  • Html网页生成Pdf

    http://code.google.com/p/wkhtmltopdf/downloads/list下载安装程序。

    1.添加引用

    1 using System.Diagnostics;
    添加引用

    2.方法

     1     /// <summary>
     2     /// 把对应的网页转化成Pdf文件
     3     /// </summary>
     4     /// <param name="Url">网页网址</param>
     5     /// <param name="Path"></param>
     6     /// <returns>成功返回true失败返回false</returns>
     7     public static bool HtmlTOPdf(string Url, string Path)
     8     {
     9         if (!string.IsNullOrEmpty(Url)&&!string.IsNullOrEmpty(Path))
    10         {
    11             try
    12             {
    13                 Process p = new Process();
    14                 p.StartInfo.FileName = "cmd.exe";
    15                 p.StartInfo.WorkingDirectory = "C:\\WINDOWS\\system32";
    16                 p.StartInfo.UseShellExecute = false;
    17                 p.StartInfo.RedirectStandardInput = true;
    18                 p.StartInfo.RedirectStandardOutput = true;
    19                 p.StartInfo.RedirectStandardError = true;
    20                 p.StartInfo.CreateNoWindow = true;
    21                 p.Start();
    22                 string cmd = "C:/Users/PC/Desktop/wkhtmltopdf/wkhtmltopdf.exe" + " " + Url + " " + Path + " ";
    23                 p.StandardInput.WriteLine(cmd);
    24                 p.WaitForExit(6000);
    25                 p.Close();
    26                 return true;
    27             }
    28             catch (Exception)
    29             {
    30                 return false;
    31             }
    32         }
    33         else
    34         {
    35             return false;
    36         }
    37     }
    方法

    3.调用

    1  Html2Pdf.HtmlToPdf("http://www.cnblogs.com/", "d:/cnblogs.pdf");
    调用

    出现的问题:非utf-8编码的网页转换会出现乱码。有人做过测试:http://aiilive.blog.51cto.com/1925756/1340243

    在网上找了一些其他的转换方法:

    http://www.html-to-pdf.net/ 也不支持非utf-8的网页转换,测试网站 http://www.51cto.com/ 转换乱码

    http://www.winnovative-software.com/ 测试成功

    下面是代码:

    需要添加wnvhtmltopdf.dll

    1 using Winnovative;
    添加引用
     1         //create a PDF document
     2         Document document = new Document();
     3 
     4         //optional settings for the PDF document like margins, compression level,
     5         //security options, viewer preferences, document information, etc
     6         document.CompressionLevel = PdfCompressionLevel.Normal;
     7         document.Margins = new Margins(10, 10, 0, 0);
     8         //document.Security.CanPrint = true;
     9         //document.Security.UserPassword = "";
    10         document.ViewerPreferences.HideToolbar = false;
    11 
    12         // set if the images are compressed in PDF with JPEG to reduce the PDF document size
    13         document.JpegCompressionEnabled = true;
    14 
    15         //Add a first page to the document. The next pages will inherit the settings from this page 
    16         PdfPage page = document.Pages.AddNewPage(PdfPageSize.A4, new Margins(10, 10, 0, 0), PdfPageOrientation.Portrait);
    17 
    18         // the code below can be used to create a page with default settings A4, document margins inherited, portrait orientation
    19         //PdfPage page = document.Pages.AddNewPage();
    20 
    21         // add a font to the document that can be used for the texts elements 
    22         PdfFont font = document.Fonts.Add(new System.Drawing.Font(new System.Drawing.FontFamily("Times New Roman"), 10,
    23                     System.Drawing.GraphicsUnit.Point));
    24 
    25         // the result of adding an element to a PDF page
    26         AddElementResult addResult;
    27 
    28         // Get the specified location and size of the rendered content
    29         // A negative value for width and height means to auto determine
    30         // The auto determined width is the available width in the PDF page
    31         // and the auto determined height is the height necessary to render all the content
    32         float xLocation = 0;
    33         float yLocation = 0;
    34         float width = 0;
    35         float height = 0;
    36 
    37         // convert HTML to PDF
    38         HtmlToPdfElement htmlToPdfElement;
    39 
    40         // convert a URL to PDF
    41         string urlToConvert = "http://www.51cto.com/";
    42 
    43         htmlToPdfElement = new HtmlToPdfElement(xLocation, yLocation, width, height, urlToConvert);
    44 
    45         //optional settings for the HTML to PDF converter
    46         htmlToPdfElement.FitWidth = true;//合适的宽度
    47         htmlToPdfElement.EmbedFonts = false;//嵌入字体呈现PDF文档中真正的类型
    48         htmlToPdfElement.LiveUrlsEnabled = false;//网页链接是否可用
    49         htmlToPdfElement.JavaScriptEnabled = true;//在转换期间是否启用JavaScript和其他客户端脚本
    50         htmlToPdfElement.PdfBookmarkOptions.HtmlElementSelectors = null;//Bookmark H1 and H2 HTML tags
    51 
    52         // add theHTML to PDF converter element to page
    53         addResult = page.AddElement(htmlToPdfElement);
    54 
    55         try
    56         {
    57             // get the PDF document bytes
    58             byte[] pdfBytes = document.Save();
    59 
    60             // send the generated PDF document to client browser
    61 
    62             // get the object representing the HTTP response to browser
    63             HttpResponse httpResponse = HttpContext.Current.Response;
    64 
    65             // add the Content-Type and Content-Disposition HTTP headers
    66             httpResponse.AddHeader("Content-Type", "application/pdf");
    67             httpResponse.AddHeader("Content-Disposition", String.Format("attachment; filename=51cto.pdf; size={0}", pdfBytes.Length.ToString()));
    68 
    69             // write the PDF document bytes as attachment to HTTP response 
    70             httpResponse.BinaryWrite(pdfBytes);
    71 
    72             // Note: it is important to end the response, otherwise the ASP.NET
    73             // web page will render its content to PDF document stream
    74             httpResponse.End();
    75         }
    76         finally
    77         {
    78             // close the PDF document to release the resources
    79             document.Close();
    80         }     
    用wnvhtmltopdf把Html转换成pdf
  • 相关阅读:
    pig安装
    [2013.10.29][Luogu OJ P1873]砍树
    [转帖]OIer之魂、
    [转帖]我们是OIer、
    10007:[2013.10.25]P1.滚土豆(potato.pas/c/cpp)
    [2013.10.18]P2.传作业 (pass.pas/c/cpp)
    [Luogu OJ P1619]解一元二次方程的烦恼
    [Luogu OJ P1433][2013.10.18]DFS基础题-吃奶酪
    高精度加减乘法小程序 Ver 0.9.5 beta
    [2013.10.11]P3.和为零
  • 原文地址:https://www.cnblogs.com/langmanshuyuan/p/3517596.html
Copyright © 2011-2022 走看看