zoukankan      html  css  js  c++  java
  • .Net生成PDF流

    需求是根据查询出来的数据动态生成一个PDF,包含图表、文本、分页等相关的基础元素,然后上传到OSS,共他人下载。先大概看下PDF的样式:

    我的做法是根据动态数据构建一个HTML,然后转为PDF流(生成流直接上传OSS,不需要本地保存文件了),用的库文件是OpenHtmlToPdf。

     代码如下:

    /// <summary>
    /// HTML转为PDF
    /// </summary>
    /// <param name="pmPartnerStatisticsModel"></param>
    /// <returns></returns>
    public static byte[] GeneratePDFStream(DataTable data)
    {
      string html = CreateHtml(data);
      using (WebClient wc = new WebClient())
       {
         byte[] pdfBytes = Pdf
            .From(html)
            .OfSize(PaperSize.A4)
             .WithoutOutline()
             .WithMargins(2.5.Centimeters())
             .Portrait()
             .Comressed()
             .Content();
          return pdfBytes;
      }
    }

    上述方法中有个CreateHtml方法,就是用来创建你想要的HTML,具体的按照自己设的的模板写就可以,这里说一下,让HTML转为PDF的时候,自定义分页。其实很简单,在HTML中,我们为每页加一个DIV,然后加上样式page-break-inside:avoid; 转为PDF的时候就可以分页了。举例如下:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset='UTF-8'>
    <title>xx</title>
    <style type="text/css">
    .pdfpage{page-break-inside:avoid;}
    </style>
    </head>
    <body>
    <div class="pdfpage">第一页</div>
    <div class="pdfpage">第二页</div>
    </body>
    </html>
  • 相关阅读:
    [bzoj1089] 严格n元树
    [bzoj1097] 旅游景点atr
    [hdu3887] Counting Offspring
    [POJ3321] Apple Tree
    [POJ3635] Full Tank?
    git
    【MySQL】数据的导出导入
    Ubuntu python 开发环境配置
    测试markdown
    约瑟夫环问题-java实现
  • 原文地址:https://www.cnblogs.com/qtiger/p/14133578.html
Copyright © 2011-2022 走看看