回覆列表
  • 1 # 真心相愛

    安裝wkhtmltopdf

    #apt-getinstallwkhtmltopdf

    從HTML生成PDF檔案的基本語法如下:

    #wkhtmltopdfinput-fileoutput-file

    我們可以從任何網頁生成PDF:

    #wkhtmltopdfexample.comexample.pdf

    或從本地html檔案:

    #wkhtmltopdfexample.htmlexample.pdf

    以上命令只能在Linuxbox圖形環境中使用。如果我們在一個VPS或專用伺服器上生成PDF,如果我們執行該命令,我們將得到從下錯誤:

    wkhtmltopdf:cannotconnecttoXserver

    為了解決這個問題,我們需要使用一個名為xvfb的工具。

    Xvfb是一個X伺服器,能夠執行在沒有顯示硬體和沒有物理輸入裝置的機器上。它使用虛擬記憶體來模擬一個dumbframebuffer。

    回到頂部

    安裝xvfb

    #apt-getinstallxvfb

    接下來,我們需要建立一個shell指令碼:

    xvfb-run--server-args="-screen0,1024x768x24"/usr/bin/wkhtmltopdf$*

    然後將它儲存在/usr/bin/wkhtmltopdf.sh下

    下一步,我們將建立一個symbolic連結,這樣我們就可以執行指令碼而不用編寫的完整路徑:

    #ln-s/usr/bin/wkhtmltopdf.sh/usr/local/bin/wkhtmltopdf2

    讓我們嘗試執行shell指令碼,並看看會發生什麼。

    #wkhtmltopdf2example.comexample.pdf

    Loadingpage(1/2)

    Printingpages(2/2)

    Done

    好,如果能夠正確執行。就可以用以下自定義PHP指令碼來生成一個PDF檔案。

    //Turnonoutputbuffering

    ob_start();

    echo"<html>";

    echo"<head>";

    echo"</head>";

    echo"<body>";

    echo"<p>customHTMLtoPDFreport</p>";

    echo"</body>";

    echo"</html>";

    //returnthecontentsoftheoutputbuffer

    $html=ob_get_contents();

    $filename=date("YmdHis");

    //savethehtmlpageintmpfolder

    file_put_contents("/tmp/{$filename}.html",$html);

    //Cleantheoutputbufferandturnoffoutputbuffering

    ob_end_clean();

    //convertHTMLtoPDF

    shell_exec("wkhtmltopdf2-q/tmp/{$filename}.html/tmp/{$filename}.pdf");

    if(file_exists("/tmp/{$filename}.pdf")){

    header("Content-type:application/pdf");

    header("Content-Disposition:attachment;filename="{$filename}.pdf"");

    echofile_get_contents("/tmp/{$filename}.pdf");

    }else{

    exit;

    }

  • 中秋節和大豐收的關聯?
  • 吳字的成語大全?