zoukankan      html  css  js  c++  java
  • .net中html转pdf

    最近研究了2天如何把html转为pdf保存的方法,网上找了好多解决方案。总结下来也就是2种

    一种是使用js的插件 jspdf  这款插件我试了下,很强大  使用起来也很简单,唯一 一点不好的就是转成pdf有些模糊

    另一种方案就是使用iTextSharp wkhtmltopdf Pechkin等工具  这些是最常见的了,本文中使用的是Pechkin 过程中还是踩了下坑

    今天给大家分享一下这2种方案的使用方法  当然有些讲解不好的地方  希望多多包涵 本人小白

    首先第一种使用js插件  我们需要准备2个文件  jspdf  html2canvas 这2个js文件  大家可以去网上找一下  比较多

    然后我们在需要用到的地方引用一下这几个js文件

    如图:

    这个是使用方法,下面注释的2行代码表示如果转换为pdf一页不够就会分成2页

     1  $(function () {
     2             $("#save").click(function () {
     3                 html2canvas($("#htmltopdf"), {
     4                     onrendered: function (canvas) {
     5                         //返回图片dataURL,参数:图片格式和清晰度(0-1);
     6                         var imgData = canvas.toDataURL();
     7                         //方向默认竖直,尺寸ponits,格式a4[595.28,841.89]
     8                         var doc = new jsPDF('p', 'pt', 'a4');
     9                         //addImage后两个参数控制添加图片的尺寸
    10                         doc.addImage(imgData, 'PNG', 9, 0, 500, 250);
    11                         //doc.addPage();
    12                         //doc.addImage(imgData, 'PNG', 9, -900, 650, 750);
    13                         doc.save('test.pdf');
    14                     }
    15                 })
    16             });
    17         })

    下面贴出html代码:

    <div id="htmltopdf">
            <h1>html转pdf</h1>
            <p>
                    关键代码解析:<br />
                    html2canvas 是将当前页面转换成图片;<br />
                    $('#appmsg') 是要转换为图片的页面范围;<br />
                    height:5000,这个高度要根据页面的大小灵活调整;
                    var doc = new jsPDF('p', 'px','a3'); p:横向,a3:纸张大小,默认是a4;<br />
                    doc.addImage(imgData, 'PNG', -9, 0,650,1500);将转换后的图片放到pdf文档上,<br />后面四个参数可根据实际效果灵活调整;<br />
                    doc.addPage(); 一页pdf显示不完整的时候,新增一页;
            </p>
            <img src="QQ截图20170809103511.png" />
        </div>
        <button id="save">下载</button>

     下面给大家介绍第二种方法Pechkin

    打开vs 管理NuGet程序包   如图所示  在项目中安装

    安装完成后会在根目录出现5个dll程序集

    文中创建的是mvc项目

            [HttpPost]
            public ActionResult DownloadPdf()
            {
                GlobalConfig config = new GlobalConfig();
                SimplePechkin pechkin = new SimplePechkin(config);
                ObjectConfig objectConfig = new ObjectConfig();
                objectConfig.SetPrintBackground(true)
                    .SetLoadImages(true)
                    .SetAffectPageCounts(true)
                    .SetPageUri("http://localhost:7858/Home/Index");
                byte[] bytePDF = pechkin.Convert(objectConfig);
                return  File(bytePDF, "application/pdf","test.pdf");
            }

    SetPageUri里面的那个链接替换成需要转pdf文档的网址链接就行了。lz小白一个  在调用这个方法的时候踩了一个坑  用ajax发起请求结果死活没反应

    正确方法应该酱紫的

    @using(Html.BeginForm("DownloadPdf","Home",FormMethod.Post))
    {
    <input type="submit" value="submit" />
    }

    在视图当中使用html辅助器调用。

    好了  方案就介绍到这,谢谢大家,文中方案如果有什么问题  欢迎大家提出

  • 相关阅读:
    php yield学习笔记(一)
    EasySwoole的ContextManager的分析和使用
    Easyswoole的WaitGroup和Csp组件的分析和使用
    Laravel Event的分析和使用
    Laravel驱动管理类Manager的分析和使用
    Laravel Exception结合自定义Log服务的使用
    vue基础
    vue.js
    改善项目组织
    MongoDB 4.0版
  • 原文地址:https://www.cnblogs.com/passerby-jia/p/7339394.html
Copyright © 2011-2022 走看看