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:博客园精华区阅读原文】。感谢您的支持!

您可能感兴趣的

A Quick Tip for Hiding Browser Extension Overlays In my experience, most browser extension overlays use a background with the type of data:image/svg+xml . Furthermore, each of these overlays uses in...
接手前端新项目?这里有些注意点你可能需要留意一下... 前段时间加入公司内一个新开业务线的前端组,由于是新开的业务线,做的也是小程序这一块,所以几乎没有任何历史包袱,组内成员都是项目代码第一手产出者 我加入的时机较晚,没有经历过最开始的初创阶段,不太清楚一开始的状况,不过听说是蛮折磨人的,需要踩坑无数,凌晨2、3点下班都是常态,这让我即庆幸又遗憾,庆...
DOClever 3.0.4 发布,支持 html 和 xml 显示 DOClever是一个商业化开源产品,完全免费。无论你是前端工程师,还是后端工程师,接口永远都是两者交互的桥梁,所以DOClever专为中小型团队量身打造,旨在解决接口的管理,测试与数据生成,实现真正的一体化解决方案。 DOClever可以做什么? 1.可以对接口信息进行编辑管理,支持ge...
Fitting an image to its element frame Images require various sizing modes to fit in aresponsive layout. Here we’ll look at the relationship between the element and visual and the basic si...
学习flex布局(弹性布局) Flex是Flexible Box的缩写,意为弹性布局。是W3C早期提出的一个新的布局方案。可以便捷的实现页面布局,目前较高版本的主流浏览器都能兼容,兼容情况如下: Flex在移动端开发上已是主流,比如在h5页面,微信小程序等等。 为什么要用弹性布局呢? 在传统...