zoukankan      html  css  js  c++  java
  • C#:采用TuesPechkin生成Pdf

    1、需求

    前段时间有个需求,要求把网页生成pdf,找了各种插件,才决定使用这个TuesPechkin,这个是后台采用C#代码进行生成

    2、做法

    我要做的是一个比较简单的页面,采用MVC绑定,数据动态加载,页面上给个按钮,点击后请求后台接口,便可以生成pdf文件了

    3、实现方式

    引入两个相关DLL,TuesPechkin.Wkhtmltox.XXX  根据你当前的系统来选择对应的DLL(一般添加前两个就行),

    4、生成PDF代码段

    先在后台将指定HTML页生成为string字符串,然后调用如下方法即可

            /// <summary>
            /// 生成pdf
            /// </summary>
            /// <param name="htmlStr">生成内容</param>
            /// <param name="path">生成地址</param>
            private static void ConvertHtmlTextToPdf(string htmlStr, string filepath)
            {
                if (!Directory.Exists(filepath))  //不存在文件夹,创建
                    Directory.CreateDirectory(filepath);  //创建新的文件夹
    
                var fileName = DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".pdf";
                var path = filepath + fileName;
                var document = new HtmlToPdfDocument
                {
                    GlobalSettings =
                    {
                        ProduceOutline = true,
                        DocumentTitle = "标题",
                        PaperSize = PaperKind.A4, // Implicit conversion to PechkinPaperSize
                        Margins =
                        {
                            All=0,
                            Unit = Unit.Centimeters
                        }
                    },
                    Objects =
                    {
                        new ObjectSettings
                        {
                            HtmlText =htmlStr,
                            WebSettings =new WebSettings
                            {
                                DefaultEncoding="UTF-8",
                                LoadImages=true,
                            }
                        }
                    },
                };
    
    
                byte[] buf = GetConverter().Convert(document);
                //直接把result二进制数据写入文件流
                FileStream fs = new FileStream(path, FileMode.OpenOrCreate);
                fs.Write(buf, 0, buf.Length);
                fs.Close();
                IToolset toolset = new PdfToolset();
                toolset.Unload();  
            }

     5、备注

    此插件对css样式支持比较友好,但是不支持使用外部样式表,必须为嵌入样式,而且生成出来的Pdf整体版面偏小,需要微调样式,细心一点

    6、最后来一张效果图

  • 相关阅读:
    新工作 Day24 周六
    新工作 Day23 周五
    新工作 Day22 周四
    新工作 Day21 周三
    新工作 Day20 周二
    新工作 Day19 周一
    新工作 Day18 周日
    新工作 Day17 周六
    java线程池 多线程搜索文件包含关键字所在的文件路径
    java实现搜索文件夹中所有文件包含的关键字的文件路径(递归搜索)
  • 原文地址:https://www.cnblogs.com/xrxfirst/p/12713879.html
Copyright © 2011-2022 走看看