整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          PHP轉(zhuǎn)換HTML為PDF文檔的方法和常見問題

          司的某項(xiàng)業(yè)務(wù)需要與用戶線上簽訂協(xié)議,即用戶在線手寫一個(gè)簽名,后臺將公司公章信息和用戶的簽名以及合同信息生成一份PDF文件,供用戶查看和下載。



          比對了一些插件,我們最終決定使用dompdf這個(gè)插件,插件的github在這里:https://github.com/dompdf/dompdf。

          1. 使用方法

          • 安裝可以使用composer或者直接下載源代碼,使用require或者include引入。
          • 具體的使用方式,可以參考以下示例代碼。
          // 引入命名空間
          use Dompdf\Dompdf;
          // 初始化dompdf對象
          $dompdf = new Dompdf();
          // 加載html文檔內(nèi)容
          $dompdf->loadHtml('hello world');
          // 設(shè)置紙張類型和方向
          $dompdf->setPaper('A4', 'landscape');
          // 渲染HTML為PDF
          $dompdf->render();
          // 流輸出
          $dompdf->stream();
          

          2. 常見問題和解決辦法

          2.1 中文亂碼的問題

          插件對于字體和編碼問題是這樣形容的:

          PDF documents internally support the following fonts: Helvetica, Times-Roman, Courier, Zapf-Dingbats, & Symbol. These fonts only support Windows ANSI encoding. In order for a PDF to display characters that are not available in Windows ANSI, you must supply an external font. Dompdf will embed any referenced font in the PDF so long as it has been pre-loaded or is accessible to dompdf and reference in CSS @font-face rules. See the font overview for more information on how to use fonts.The DejaVu TrueType fonts have been pre-installed to give dompdf decent Unicode character coverage by default. To use the DejaVu fonts reference the font in your stylesheet, e.g. body { font-family: DejaVu Sans; } (for DejaVu Sans). The following DejaVu 2.34 fonts are available: DejaVu Sans, DejaVu Serif, and DejaVu Sans Mono.

          嘗試了一下,默認(rèn)帶的字體是無法渲染中文的,使用CSS的@font-face引入會報(bào)錯(cuò)(也可能是我打開方式不對)。這樣就只好自己引入一個(gè)字體了。

          插件給了一個(gè)安裝語言文件的工具,地址再這里:https://github.com/dompdf/utils。

          使用步驟:

          • 下載或者復(fù)制load_font.php文件,放到dompdf文件夾內(nèi),與src和test文件夾同級
          • 修改load_font.php文件中引入的autoload.php為項(xiàng)目實(shí)際的位置
          • 在命令行中執(zhí)行php load_font.php simkai /path/to/simkai.ttf

          這樣,我們就可以在html文檔的css中使用font-family屬性來指定字體了。

          html {
           font-family: simkai;
          }
          

          2.2 圖片無法展示

          插件應(yīng)該是無法直接顯示網(wǎng)絡(luò)圖片,所以需要將圖片轉(zhuǎn)換為BASE64格式才能顯示。

          將HTML文檔中的所有圖片轉(zhuǎn)換為BASE64的方式:

          function imgToBase64($html) {
           $html = preg_replace_callback('/<img(?:.*?)src="(.*?)"(?:.*?)\/?>/', function($matches) {
           $imageInfo = getimagesize($matches[1]);
           $base64 = "" . chunk_split(base64_encode(file_get_contents($matches[1])));
           $base64_image = 'data:' . $imageInfo['mime'] . ';base64,' . $base64;
           return str_replace($matches[1], $base64_image, $matches[0]);
           }, $html);
           return $html;
          }
          

          這樣轉(zhuǎn)換其實(shí)性能影響挺大的,感覺性能不太好可以加一下緩存。

          hp修改html標(biāo)簽中的內(nèi)容php與html如何配合使用php改變htmlphp過濾htmlphp輸出html標(biāo)簽

          PHP刪除HTMl標(biāo)簽的三種解決方法_流年-CSDN博客_php去除htm...

          2017年9月19日 在PHP中可以使用strip_tags函數(shù)去除HTML標(biāo)簽,看下面示例: 復(fù)制代碼代碼如下: <?php $str = ‘www<p>dreamdu</p>.com'; echo(htmlspecialchars($str).”<br>”);...

          CSDN技術(shù)社區(qū)

          百度快照

          php去除HTML標(biāo)簽實(shí)例_php實(shí)例_腳本之家

          2013年11月6日 在php中要去除字符串中的HTML標(biāo)簽方法有很多種,最常用的就是使用strip_tags函數(shù)一并去了,只保留字符了,還在就是有選擇性的去除了這里要用正則表達(dá)式了,下面寫二...

          CMSYOU分享PHPCMS V9模板風(fēng)格管理設(shè)置技巧之后,我們繼續(xù)分享一篇關(guān)于自定義PHPCMS文章URL的技巧:Phpcms V9文章內(nèi)容頁自定義HTML網(wǎng)址。

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

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

          用過2008版的網(wǎng)友都知道,內(nèi)容模型在發(fā)布內(nèi)容的時(shí)候可以自定義生成的HTML文件名,這個(gè)功能對于SEO來說非常有好處,但是到了V9之后卻很遺憾,這個(gè)功能卻沒有了,現(xiàn)在你只要對V9進(jìn)行一個(gè)小小的修改即可令V9重新?lián)碛?8版的自定義HTML文件名的功能,操作方法如下:

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

          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!


          主站蜘蛛池模板: 岛国精品一区免费视频在线观看| 精品成人一区二区三区免费视频| 国产精品一区二区资源| 无码人妻精品一区二区三区9厂 | 91午夜精品亚洲一区二区三区 | 国偷自产视频一区二区久| 手机看片一区二区| 亚洲国产一区二区三区| 国产无吗一区二区三区在线欢 | 国产免费无码一区二区 | 久久国产精品亚洲一区二区| 久久久久国产一区二区| 一本色道久久综合一区| 美女视频黄a视频全免费网站一区 美女免费视频一区二区 | 一区二区三区视频免费观看 | 国产成人精品一区二区三区无码| 国产主播一区二区三区在线观看 | 久久精品无码一区二区无码| 国产成人精品一区二区秒拍| 久久久久久免费一区二区三区| 最美女人体内射精一区二区| 国产一区二区女内射| 中文字幕精品无码一区二区| 日本一区午夜艳熟免费| 国产在线精品一区二区不卡| 亚洲国产精品第一区二区| 亚洲午夜电影一区二区三区| 国产精品电影一区| 欧美日本精品一区二区三区 | 无码人妻精品一区二区蜜桃百度| 精品人妻一区二区三区四区 | 国产亚洲一区区二区在线 | 国产在线一区二区三区| 久久综合九九亚洲一区| 狠狠色综合一区二区| 国产女人乱人伦精品一区二区| 日本中文一区二区三区亚洲| 国产色情一区二区三区在线播放| 麻豆天美国产一区在线播放| 午夜一区二区免费视频| 久久无码人妻精品一区二区三区|