wkhtmltopd下載安裝以及php環(huán)境下的使用-創(chuàng)新互聯(lián)

  1. 首先打開下載wkhtmltopd需要的網(wǎng)址 https://wkhtmltopdf.org/downloads.html
    我的參考地址 https://gitee.com/srchen1987/dawdler-series
    首先查看自己服務(wù)端的操作系統(tǒng) :

    10年積累的成都做網(wǎng)站、網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先做網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有渦陽免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

    uname -a //linux 查看操作系統(tǒng)

     # lsb_release -a   
    
     我的是 CentOS 7.5  ,所以下載  CentOS 7    x86_64 / i686   Package (.rpm) built on CentOS 7.4.1804
     https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm   //rpm文件
     但是如果你想用tar.xz文件,下載地址在
     https://github.com/wkhtmltopdf/wkhtmltopdf/releases/0.12.4   選擇對應(yīng)操作系統(tǒng)即可,我選擇的是
     https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

2.下面進行安裝

  由于上面我們分了兩種文件,下面我們介紹兩種安裝方式:
        不管哪種方式,我們需要先進入到安裝的目錄,進入shell命令:
        cd /       #進入根目錄
        cd usr/local    #進入指定目錄
【1】rpm文件安裝
進入指定目錄后執(zhí)行下面命令 :
    這里按章rpm文件,遇到了很多需要下載的包,所以我嘗試換一下tar.xz文件下載
【2】tar.xz文件下載安裝
命令:
    $ : wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz   #下載文件
    $ :  tar wkhtmltox-0.12.4_linux-generic-amd64.tar.xz    #解壓文件
    在usr/local 出現(xiàn) wkhtmltox  文件夾即為成功
    為了能從任意路徑執(zhí)行程序,將 wkhtmltopdf 安裝到 /usr/bin 目錄下 ,執(zhí)行命令
    $ : cp wkhtmltox/bin/wkhtmltopdf /usr/bin/

3.額外問題

     本人中途遇到了很多報錯問題 
     fontconfig is needed by wkhtmltox-1:0.12.5-1.centos7.x86_64
    libXext is needed by wkhtmltox-1:0.12.5-1.centos7.x86_64
    libXrender is needed by wkhtmltox-1:0.12.5-1.centos7.x86_64
    xorg-x11-fonts-75dpi is needed by wkhtmltox-1:0.12.5-1.centos7.x86_64
    xorg-x11-fonts-Type1 is needed by wkhtmltox-1:0.12.5-1.centos7.x86_64

    上面的提示,我缺少 fontconfig libXext libXrender,于是我按照缺少的一直用 yum安裝(操作系統(tǒng)里面沒有yum可自行百度安裝方法)
  下面是我安裝的一些插件:
    $ : yum install libXrender*
    $ : yum install libfontconfig*
    $ : yum install libXext*

4.使用wkhtmltopdf

    如果你沒有碰到我第三部的問題,可以直接再shell控制臺直接使用
    $ : wkhtmltopdf http://www.baidu.com pdftest.pdf
    成功顯示
    Loading pages (1/6)
    libpng warning: iCCP: known incorrect sRGB profile           ] 49%
    libpng warning: iCCP: known incorrect sRGB profile           ] 53%
    libpng warning: iCCP: known incorrect sRGB profile           ] 56%
    Counting pages (2/6)                                               
    Resolving links (4/6)                                                       
    Loading headers and footers (5/6)                                           
    Printing pages (6/6)
    Done 
    如果你不知道生成的pdf路徑在哪里 ,我們需要查找剛才生成的pdf文件
    $ :find / -name pdftest.pdf
    輸出 /usr/local/pdftest.pdf ,可以看到生成的pdf文件默認在 wkhtmltox 同級目錄下

5.在php下使用 wkhtmltopdf

    剛才是在控制臺使用的wkhtmltopdf命令,而我們需要在php文件執(zhí)行生成pdf,總結(jié)網(wǎng)上給的方法:
    (1)安裝libwkhtmltox (linux內(nèi)核、Centos-6 .5-64bit),相當(dāng)于一個擴展
    (2)shell_exec()  執(zhí)行shell命令,確保該函數(shù)可以執(zhí)行
             我這里最開始碰到的一個問題是,在在服務(wù)器控制臺用wkhtmltopdf http://www.baidu.com pdftest.pdf可以 
    生成pdf文件,用自己的php代碼生成一直行不通,以為是擴展和shellexec必須要同時滿足,其實只要滿足其中
        一個就行,用shellexec快一點,用第一種方法需要×××下載或者git查找需要的擴展壓縮。*

    【1】這里我要實現(xiàn)的是 前端給一個地址訪問    http://www.xxx.com/test/test,生成對應(yīng)的pdf文件在服務(wù)器端口,
    于是簡單的給一個可以訪問的地址生成test.php文件
    php代碼 :
    <?php  $res = shell_exec('wkhtmltopdf http://www.baidu.com make.pdf');  ?>
    運行 http://www.xxx.com/test/test  ,但是一直沒有執(zhí)行生成對應(yīng)的pdf 
  【2】我嘗試另外的解決方式 我在 /usr/local下生成 test.php文件 代碼如上,用服務(wù)端自己運行
    $ : php test.php 
    竟然在 /usr/local 下生成了make.pdf
    【3】但是為什么放在可訪問的地址上寫一樣的代碼,第二種方法可以生成,于是我在第一種test.php 改寫代碼
       <?
         php  $res = shell_exec('wkhtmltopdf -V);    #注意這里是 大寫的 V
         ?>  
    可以看到瀏覽器里面返回了 :
    wkhtmltopdf 0.12.4 (with patched qt)
    【4】對比兩種方法,說明wkhtmltopdf是可以執(zhí)行了,因為可以返回其中的版本,只是為什么一個可以生成一
    個不可以,最后發(fā)現(xiàn)是你進入shell是以root身份進去,有著讀寫命令, 但是直接訪問你地址的話,你寫入pdf沒
    有這個權(quán)限
    需要賦予這個權(quán)限,你可以在你的項目里面給與一個有權(quán)限的,我生成的是 /app/pdf
    所以test.php代碼改進,直接訪問 http://www.xxx.com/test/test 
     <?php 
         $name = 'test.pdf';
             $url = 'http://www.baidu.com';
             $file = '/usr/local/nginx/html/xiaohua/App/pdf/'.$name; 
             $res = shell_exec('wkhtmltopdf '.$url.' '.$file);
     ?>

     第二個根據(jù)所傳的url 和輸出pdf名稱,進行瀏覽器下載pdf,
     訪問: http://www.xxx.com/test/test?url=http://www.baidu.com&name=test.pdf
     <?php  
         $url = $_GET['url'];
     $name = $_GET['name'];
     $file = '/usr/local/nginx/html/xiaohua/App/pdf/'.$name;
     $res = shell_exec('wkhtmltopdf '.$url.' '.$file);
    header('Content-type: application/pdf'); 
    header('Content-Disposition: attachment; filename='.$name );
    readfile( $file);
     ?>

6.生成pdf中文亂碼問題

    可以看到你通過訪問  http://www.xxx.com/test/test?url=http://www.baidu.com&name=test.pdf 生成的pdf文件,
    存在中文亂碼問題,可以在自己 C:\Windows\Fonts  找到 simsun.ttc 中文宋體,simsun.ttc 而不是  simsun.ttf,
    把字體文件放在 放在 /usr/share下面就行

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞標(biāo)題:wkhtmltopd下載安裝以及php環(huán)境下的使用-創(chuàng)新互聯(lián)
瀏覽地址:http://muchs.cn/article12/dgcsdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)網(wǎng)站排名、企業(yè)網(wǎng)站制作標(biāo)簽優(yōu)化、企業(yè)建站、網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)