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>
  • 相关阅读:
    解决 id_rsa 权限不够
    ubuntu卸载python3
    压缩go build打包的可执行文件
    Linux :scp 远程文件拷贝命令
    ubuntu 下彻底卸载 vim 并重新安装
    HDU2296——Ring(AC自动机+DP)
    POJ2778&HDU2243&POJ1625(AC自动机+矩阵/DP)
    AC自动机
    【扯】2016618
    POJ 3419 Difference Is Beautiful(RMQ变形)
  • 原文地址:https://www.cnblogs.com/qtiger/p/14133578.html
Copyright © 2011-2022 走看看