关闭

iTextSharp的使用,把DIV导出为PDF,样式不是很灵活

101人阅读 评论(0) 收藏 举报
public byte[] ConvertHtmlTextToPDF(string htmlText)
    {
        if (string.IsNullOrEmpty(htmlText))
        {
            return null;
        }
        MemoryStream outputStream = new MemoryStream();
        byte[] data = Encoding.UTF8.GetBytes(htmlText);
        MemoryStream msInput = new MemoryStream(data);
        Document doc = new Document();
        PdfWriter writer = PdfWriter.GetInstance(doc, outputStream);
        PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 0, doc.PageSize.Height, 1f);
        doc.Open();
        XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, msInput, null, Encoding.UTF8, new ChineseFontFactory());
        PdfAction action = PdfAction.GotoLocalPage(1, pdfDest, writer);
        writer.SetOpenAction(action);
        doc.Close();
        msInput.Close();
        outputStream.Close();
        return outputStream.ToArray();
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        string fileName = DateTime.Now.ToString();
        StringBuilder strb = new StringBuilder();
        StringWriter sw = new StringWriter(strb);
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        div_htmlText.RenderControl(htw);  //div_htmlText为DIV的ID
        string htmlText = strb.ToString();
        byte[] pdfFile = ConvertHtmlTextToPDF(htmlText);
        Response.ContentType = "application/pdf";
        Response.ContentEncoding = Encoding.UTF8;
        Response.AddHeader("content-disposition", "attachment;filename=" + fileName + ".pdf");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.OutputStream.Write(pdfFile, 0, pdfFile.Length);
        Response.End();
    }

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:43456次
    • 积分:1016
    • 等级:
    • 排名:千里之外
    • 原创:56篇
    • 转载:37篇
    • 译文:0篇
    • 评论:3条