<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Wkhtmltopdf.NetCore使用總結(jié)

      序言

      環(huán)境要求:在centos7的docker上,.NETCORE 3.1
      目標(biāo):將HTML轉(zhuǎn)為PDF導(dǎo)出
      相關(guān)測(cè)試:
      Select.HtmlToPdf.NetCore,兼容性很好,使用也挺簡(jiǎn)單的,但是只支持windows系統(tǒng);
      DinkToPdf、Haukcode.WkHtmlToPdfDotNet等類庫(kù)在centos要支持各種類庫(kù),最后放棄了;
      還有個(gè)itextsharp沒有測(cè)試,有文章表示它對(duì)css的支持比較弱。

      Haukcode.WkHtmlToPdfDotNet簡(jiǎn)介

      地址:https://github.com/HakanL/WkHtmlToPdf-DotNet
      它使用P/invoke方式將wkhtmltopdf打包為linux的libwkhtmltox.so庫(kù)來調(diào)用;
      相關(guān)技術(shù)文章:http://www.rzrgm.cn/kelelipeng/p/10654315.html

      HTML頁面編寫

      樣式注意要點(diǎn):要有實(shí)際內(nèi)容,轉(zhuǎn)為PDF才會(huì)展示;

      陷阱1:寬度百分比無效;
      陷阱2:同行DIV要使用display:inline-block;
      陷阱3:div內(nèi)容要垂直居中,通過高度控制,在內(nèi)部添加2個(gè)div,第二個(gè)為空內(nèi)容(?);

      類庫(kù)使用

      github:https://github.com/fpanaccia/Wkhtmltopdf.NetCore

      示例:https://github.com/fpanaccia/Wkhtmltopdf.NetCore.Example

      引用類庫(kù)

      在nuget添加Wkhtmltopdf.NetCore,在Startup.cs添加引用

          // This method gets called by the runtime. Use this method to add services to the container.
          public void ConfigureServices(IServiceCollection services)
          {            
              services.AddControllers();
              services.AddWkhtmltopdf();
          }
      

      然后,將示例的文件夾Rotativa文件夾拷貝到WEB項(xiàng)目,包含不同操作系統(tǒng)的wkhtmltopdf

      dockerfile配置

      將windows下的字體拷到到wwwroot/fonts下的微軟雅黑和宋體拷到docker里面,并授權(quán)wkhtmltopdf;
      donetcore3是自己封裝的鏡像,已添加libgdiplus;

      FROM  donetcore3:v1 
      WORKDIR /app
      COPY . .
      
      COPY ./wwwroot/fonts/simsun.ttc /usr/share/fonts/ty/simsun.ttf
      COPY ./wwwroot/fonts/msyh.ttc /usr/share/fonts/ty/msyh.ttf
      COPY ./wwwroot/fonts/msyhl.ttc /usr/share/fonts/ty/msyhl.ttf
      COPY ./wwwroot/fonts/msyhbd.ttc /usr/share/fonts/ty/msyhbd.ttf
      
      EXPOSE 80/tcp
      
      ENV ASPNETCORE_ENVIRONMENT Production
      
      #測(cè)試多語言 啟用下面參數(shù) 指示docker默認(rèn)環(huán)境的語言為utf8
      ENV LC_ALL zh-Hans.UTF-8
      ENV LANG zh-Hans.UTF-8
      ENV LANGUAGE zh-Hans.UTF-8
      
      RUN chmod 755 /app/Rotativa/Linux/wkhtmltopdf
      
      ENTRYPOINT ["dotnet", "Monitor.Web.dll"]
      
      

      使用

      按A4橫向生成PDF

       [HttpGet]
              [Route("GetPage")]
              public IActionResult GetPage()
              {
                  var options = new ConvertOptions
                  {
                      //HeaderHtml = "http://localhost/header.html",
                      HeaderSpacing = 0,
                      FooterSpacing = 0,
                      IsGrayScale = true,                
                      PageSize = Wkhtmltopdf.NetCore.Options.Size.A4,
                      PageMargins = new Wkhtmltopdf.NetCore.Options.Margins() { Bottom = 0, Left = 0, Right = 0, Top = 0 },
                      PageOrientation = Wkhtmltopdf.NetCore.Options.Orientation.Landscape
                  };
                  _generatePdf.SetConvertOptions(options);
      
                  string htmlCode = "";
                  using (WebClient client = new WebClient())
                  {
      #if DEBUG
                      htmlCode = client.DownloadString("http://localhost:5020/print/DyColdStoragePrint");
      #else
      
                      htmlCode = client.DownloadString("http://127.0.0.1/print/DyColdStoragePrint");
      #endif
                  }
      
                  var pdf = _generatePdf.GetPDF(htmlCode);
      
                  var path = Path.Combine("wwwroot", DateTime.UtcNow.Ticks.ToString() + ".pdf");
                  using (var stream = new FileStream(path, FileMode.Create))
                  {
                      stream.Write(pdf, 0, pdf.Length);
                  }
      
                  return Content(path);
              }
      
      posted @ 2021-06-03 20:32  心存善念  閱讀(3030)  評(píng)論(4)    收藏  舉報(bào)
      主站蜘蛛池模板: 久久综合色之久久综合色| 亚洲av片在线免费观看| 亚洲国产精品黄在线观看| 国产精品午夜福利合集| 欧美18videosex性欧美黑吊| 天堂网av一区二区三区| 亚洲国产精品区一区二区| 日本www一道久久久免费| 精品亚洲成A人在线观看青青 | 久久这里只精品国产2| 国产午夜精品福利免费看| av午夜福利一片免费看久久| 天天躁久久躁日日躁| 国产精品女生自拍第一区| 白色丝袜国产在线视频| 国产69精品久久久久99尤物| 无码精品人妻一区二区三区中| 九九热在线精品视频九九| 自拍视频在线观看成人| 日韩亚洲精品国产第二页| 亚洲嫩模喷白浆在线观看| 波多野结衣av高清一区二区三区| 欧美大肥婆大肥bbbbb| 精品国产高清中文字幕| 卓尼县| 色综合久久综合香蕉色老大| 日产精品99久久久久久| 镇江市| 亚洲春色在线视频| 亚洲成av人片一区二区| 极品尤物被啪到呻吟喷水| 天天噜噜日日久久综合网| 91午夜福利一区二区三区| 日韩一区二区三区精彩视频| 少妇激情一区二区三区视频小说| 国产区成人精品视频| 亚洲久久色成人一二三区| 欧美国产精品不卡在线观看| 99精品高清在线播放| 欧美熟妇乱子伦XX视频| 漂亮的保姆hd完整版免费韩国|