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

  • 相关阅读:
    树莓派摄像头测试
    mqtt搭建基础教程()
    win10开始图标点击无效
    【python学习笔记:Django】7.数据库模型浅析
    【python学习笔记:Django】6.MySQL那些坑
    Ubuntu分区扩容
    Wine的中文显示与字体设置
    从有序矩阵M x N中找出是否包含某一个数,要求时间复杂度为O(M+N)
    之字形打印矩阵
    双向链表反转
  • 原文地址:https://www.cnblogs.com/xrxfirst/p/12713879.html
Copyright © 2020-2023  润新知