0

我正在尝试找到一个 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?

4

2 回答 2

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,"pdf")是从要导出为 pdf 的表中获取纯 html 的函数 ....

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

于 2014-12-04T15:12:21.523 回答
1

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

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

于 2013-09-27T12:46:56.970 回答