Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 久久精品免费观看视频,91久久99热青草国产,国产午夜亚洲精品一区网站

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          不得不懂的HTML轉PDF神器,支持.NET,C ,php,java等

          們在開發各種管理系統的時候,不免需要將一些報表導出為PDF,這使用率應該來說是還相當廣的,今天,小編將給大家推薦一個HTML轉PDF的利器,神器,有了他,如虎添翼。

          什么html2pdf,pdflib,FPDF這些可能也有不少人用過,但,我推薦的不是這個,也是我們的:wkhtmltopdf

          wkhtmltopdf并且wkhtmltoimage是開源的(LGPLv3)命令行工具來渲染HTML到使用Qt WebKit渲染引擎PDF和各種圖像格式。這些運行完全“無頭”,不需要顯示或顯示服務。

          還有一個C庫,如果你是這樣的事情。

          我如何使用它?

          1. 下載預編譯的二進制文件或從源代碼構建

          2. 創建您想要轉換為PDF(或圖像)的HTML文檔

          3. 通過該工具運行您的HTML文檔。

            例如,如果我真的很喜歡Google今天對他們的徽標所做的處理,并希望以PDF形式永久捕獲它:

            wkhtmltopdf http://google.com google.pdf

          其他選項

          這很好,我一直想把Google的主頁變成PDF,但是我也想要一個目錄。

          有很多命令行選項。查看自動生成的wkhtmltopdf手冊。

          獲取核心

          命令行工具很棒,但我想要一個C庫。

          沒問題。檢查圖書館的文件。

          真實世界的例子?

          正如我們所說,如果您今天真的很喜歡Google的主頁,并且希望將其保存為PDF,則可以使用wkhtmltopdf。

          說真的,你可以用它來生成發票,生成生日賀卡,或其他各種有趣的事情。只是用你的想象力!

          wkhtmltopdf,wkhtmltopdf可以直接把任何一個可以在瀏覽器中瀏覽的網頁直接轉換成一個pdf,首先說明一下它不是一個C#類 其他語類的方法封裝,而是一個把html頁面轉換成pdf的一個軟件(需要安裝在服務器上),但是它并不是一個簡單的桌面軟件,而且它直接cmd批處理的,我們可以很簡便的調用它。

          今天我通過一個asp .net core mvc的例子給大家介紹下他的使用方法:

          首先,我們先在https://wkhtmltopdf.org/downloads.html 下載相應的服務器系統 wkhtmltopdf軟件

          當然,在https://github.com/wkhtmltopdf/wkhtmltopdf 我們也可以查到一些具體的應用例子


          我在先nuget添加了:https://github.com/cp79shark/Shark.PdfConvert,這個封裝了.net core調用wkhtmltopdf的常用操作方法,可以直接快速引用。

          什么是Shark.PdfConvert?

          Shark.PdfConvert是WkHtmlToPdf工具的一個簡單的.NET Core(也是目標net451)包裝器。大多數選項通過PdfConversionSettings對象公開,其他可以通過使用自定義覆蓋來指定所需的配置區域。

          轉換設置默認值是為Windows環境設置的,并假定您已安裝WkHTMLToPDF(x64)工具。您可以通過重寫PdfConversionSettings來覆蓋工具的路徑。PdfToolPath。

          您將需要安裝/下載WkHtmlToPdf,它不嵌入在NuGet包中

          示例1:靜態HTML內容

          PdfConvert.Convert(new PdfConversionSettings{
           Title = "My Static Content",
           Content = @"<h1>Lorem ipsum dolor sit amet consectetuer adipiscing elit
           I SHOULD BE RED BY JAVASCRIPT</h1>
          <script>document.querySelector('h1').style.color = 'rgb(128,0,0)';</script>",
           OutputPath = @"C:\temp\temp.pdf"});

          示例2:從URL獲取內容

          PdfConvert.Convert(new PdfConversionSettings{
           Title = "My Static Content from URL",
           ContentUrl = "http://www.lipsum.com/",
           OutputPath = @"C:\temp\temp-url.pdf"});

          示例3:使用流進行輸出和輸入

          PdfConversionSettings config = new PdfConversionSettings{
           Title = "Streaming my HTML to PDF"};using (var fileStream = new FileStream(Path.GetTempFileName() + ".pdf", FileMode.Create)){
           var task = new System.Net.Http.HttpClient().GetStreamAsync("http://www.google.com");
           task.Wait();
           using (var inputStream = task.Result)
           {
          PdfConvert.Convert(config, fileStream, inputStream);
          }}

          樣品4:混合和匹配

          PdfConversionSettings config = new PdfConversionSettings{
           Title = "A little bit of Everything",
           GenerateToc = true,
           TocHeaderText = "Table of MY Contents",
           PageCoverUrl = "https://blackrockdigital.github.io/startbootstrap-landing-page/",
           ContentUrl = "http://www.lipsum.com/",
           PageHeaderHtml = @"
           <!DOCTYPE html>
           <html><body>
           <div style=""background-color: red; color: white; text-align: center; width: 100vw;"">SECRET SAUCE</div>
           </body></html>"};using (var fileStream = new FileStream(Path.GetTempFileName() + ".pdf", FileMode.Create)){
           PdfConvert.Convert(config, fileStream);}

          示例5:MVC控制器操作中的用法

          public IActionResult ConvertToPdf([FromBody] PdfConversionSettings model) {
          // TAKE CARE WHEN Accepting the Conversion Settings from user land, it would be best
          // to just NOT DO it, accept your own custom model and map the parameters as needed.
          // If you insist, then you could do something like the following to prevent malicious code execution
          // in my testing the Custom*Args members are not a valid attack vector, PdfToolPath certainly is, never* trust
          // the client#if DEBUG
           // set path to executable, UNSAFE DEBUG USE ONLY FOR TESTING
           model.PdfToolPath = model.PdfToolPath ?? _host.ContentRootPath + @"\wkhtmltopdf.exe";#else
           // set path to executable
           model.PdfToolPath = _host.ContentRootPath + @"\wkhtmltopdf.exe";#endif	 
           if (model.OutputFilename.EndsWith(".pdf") == false) model.OutputFilename = model.OutputFilename + ".pdf";
           var memoryStream = new MemoryStream();
           PdfConvert.Convert(model, memoryStream);
           return new FileContentResult(memoryStream.ToArray(), MimeTypes.Pdf)
           {
           FileDownloadName = model.OutputFileName
           };}

          在Controller中的

          [HttpPost]

          public async Task<IActionResult> ExportPdf(PdfConversionSettings model)

          {

          var saveFilePath = "/upload/"+ model.Title + ".pdf";

          model.PdfToolPath = FileHelper.MapPath("wkhtmltox/wkhtmltopdf.exe");

          model.OutputPath = FileHelper.MapPath(saveFilePath);

          FileHelper.DeleteFile(saveFilePath);

          var ms= new MemoryStream();

          var head = @"

          <!DOCTYPE html><head><meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8"" />

          <meta name=""viewport"" content=""width=device-width,minimum-scale=1.0,maximum-scale=1.0,initial-scale=1.0,user-scalable=no"">

          <meta name=""apple-mobile-web-app-capable"" content=""yes"" />

          <title></title>

          <link rel=""stylesheet"" type=""text/css"" href=""/lib/art-dialog/css/dialog.css"" />

          <link rel=""stylesheet"" type=""text/css"" href=""/admin/skin/icon/iconfont.css"" />

          <link rel=""stylesheet"" type=""text/css"" href=""/admin/skin/default/style.css"" />

          <style type=""text/css"">

          h1{line-height:70px;margin-top:20px;font-size:40px;font-weight:bold;text-align:center;}

          body,div,p {line-height:50px; font-family: 'Microsoft YaHei';font-size:25px;}

          img{text-align:center;width:120%;height:400px;}

          table,tr,td{height:40px;}

          </style></head><body>";

          model.PageWidth = 210;

          model.PageHeight = 297;

          //model.Margins = new PdfPageMargins { Top = 100, Left = 20 };

          //model.Size = PdfPageSize.A4;

          model.Content = head + model.Content + "</body></html>";

          PdfConvert.Convert(model, ms);

          FileStream fileStream = null;

          try

          {

          fileStream = new FileStream(model.OutputPath, FileMode.Create);

          ms.WriteTo(fileStream);

          }

          catch(Exception ex)

          {

          return Json(new

          {

          status = 0,

          message = "導出PDF出錯!" + ex.Message

          });

          }

          finally

          {

          ms.Close();

          fileStream.Close();

          }

          return Json(new

          {

          status = 1,

          message = "PDF導出成功!",

          url = Request.Scheme + "://" + Request.Host.ToUriComponent() + "/" + saveFilePath

          });

          }


          這就是我的具體生成實現方法。

          導出PDF界面

          導出后的PDF

          CMSYOU分享PHPCMS V9模板風格管理設置技巧之后,我們繼續分享一篇關于自定義PHPCMS文章URL的技巧:Phpcms V9文章內容頁自定義HTML網址。

          這一方法,改變html默認采用數字生成的地址,可以自定義成字母、單詞、拼音,對于網址的識別性、SEO,有很大幫助!

          下面是來自rhongsheng發布的教程,分享在此。

          用過2008版的網友都知道,內容模型在發布內容的時候可以自定義生成的HTML文件名,這個功能對于SEO來說非常有好處,但是到了V9之后卻很遺憾,這個功能卻沒有了,現在你只要對V9進行一個小小的修改即可令V9重新擁有08版的自定義HTML文件名的功能,操作方法如下:

          1、修改你需要設置的模型,添加一個字段,配置如下:

          2、打開/phpcms/modules/content/create_html.php,找到代碼

          $urls = $this->url->show($r['id'], '', $r['catid'],$r['inputtime']);

          批量替換成

          $urls = $this->url->show($r['id'], '', $r['catid'],$r['inputtime'], $r['prefix']);

          共三處

          3、打開/phpcms/modules/content/classes/url.class.php,找到代碼

          .$day = date('d',$time);


          在其下方插入

          $tmp_id = $content_ishtml && $prefix ? $prefix : $id; //增加自定義HTML文件名支持

          找到

          $urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$page),$urlrule);

          修改為

          $urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$tmp_id,$page),$urlrule);

          完畢。

          Enjoy it!

          HP將HTML實體轉換為普通字符,我們可以使用PHP htmlspecialchars_decode()函數將特殊的HTML實體轉換為正常字符,如&,<,>(即&,<,>)等HTML實體字符恢復到正常字符。



          下面我們就結合代碼示例,為大家介紹PHP將HTML實體轉換為普通字符的實現方法。

          代碼示例如下:

          <?php
          $my_str = "I'm good & <b>"boy "</b>.";
          echo htmlspecialchars_decode($my_str);
          echo "<br>";
          echo htmlspecialchars_decode($my_str, ENT_QUOTES);
          echo "<br>";
          echo $my_str;
          

          輸出結果如下:



          htmlspecialchars_decode函數表示將特殊的 HTML 實體轉換回普通字符。

          說明 :

          string htmlspecialchars_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 ] )
          

          其參數:string表示要解碼的字符串,flags表示用下列標記中的一個或多個作為一個位掩碼,來指定如何處理引號和使用哪種文檔類型。默認為 ENT_COMPAT | ENT_HTML401。

          此函數的作用和 htmlspecialchars() 剛好相反。它將特殊的HTML實體轉換回普通字符。

          被轉換的實體有:&, " (沒有設置ENT_NOQUOTES 時), ' (設置了 ENT_QUOTES 時), < 以及>。

          該htmlspecialchars_decode()函數與htmlspecialchars()將特殊HTML字符轉換為HTML實體的函數相反。

          本篇文章就是關于PHP將HTML實體轉換為普通字符的方法介紹,簡單易懂,希望對需要的朋友有所幫助!

          以上就是PHP怎么將HTML實體轉換為普通字符的詳細內容,更多請關注其它相關文章!

          更多技巧請《轉發 + 關注》哦!


          主站蜘蛛池模板: 亚洲AV本道一区二区三区四区 | 欧美亚洲精品一区二区| 竹菊影视欧美日韩一区二区三区四区五区 | 国产精品一区二区久久不卡| 无码欧精品亚洲日韩一区夜夜嗨| 精品一区二区三区色花堂| 国产午夜福利精品一区二区三区 | 人妻夜夜爽天天爽爽一区| 人妻在线无码一区二区三区| 一区二区三区免费看| 色婷婷一区二区三区四区成人网| 怡红院AV一区二区三区| 国产成人AV一区二区三区无码| av无码免费一区二区三区| 一区二区免费国产在线观看| 熟妇人妻AV无码一区二区三区| 日韩免费无码一区二区视频| 国产无线乱码一区二三区| 日韩视频一区二区| 无码精品视频一区二区三区| 国产综合无码一区二区色蜜蜜| 无码少妇一区二区性色AV| 国产在线观看一区二区三区| 免费一区二区三区| 日本在线视频一区| 国产香蕉一区二区在线网站| 天堂Aⅴ无码一区二区三区| 亚洲欧美国产国产一区二区三区| 一区二区三区四区无限乱码| 亚洲sm另类一区二区三区| 中文字幕精品亚洲无线码一区 | 精品一区二区三区视频在线观看 | 精品少妇ay一区二区三区| 无码精品人妻一区二区三区影院| 亚洲制服中文字幕第一区| 夜夜爽一区二区三区精品| 日本一区二区三区不卡在线视频| 中文字幕视频一区| 亚洲乱码日产一区三区| 一区二区三区视频免费| 一区国产传媒国产精品|