PHP laravel怎樣實現匯出PDF功能

2022-11-02 18:00:43
本篇文章給大家帶來了關於的相關知識,其中主要介紹了關於laravel實現匯出PDF功能的相關問題,下面一起來看一下,希望對大家有幫助。

Laravel 9 保姆級視訊教學,想學不會都難!進入學習

推薦學習:《》

一、laravel-tcpdf

匯出PDF檔案Laravel框架為我們整合了一個外掛tcpdf。

下載地址:

https://github.com/elibyy/tcpdf-laravel

然後使用composer進行安裝就可以了。

具體安裝過程,請檢視文末補充內容

使用的時候記得use 一下 名稱空間。

但是這裡有一個問題,使用這個外掛匯出檔案無法使用中文,且我還沒有找到解決辦法,因此,這個laravel的tcpdf外掛我就沒有使用。

二、tcpdf

tcpdf官方網站:

tcpdf.org/

我下載了完整版的TCPDF

下載地址:https://github.com/tecnickcom/TCPDF.git

我們將下載的包放在框架根目錄下的app/Extend/tcpdf中。

呼叫程式碼:

        require_once("../app/Extend/tcpdf/tcpdf.php");
$pdf = new TCPDF();
        // 設定檔案資訊
        $pdf->SetCreator('懶人開發網');
        $pdf->SetAuthor('懶人開發網');
        $pdf->SetTitle('TCPDF範例');
        $pdf->SetSubject('TCPDF範例');
        $pdf->SetKeywords('TCPDF, PDF, PHP');
 
        // 設定頁首和頁尾資訊
        $pdf->SetHeaderData('tcpdf_logo.jpg', 30, 'LanRenKaiFA.com', '學會偷懶,並懶出效率!', [0, 64, 255], [0, 64, 128]);
        $pdf->setFooterData([0, 64, 0], [0, 64, 128]);
 
        // 設定頁首和頁尾字型
        $pdf->setHeaderFont(['stsongstdlight', '', '10']);
        $pdf->setFooterFont(['helvetica', '', '8']);
 
        // 設定預設等寬字型
        $pdf->SetDefaultMonospacedFont('courier');
 
        // 設定間距
        $pdf->SetMargins(15, 15, 15);//頁面間隔
        $pdf->SetHeaderMargin(5);//頁首top間隔
        $pdf->SetFooterMargin(10);//頁尾bottom間隔
 
        // 設定分頁
        $pdf->SetAutoPageBreak(true, 25);
 
        // set default font subsetting mode
        $pdf->setFontSubsetting(true);
 
        //設定字型 stsongstdlight支援中文
        $pdf->SetFont('stsongstdlight', '', 14);
 
        //第一頁
        $pdf->AddPage();
        $pdf->writeHTML('<p style="text-align: center"><h1>第一頁內容</h1></p>');
        $pdf->writeHTML('<p>我是第一行內容</p>');
        $pdf->writeHTML('<p style="color: red">我是第二行內容</p>');
        $pdf->writeHTML('<p>我是第三行內容</p>');
        $pdf->Ln(5);//換行符
        $pdf->writeHTML('<p><a href="http://www.lanrenkaifa.com/" rel="external nofollow"  title="">懶人開發網</a></p>');
 
        //第二頁
        $pdf->AddPage();
        $pdf->writeHTML('<h1>第二頁內容</h1>');
 
        //輸出PDF
        $pdf->Output('t.pdf', 'I');//I輸出、D下載
登入後複製

三、TCPDF解決儲存中文件名的方法

這部分是百度過來的,網上挺多關於這個的文章的,內容基本一致。

1:找到output函數,註釋以下程式碼(在7560行左右):

if ($dest[0] != 'F') {
    $name = preg_replace('/[s]+/', '_', $name);
    $name = preg_replace('/[^a-zA-Z0-9_.-]/', '', $name);
}
登入後複製

2:搜尋下面這行程式碼

header('Content-Disposition: attachment; filename="'.basename($name).'"');
登入後複製

替換成:

header('Content-Disposition: attachment; filename="'.$name.'"');
登入後複製

以上大概就是tcpdf的基本使用。

補充

laravel5.8引入第三方類庫的方法詳解

有需求需要使用PHPMailer傳送郵件。

那麼首先需要引入PHPMailer這個第三方的類庫。我是這樣做的:

1:在app目錄下新建Extend目錄。如下圖所示:

將PHPMailer放入Extend目錄下。如下圖所示

2:修改專案根目錄下的composer.json檔案

"autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories",
            "app/Extend/PHPMailer/src"
        ]
    },
登入後複製

新增你第三方類庫的位置到autoload中

3:執行composer命令,在網站根目錄下:

composer dump-autoload

4:呼叫:

(1):使用名稱空間

use PHPMailer\src\PHPMailer;
登入後複製

(2):呼叫

 //範例化PHPMailer核心類
$mail = new PHPMailer();
登入後複製

如果報錯,就在範例化前邊加一個跳脫符\

至此,laravel引入第三方類庫成功。

推薦學習:《》

以上就是PHP laravel怎樣實現匯出PDF功能的詳細內容,更多請關注TW511.COM其它相關文章!