開源網(wǎng)站建設輿情系統(tǒng)
最近在研發(fā)招聘的系統(tǒng)?遇到了這個問題?轉換pdf?折騰了很久?分享一下
PHP基于TCPDF第三方類生成PDF文件
最近遇到一個需求,需要根據(jù)數(shù)據(jù)庫的字段生成表格式的PDF文件并發(fā)送郵箱
第一步、我們先去官網(wǎng)上面去下載tcpdf的類:http://www.tcpdf.org/
或者是從github上面下載:https://github.com/tecnickcom/tc-lib-pdf-page,這個第三方類是免費開源的。
下載下來的之后將TCPDF-main文件夾名字更改為TCPDF,并將該文件夾放入vendor文件夾里面
第二步、我們需要進行自動加載composer,在終端輸入composer dump-autoload -o
然后會提示您是否執(zhí)行,我們輸入Y。
第三步、就是在我們項目里進行引入該第三方類,并實例化該類的方法。
需要下載中文字體包:
http://pan.baidu.com/share/link?shareid=327612&uk=606208636
解壓后,將字體包中的droidsansfallback.php、droidsansfallback.z以及droidsansfallback.ctg.z這三個文件復制到fonts目錄下。
否則生成的PDF文件打開是空白或者是亂碼。
我是在model里面進行調用的第三方類,然后在控制器里面直接使用這個方法就可以了。

引入該類并實例化。第二步將我下方的代碼復制進去即可,下方的代碼其實就是對PDF的格式進行設置,這個可以根據(jù)自身情況進行修改。
在PHP中進行編輯html代碼:

在生成PDF文件的代碼里面加入

這兩個紅框,一個是設置字體,一個是放HTML代碼。
然后在控制器里調用:“generate_pdf_files”這個方法即可。
設置成功后就像下方的圖片一樣:

下面是TCPDF常用函數(shù)的使用說明:
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, ‘UTF-8’, false);
頁面記得也設為utf-8
AddPage();新建一個pdf文檔頁面。
Image($file, $x, $y, $w, $h, $type, $link, $align, $resize, $dpi, $palign, $ismask, $imgmask, $border);
注:把圖片放語句$pdf->AddPage()之后,而這緊挨著,并且使用絕對坐標定位,即可做背景。
setFont( ‘字體’,‘控制顯示’,字號) 設置文字顯示樣式也可單獨使用
setTextcolor(int,int,int)設置文本顏色,三個參數(shù)的值必須在0~255之間
setFontSize(int );設置字號
setFillColor(int,int,int) 設置矩形框之類圖形的填充顏色,三個參數(shù)值必須在0和255之間
輸入文字:
單行文本
Cell($w, $h=0, $txt=‘’, $border=0, $ln=0, $align=‘’, $fill=0, $link=‘’, $stretch=0)
Cell(寬, 高, 內容, 邊框, 是否換行, 文字對齊, 文字底色,連接, 變寬)
多行文本
MultiCell($w, $h, $txt, $border=0, $align=‘J’, $fill=0, $ln=1, $x=‘’, $y=‘’, $reseth=true, $stretch=0, $ishtml=false, $autopadding=true, $maxh=0)
MultiCell(寬, 高, 內容, 邊框,文字對齊, 文字底色, 是否換行, x坐標, y坐標, 變高, 變寬, 是否支持html, 自動填充, 最大高度)
html文字
setHtmlLinksStyle($color=array(0,0,255), $fontstyle=‘U’);
setHtmlLinksStyle(顏色默認藍色, U有下劃線);
addHtmlLink($url, $name, $fill=0, $firstline=false, $color=‘’, $style=-1);
addHtmlLink(超鏈接地址, 顯示文字, 是否有底色, $firstline=false, $color=‘’, $style=-1);
換行
Ln($h=‘’, $cell=false);
Ln(行數(shù), 是否cell);
輸出pdf
$pdf->Output(doc.pdf’, ‘I’);
默認是 I:在瀏覽器中打開,
D:下載,
F:在服務器生成pdf ,
S:只返回pdf的字符串