Html 转化为 PDF

//evohtmltopdf.dll  EvoHtmlToPdfWebDemo.dll evointernal.dll (需添加引用这三个类)

public void SavePdf()
    {
        PdfConverter pdfConverter = new PdfConverter();

        // 设置的许可证密钥——要求
        pdfConverter.LicenseKey = "ORIJGQoKGQkZCxcJGQoIFwgLFwAAAAA=";

        // 通知转换器的HTML元素,我们想要的位置在PDF
        //在这个示例,我们想要的位置,IMG,H1和H2元素和元素ID
        //等于“id1’或‘id2”

        //pdfConverter.HtmlElementsMappingOptions.HtmlElementSelectors = new string[] { "IMG", "H1", "H2", "#id1", "#id2" };

        // 调用转换器,并得到一个文档对象从URL
        string url = Request.Url.ToString();
       // url = url.Replace("Default.aspx", "preview.aspx");
              Document pdfDocument = pdfConverter.GetPdfDocumentObjectFromUrl(url); //URL表示地址,你要导那张页面就用那张页面的地址

        // 迭代HTML元素位置和标出每个元素提供了一个绿色的矩形
        foreach (HtmlElementMapping elementMapping in pdfConverter.HtmlElementsMappingOptions.HtmlElementsMappingResult)
        {
            //因为一个HTML元素可以跨越许多PDF页映射
            // HTML元素在PDF文档包含在一个矩形列表,
            //一个矩形对于每个PDF页面,这个元素被呈现
            foreach (HtmlElementPdfRectangle elementLocationInPdf in elementMapping.PdfRectangles)
            {
                // 把PDF页面
                PdfPage pdfPage = pdfDocument.Pages[elementLocationInPdf.PageIndex];
                RectangleF pdfRectangleInPage = elementLocationInPdf.Rectangle;

                // 创建一个RectangleElement突出显示的HTML元素
                RectangleElement highlightRectangle = new RectangleElement(pdfRectangleInPage.X, pdfRectangleInPage.Y,
                    pdfRectangleInPage.Width, pdfRectangleInPage.Height);
                //highlightRectangle.ForeColor = Color.Green;
                pdfPage.AddElement(highlightRectangle);
            }
        }

        byte[] pdfBytes = null;

        try
        {
            pdfBytes = pdfDocument.Save();
        }
        finally
        {
            // 创建一个RectangleElement突出显示的HTML元素

            pdfDocument.Close();

        }

        // 把PDF文档作为来响应浏览器下载
        System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
        response.Clear();
        response.AddHeader("Content-Type", "application/pdf");
        response.AddHeader("Content-Disposition", String.Format("attachment; filename=HtmlElementsLocation.pdf; size={0}", pdfBytes.Length.ToString()));
        response.BinaryWrite(pdfBytes);
        //注意:重要的是要结束响应,否则asp . net
        // web页面将显示其内容为PDF文档流
        response.End();
    }

posted @ 2012-07-13 17:14  KyrieYang  阅读(2245)  评论(1编辑  收藏  举报