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 国产色拍精品福利视频app,国产亚洲精品网站,国产精品视频在线免费观看

          整合營銷服務(wù)商

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

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

          php調(diào)用python腳本將word轉(zhuǎn)為html代碼

          詳細(xì)]php調(diào)用python腳本,將word轉(zhuǎn)為html代碼及調(diào)用失敗處理

          起因:因?yàn)楣居龅桨l(fā)稿問題,很多人喜歡用word編碼,然后再發(fā)布到網(wǎng)站上。PHP的包中雖然有部分可以使用的類庫,但是對于圖片始終處理不好,我就想到了python。研究了下,python將word轉(zhuǎn)為html還真是方便。但是,怎么結(jié)合到服務(wù)器上呢?我們的服務(wù)器是用PHP開發(fā)的。

          1:python腳本

          #!/usr/bin/python# -*- coding: UTF-8 -*-import sysfrom pydocx import PyDocXreload(sys)sys.setdefaultencoding('utf8')FileName = sys.argv[1] #獲取文件名參數(shù)ShortName = sys.argv[2] #獲取文件名參數(shù)html = PyDocX.to_html(FileName) # f = open("/www/wwwroot/micuer.com/pythoncode/runtime/99.txt", 'w') #服務(wù)器的全路徑# f.write(html)# f.close()print(html)

          2:php處理腳本

          public function uploadword(){        try {            $file = request()->file("file");            // 上傳到本地服務(wù)器            $savename = \think\facade\Filesystem::disk('upload')->putFile( 'word', $file);            $shotrname = time().".txt"; // 短名稱            $savename = "/www/wwwroot/micuer.com/data/upload/".$savename; //Request::domain().            $python_file_name = "/www/wwwroot/micuer.com/pythoncode/WordToHtml.py";            //組裝命令            $cmd = "python {$python_file_name} ".$savename." {$shotrname}  2>error.txt 2>&1";            $res = exec($cmd,$array, $ret);            return json(["code"=>200,"msg"=>"成功","data"=>$savename,"cmd"=>$cmd,"array"=>$array]);        } catch (think\exception\ValidateException $e) {            return json(["code"=>40000,"msg"=>$e->getMessage()]);        }    }

          上傳界面如下:

          實(shí)現(xiàn)的功能就是利用PHP的exec函數(shù),調(diào)用py腳本,將html代碼返回給前臺服務(wù)器。

          返回?cái)?shù)據(jù)如下

          其實(shí),再處理這個方案中,也遇到了很多問題,比如在命令行下只能成功,但是exec函數(shù)執(zhí)行不成功等等。
          參考了資料:https://my.oschina.net/u/4427610/blog/3155816
          也就是

          exec("python python_test.py 2>error.txt 2>&1", $array, $ret);

          在bash中0,1,2三個數(shù)字分代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即標(biāo)準(zhǔn)輸入(一般是鍵盤),標(biāo)準(zhǔn)輸出(一般是顯示屏,準(zhǔn)確的說是用戶終端控制臺),標(biāo)準(zhǔn)錯誤(出錯信息輸出)。
          也可以通過以下方式將標(biāo)準(zhǔn)錯誤重定向到標(biāo)準(zhǔn)輸出保存到$array中:
          打印之后,發(fā)現(xiàn)是沒有權(quán)限調(diào)用。于是就直接改為輸出了,也就是 py的print(html)函數(shù)。

          注意幾點(diǎn):
          1:執(zhí)行權(quán)限問題
          2:exec(“python python_test.py 2>error.txt 2>&1”, $array, $ret); 中 $array就接受到了 print(html)的值
          3:各個腳本盡量使用全路徑

          用PHP生成HTML文檔, 支持標(biāo)簽嵌套縮進(jìn), 支持標(biāo)簽自定義屬性

          起因

          這個東西確實(shí)也是心血來潮寫的, 本來打算是輸出HTML片段用的, 但后來就干脆寫成了一個可以輸出完整HTML的功能;

          我很滿意里邊的實(shí)現(xiàn)縮進(jìn)的機(jī)制, 大家有用到的可以看看

          p.s. 現(xiàn)在都是真正的前后端分離了(vue, nodejs, webpack...), 這個東西喜歡就用, 不喜歡就算了~

          支持的標(biāo)簽

          html, head, meta, title, body, input, select/option, form, table, div, 注釋, 以及 自定義標(biāo)簽(成對出現(xiàn)的標(biāo)簽), 還有一大堆屬性(在下邊有介紹)

          實(shí)現(xiàn)

          整體

          1.每個標(biāo)簽都對應(yīng)一個類, 比如 標(biāo)簽<html>, 對應(yīng)了一個叫html的類

          2.標(biāo)簽中有用到的屬性, 我都放到了一個類中了, 并提供了方法去獲取賦了值的屬性

          嵌套縮進(jìn)

          每個標(biāo)簽我都設(shè)計(jì)了一個類, 比如 table 標(biāo)簽, 就有一個叫table的類與之對應(yīng)

          每個類里邊一般都有以下3個重要成員:

          1.本標(biāo)簽的縮進(jìn)值

          2.輸出本標(biāo)簽最終字符串的方法, out()

          3.給本標(biāo)簽添加子標(biāo)簽的方發(fā), append()

          其中append()接收的是子標(biāo)簽的對象, 在最終調(diào)用$html->out()的時(shí)候, 每個子標(biāo)簽對象里的out()方法會被依次調(diào)用, 縮進(jìn)值也會從上層類傳遞到最下層類并累加;

          另外, 每個類都包含了屬性類(calss attribute ), 每個類的縮進(jìn)值是從屬性類里繼承而來的, 所以如果修改了屬性類里的縮進(jìn)量, 所有類的縮進(jìn)量就跟著改變了

          你也可以給標(biāo)簽類添加一個自己的縮進(jìn)值來覆蓋統(tǒng)一的縮進(jìn)值

          屬性

          我這里的方案是定義一個類(calss attribute ), 里邊有

          1.標(biāo)簽可能擁有的屬性

          2.對應(yīng)的setXxx方法

          3.組裝非空的屬性拼成字符串的方法

          4.為了不影響下次顯示, 會有專門的清空方法, 把之前賦值的屬性都清空

          這樣的話, 在定義標(biāo)簽屬性的時(shí)候, 需要的就賦上值, 不需要的不賦值就不會在最終的HTML代碼中顯示出來

          源碼地址: 傳到碼云了,看其中的test.php文件,是介紹他的用法。

          以上就是用php生成HTML文件的類的詳細(xì)內(nèi)容,更多請關(guān)注其它相關(guān)文章!

          更多技巧請《轉(zhuǎn)發(fā) + 關(guān)注》哦!

          khtmltopdf是一個非常有用的應(yīng)用程序,用于從html(網(wǎng)頁)創(chuàng)建pdf。本篇文章將介紹關(guān)于如何使用php腳本和Linux命令行工具創(chuàng)建網(wǎng)頁的pdf。



          步驟1:在Linux中安裝wkhtmltopdf

          從google code下載wkhtmltopdf并安裝到Linux系統(tǒng)。

          # cd /opt

          # wget https://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-i386.tar.bz2

          # tar xjf wkhtmltopdf-0.9.9-static-i386.tar.bz2

          # mv wkhtmltopdf-i386 /usr/bin/wkhtmltopdf

          # chown apache:apache /usr/bin/wkhtmltopdf

          # chmod +x /usr/bin/wkhtmltopdf

          步驟2:使用命令行創(chuàng)建PDF

          首先檢查wkhtmltopdf腳本,它在命令行中正常工作。下面的命令將創(chuàng)建http://google.com網(wǎng)頁的pdf。

          # /usr/bin/wkhtmltopdf http://google.com google.pdf

          步驟3:使用wkhtmltopdf創(chuàng)建pdf的php代碼

          使用下面的PHP代碼塊從HTML(網(wǎng)頁)生成PDF。此腳本需要為Apache啟用shell_exec函數(shù)。大多數(shù)共享主機(jī)不允許此函數(shù)。

          使用下面的代碼創(chuàng)建一個文件名getpdf.php,并將其放到網(wǎng)站文檔根目錄中。

          <?php

          $url = $_GET['url']; // Website URL to Create pdf

          $name = $_GET['pdf']; // Output pdf name

          $command = "/usr/bin/wkhtmltopdf ";

          $pdf_dir = "/var/www/html/pdfs/"; // Pdf files will be saved here

          $ex_cmd = "$command $url " . $pdf_dir . $name;

          $output = shell_exec($ex_cmd);

          ?>

          打開以下網(wǎng)址生成網(wǎng)站的pdf(html)。

          語法:http:

          //youdomain.com/getPdf.php?url = <website url>&pdf = <pdf name>

          示例:

          https : //tecadmin.net/getPdf.php?url = http : //google.com&pdf=google.pdf

          本篇文章到這里就已經(jīng)全部結(jié)束了,更多其他精彩內(nèi)容可以關(guān)注的Linux視頻教程欄目!

          以上就是使用Qtwebkit和PHP將HTML轉(zhuǎn)換為PDF的詳細(xì)內(nèi)容,更多請關(guān)注其它相關(guān)文章!

          更多技巧請《轉(zhuǎn)發(fā) + 關(guān)注》哦!


          主站蜘蛛池模板: 中文字幕一区日韩精品| 中文字幕一区二区日产乱码| 国产精品特级毛片一区二区三区| 精品久久一区二区三区| 中文精品一区二区三区四区| 国产成人av一区二区三区在线| 久久国产精品免费一区| 午夜视频在线观看一区二区| 亲子乱av一区二区三区| 福利一区二区三区视频午夜观看| 在线精品国产一区二区| 国产成人一区二区三区在线| 午夜性色一区二区三区免费不卡视频| 少妇无码AV无码一区| 精品在线视频一区| 国产免费一区二区三区VR| 亚洲国产精品一区二区三区在线观看| 熟女性饥渴一区二区三区| 免费人妻精品一区二区三区| 精品无码一区在线观看| 国产午夜精品一区理论片| 国产免费一区二区三区免费视频 | 无码少妇A片一区二区三区| 国产乱码精品一区二区三区中文| 日本高清无卡码一区二区久久 | 国产视频一区在线播放| 91精品福利一区二区| 亚洲国产国产综合一区首页| 国产一区在线电影| 日本中文字幕在线视频一区 | 美日韩一区二区三区| 中文字幕av日韩精品一区二区| 亚洲人成网站18禁止一区| 国产伦精品一区二区| 国产日韩精品一区二区在线观看| 日韩一区二区在线免费观看| 精品欧洲AV无码一区二区男男 | 国产午夜福利精品一区二区三区 | 麻豆AV一区二区三区| 日韩亚洲AV无码一区二区不卡| 亚洲AV无码一区二区二三区软件 |