首頁 後端開發 php教程 tp框架引入tcpdf插件步驟以及TCPD中文亂碼的解決方法

tp框架引入tcpdf插件步驟以及TCPD中文亂碼的解決方法

Apr 26, 2019 pm 05:31 PM
pdf文件 tcpdf thinkphp5

這篇文章主要講述的是tp框架引入tcpdf插件步驟以及TCPD中文亂碼的解決方法,具有一定的學習價值,有需要的朋友可以看看,希望能夠幫助到你。

做專案時用到HTML產生PDF,發現TCPDF外掛功能比較適合,因此選擇了這個外掛具體流程如下:

1.透過Composer下載最新版TCPDF,切換到程序根目錄執行如下指令(Windows下DOS指令切換):

composer require tecnickcom/tcpdf

指令成功執行後,TCPDF會被下載到程式根目錄中的vendor資料夾,如圖:

examples中有60多個典型範例,需要什麼功能直接看範例即可,範例對應清單請見TCPDF官網:https://tcpdf.org/examples/

2.在控制器中呼叫TCPDF。

use TCPDF;

3.在方法中直接貼上官方範例中的程式碼,成功運行。

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 001');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING, array(0,64,255), array(0,64,128));
$pdf->setFooterData(array(0,64,0), array(0,64,128));
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
    require_once(dirname(__FILE__).'/lang/eng.php');
    $pdf->setLanguageArray($l);
}
$pdf->setFontSubsetting(true);
$pdf->SetFont('dejavusans', '', 14, '', true);
$pdf->AddPage();
$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));
$html = <<<EOD
<h1>Welcome to <a href="http://www.tcpdf.org" style="text-decoration:none;background-color:#CC0000;color:black;"> <span style="color:black;">TC</span><span style="color:white;">PDF</span> </a>!</h1>
<i>This is the first example of TCPDF library.</i>
<p>This text is printed using the <i>writeHTMLCell()</i> method but you can also use: <i>Multicell(), writeHTML(), Write(), Cell() and Text()</i>.</p>
<p>Please check the source code documentation and other examples for further information.</p>
<p style="color:#CC0000;">TO IMPROVE AND EXPAND TCPDF I NEED YOUR SUPPORT, PLEASE <a href="http://sourceforge.net/donate/index.php?group_id=128076">MAKE A DONATION!</a></p>
EOD;
$pdf->writeHTMLCell(0, 0, &#39;&#39;, &#39;&#39;, $html, 0, 1, 0, true, &#39;&#39;, true);
$pdf->Output(&#39;example_001.pdf&#39;, &#39;I&#39;);
登入後複製

 注意事項:

1.因為TCPDF使用定界符的方式輸出html等內容,因此上述程式碼中的$html一直到EOD必須頂格。

2.ThinkPHP要關閉偵錯模式,不然輸出亂碼。

TCPD中文亂碼的解決方法
最新版本的TCPDF已經支援中文,在產生PDF的方法中顯示指定使用中文編碼即可。

$pdf->SetFont(&#39;stsongstdlight&#39;, &#39;&#39;, 12);
登入後複製

 TCPDF不能儲存中文檔案名稱的解決方法

PHP使用TCPDF產生PDF檔案時,如果檔案名稱是中文會被直接過濾掉,以下是TCPDF無法儲存中文檔案名稱的解決方法:

開啟tcpdf.php文件,找到output函數,大約在7554行。

1、註解以下程式碼,大約在7565-7568行:

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

 2、搜尋該方法程式碼,取代如下程式碼,大約分別在7639、7670、7693、7718行。

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

 替換為

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

 上述程式碼分別在該方法的case 'I':(列印PDF)、case 'D':(下載PDF)、case 'FD':(儲存到本地文件)語句中。

這樣PHP使用TCPDF產生PDF檔時就可以儲存為中文名稱了。

 相關教學:thinkPHP影片教學

#

以上是tp框架引入tcpdf插件步驟以及TCPD中文亂碼的解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

使用Python和WebDriver實現網頁截圖並儲存為PDF文件 使用Python和WebDriver實現網頁截圖並儲存為PDF文件 Jul 08, 2023 pm 10:55 PM

使用Python和WebDriver實作網頁截圖並儲存為PDF文件摘要:在Web開發和測試過程中,經常需要對網頁進行截圖以便進行分析、記錄和報告。本文將介紹如何使用Python和WebDriver來實現網頁截圖,並將截圖儲存為PDF文件,以方便分享和存檔。一、安裝與設定SeleniumWebDriver:安裝Python:造訪Python官網(https:

使用PHP和TCPDF創建浮水印和背景圖片 使用PHP和TCPDF創建浮水印和背景圖片 May 11, 2023 am 08:37 AM

隨著網路及數位時代的到來,圖片的應用越來越廣泛,尤其是一些場合需要為圖片添加浮水印或背景圖,以保障資訊的安全性和版權保護。此時,我們可以利用PHP語言和TCPDF庫來實現圖片的加浮水印和背景圖處理,以下就是具體實作方法。一、安裝TCPDF庫TCPDF是一個開源的PHP類別庫,用於建立PDF文檔,但它也提供了一些工具來建立圖片。 TCPDF類別庫的安裝相對簡單,我們

如何在CakePHP中使用TCPDF? 如何在CakePHP中使用TCPDF? Jun 05, 2023 pm 12:40 PM

CakePHP是一種非常流行的PHP框架,它提供了許多方便的方法來進行Web應用程式的開發。當我們需要在應用程式中產生PDF檔案時,TCPDF是一種非常常用的PDF生成庫。這篇文章將會介紹如何在CakePHP中使用TCPDF。安裝TCPDF首先,我們需要將TCPDF安裝在我們的CakePHP專案中。這可以透過幾種方式來完成,例如手動將TCPDF複製到專案的v

html檔案如何轉換成pdf文件 html檔案如何轉換成pdf文件 Apr 02, 2024 pm 02:02 PM

轉換方法:1、線上轉換工具,如 pdfcrowd 和 online2pdf,無需安裝即可快速將 HTML 檔案轉換成 PDF。 2、瀏覽器插件,如 Chrome 的 HTML 轉 PDF 插件,允許直接在瀏覽器中執行轉換。 3.專業軟體,如 Adob​​​​e Acrobat 和 Foxit PhantomPDF,提供更全面的功能,支援快速批次轉換和進階輸出選項。

寶塔部署thinkphp5報錯怎麼辦 寶塔部署thinkphp5報錯怎麼辦 Dec 19, 2022 am 11:04 AM

寶塔部署thinkphp5報錯的解決方法:1、開啟寶塔伺服器,安裝php pathinfo擴充並啟用;2、設定「.access」文件,內容為「RewriteRule ^(.*)$ index.php?s=/$1 [QSA ,PT,L]」;3、在網站管理裡面,啟用thinkphp的偽靜態即可。

使用PHP和TCPDF建立條碼和二維碼 使用PHP和TCPDF建立條碼和二維碼 May 11, 2023 pm 04:42 PM

條碼和二維碼是現代生活中廣泛使用的重要工具。它們被廣泛應用於各種領域,例如物流、零售、醫療、支付等。本文將介紹如何使用PHP和TCPDF庫建立條碼和二維碼。一、什麼是TCPDF? TCPDF是一個用於產生PDF文件的PHP庫。它是免費的、開源的,並且已經被廣泛應用於許多專案中。除了產生PDF文件外,TCPDF還提供了建立條碼和二維碼的功能。二、如何安裝T

thinkphp5 url重寫不行怎麼辦 thinkphp5 url重寫不行怎麼辦 Dec 12, 2022 am 09:31 AM

thinkphp5 url重寫不行的解決方法:1、查看httpd.conf設定檔中是否載入了mod_rewrite.so模組;2、將AllowOverride None中的None改為All;3、修改Apache設定檔.htaccess為「RewriteRule ^ (.*)$ index.php [L,E=PATH_INFO:$1]」保存即可。

怎麼去除thinkphp5標題欄icon 怎麼去除thinkphp5標題欄icon Dec 20, 2022 am 09:24 AM

移除thinkphp5標題列icon的方法:1、找到thinkphp5框架public下的favicon.ico檔案;2、刪除該檔案或選擇另一張圖片命名改為favicon.ico,並取代原favicon.ico檔案即可。

See all articles