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、最后来一张效果图

  • 相关阅读:
    MySql模糊查询like通配符使用详细介绍
    使用powershell批量添加Qt的文件(生成pro)
    宏定义的教训
    使用powershell批量添加Keil和IAR的头文件路径
    python和数据科学(Anaconda)
    CDCE913产生任意频率
    QT中检索设定目录下所有指定文件的方法
    QT中将ASCII转换为对应数值的方法
    STM8如何使用自带的bootloader
    QT中使用函数指针
  • 原文地址:https://www.cnblogs.com/xrxfirst/p/12713879.html
Copyright © 2011-2022 走看看