html页面直接导出word pdf

综合编程 2018-06-25 阅读原文

直接上代码

html
  
///这里放想要导出的html 元素
function ExportWord() { var html = $("#div_workInfo").html(); $("#hidWord").val(encodeURIComponent(html)); $("#formWord").submit(); } ///from 表单方式提交这段html

接下来就是后台接收了

[HttpPost]
    public ActionResult ExportWord(FormCollection form)
    {
        string html = Server.UrlDecode(form["hidWord"]);///接收前台的html的
        byte[] pdfFile = this.ConvertHtmlTextToPDF(html);///pdf 执行这个就可以了
        ///这里执行word 操作
        sb.Append("");
         sb.Append("");
        sb.Append("@page {mso-page-border-surround-header:no;  mso-page-border-surround-footer:no;}@page Section1{size:841.9pt 595.3pt; mso-page-orientation:landscape; margin:89.85pt 72.0pt 89.85pt 72.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;}div.Section1 {page:Section1;}");
        sb.Append("");
        sb.Append("
"); sb.Append(html); sb.Append("
"); sb.Append(""); 说明一下 加了style 可以设置页面方式为横向 加html 那边 可以设置web视图为 页面视图 return File(pdfFile, "application/pdf", "" + "报销表_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".pdf"); } 这里用到了 iTextSharp 直接可以直接在项目nuget 里面下载安装 /// /// 将Html文字 输出到PDF档里 /// /// /// public byte[] ConvertHtmlTextToPDF(string htmlText) { if (string.IsNullOrEmpty(htmlText)) { return null; } //避免当htmlText无任何html tag标签的纯文字时,转PDF时会挂掉,所以一律加上

标签 htmlText = "

" + htmlText + "

"; MemoryStream outputStream = new MemoryStream();//要把PDF写到哪个串流 byte[] data = Encoding.UTF8.GetBytes(htmlText);//字串转成byte[] MemoryStream msInput = new MemoryStream(data); Document doc =new Document();//要写PDF的文件,建构子没填的话预设直式A4 PdfWriter writer = PdfWriter.GetInstance(doc, outputStream); //指定文件预设开档时的缩放为100% PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 0, doc.PageSize.Height, 1f); //开启Document文件 doc.Open(); //使用XMLWorkerHelper把Html parse到PDF档里 XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, msInput, null, Encoding.UTF8, new Models.UnicodeFontFactory());//UnicodeFontFactory 这个类是防止中午问题的 我在下面贴一下 直接复制过去就OK了 //将pdfDest设定的资料写到PDF档 PdfAction action = PdfAction.GotoLocalPage(1, pdfDest, writer); writer.SetOpenAction(action); doc.Close(); msInput.Close(); outputStream.Close(); //回传PDF档案 return outputStream.ToArray(); } UnicodeFontFactory 类 的内容 继承FontFactoryImp 类 public class UnicodeFontFactory : FontFactoryImp { private static readonly string arialFontPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "arialuni.ttf");//arial unicode MS是完整的unicode字型。 private static readonly string 标楷体Path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "KAIU.TTF");//标楷体 public override Font GetFont(string fontname, string encoding, bool embedded, float size, int style, BaseColor color, bool cached) { //可用Arial或标楷体,自己选一个 BaseFont baseFont = BaseFont.CreateFont(标楷体Path, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); return new Font(baseFont, size, style, color); } }

///导出的pdf 这个是百度上看到的自己抄了一下 发表主要是为了自己收集下来 发表的内容这里都有用过是有效果的

博客园精华区

责编内容by:博客园精华区阅读原文】。感谢您的支持!

您可能感兴趣的

.after () method does... I wanted to add a html div after paragraph on clicking the paragraph, but the after method is not taking the paramete...
C4D金箍棒制作教程 1,新建一个圆柱增加高度增加一点分段,显示打开光影着色线条 8bd14b300853d96f5ada32afa5c5bf41 2.复制这个柱子降低点高度将XZ轴方向放大一点,勾选圆柱圆角 6bd3abfbe592f6b59aa891...
Contextual styling with custom properties How to have multiple themes on the same page Something I’ve been wanting for a long time, define different regions li...
Web Design Weekly #278 Headlines Developing As A Developer A really solid post that is aimed at new developers but highly applicabl...
自定义NexT.Gemini主题的样式 这个 NexT 主题是一个比较好看的主题,它所集成的功能齐全,也十分实用。这个主题的整个框架是十分牛逼,不过在某些样式方面就不太符合个人的口味了,再改动一点点我就非常喜欢了,我也试过其他主题,基本都是要改动主题源代码的,而 N...