将带有jquery的html页面转换为pdf

时间:2013-09-27 12:37:16

标签: c# jquery html pdf itextsharp

我正在尝试找到一个html解析器,即使使用jquery也可以解析html页面并将其转换为pdf。

之前,我一直使用以下代码将html文件导出为pdf:

using System;using System.Web;
using System.Web.UI;
using System.Data;
using System.IO;using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.html.simpleparser; 

protected void btnPDF_Click(object sender, EventArgs e)
{
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=UserDetails.pdf");
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);
    this.Page.RenderControl(hw);
    StringReader sr = new StringReader(sw.ToString());
    Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0.0f);
    HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
    PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
    pdfDoc.Open();
    htmlparser.Parse(sr);
    pdfDoc.Close();
    Response.Write(pdfDoc);
    Response.End();
}

但是通过使用iTextSharp dll,我能否将包含Jquery UI的html页面转换为pdf?

我没有想法了。任何人都可以提供意见或建议我们如何实现这一目标?

首先,我想知道这是否可以实现?有没有能够将html页面(Jquery UI)转换为pdf的dll?

2 个答案:

答案 0 :(得分:1)

Evo PDF是一个可以为您处理此问题的商业软件库。

如果您不介意使用命令行工具,可以查看wkhtmltopdf

答案 1 :(得分:1)

我用 jspdf.debug.js 来解决这个问题..

  function pdfFromHtml(element,gridConfig) { 
                getHtmlForExport(element,gridConfig,"pdf")
                var source='<table>'+$('#exportTable').html()+'</table>'; 
                var pdf = new jsPDF('l', 'pt', 'a0');  
               var margins = {
                    top: 60,
                    bottom: 10,
                    left: 10,
                    width: 720
                };
                pdf.fromHTML(
                    source, // HTML string or DOM elem ref.
                    margins.left, // x coord
                    margins.top, {// y coord
                        'width': margins.width, // max width of content on PDF 
                    },
                    function (obj) { 
                        var elementClicked = element;
                        var headerText =  $(elementClicked).text();
                        var fileName;
                        if (elementClicked == undefined || headerText == undefined) {
                            fileName = "pdfExport"
                        } else {
                            fileName = headerText.toString().trim()
                        } 
                            pdf.setFontSize(22);
                            pdf.setFontType("bold");
                            pdf.text(40, 40, fileName+" grid");
                            pdf.save(fileName + '.pdf');
                    }, margins);
    } 

getHtmlForExport(element,gridConfig,&#34; pdf&#34;)是从要导出为pdf的表中获取普通html的函数....

注意 据我所知,CSS不会得到支持。