欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何使用TCPDF撰寫(xiě)和生成PDF文件

這篇文章主要介紹“如何使用TCPDF撰寫(xiě)和生成PDF文件”,在日常操作中,相信很多人在如何使用TCPDF撰寫(xiě)和生成PDF文件問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何使用TCPDF撰寫(xiě)和生成PDF文件”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到蒲縣網(wǎng)站設(shè)計(jì)與蒲縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋蒲縣地區(qū)。

一、需求

某一個(gè)合同需要在線生成,其中一部分內(nèi)容是固定的,而另一部分內(nèi)容是需要添加和編輯的。

編輯的部分是表單內(nèi)容的填寫(xiě),內(nèi)容涵蓋了:table input 兩個(gè)主要的html元素

現(xiàn)在需要在頁(yè)面編輯完合同之后,生成一份PDF文件保存在本地,同時(shí)下載一份文件。

二、選擇TCPDF

TCPDF 地址: https://tcpdf.org/

1. 選擇的原因

不需要安裝其他任何的依賴,這個(gè)是我最喜歡用它的原因。

2. 安裝

使用 composer 安裝即可,在 packagist 的地址是 :https://packagist.org/packages/tecnickcom/tcpdf

作者 tecnickcom 各種和 tcpdf 相關(guān)的包都有:https://packagist.org/packages/tecnickcom/

composer require tecnickcom/tcpdf

3. 使用方式

因?yàn)槭窃趆tml上操作,然后生成pdf,所以使用的方式是 writeHtml()

tcpdf 官網(wǎng)很多例子,可以直接用,比如 writeHtml() 就有專門(mén)的例子說(shuō)明:

  • https://tcpdf.org/examples/example_006/

4. 示例代碼

下面的代碼中需要注意的地方:

  • 我去掉了一部分的內(nèi)容,如果你需要,則可以參照官方網(wǎng)站的例子增加

    • 比如我去掉了 頁(yè)眉 頁(yè)腳, 并且 頁(yè)面距 都是 10

  • 最終使用的寫(xiě)入方式是 $pdf->writeHtml() ,參數(shù)使用推薦的參數(shù)即可

// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('pdf作者');
$pdf->SetTitle('PDF標(biāo)題');

$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);

// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// set margins
$pdf->SetMargins(10, 10, 10);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// Add a page
// This method has several options, check the source code documentation for more information.
$pdf->AddPage();

// set default font subsetting mode
$pdf->setFontSubsetting(true);
// Set font
// dejavusans is a UTF-8 Unicode font, if you only need to
// print standard ASCII chars, you can use core fonts like
// helvetica or times to reduce file size.
$pdf->SetFont('msyh', '', 11, '', true);

// set text shadow effect
$pdf->setTextShadow(array('enabled'=>false));
// Set some content to print
$html ='
<style>
input{
border:0;
border-bottom: 1px solid #cccccc;
padding:5px;
}
</style>
<div >
<h2>測(cè)試生成PDF</h2>
<input type="text" name="name" value="" size="20" maxlength="30"  />
<table cellspacing="0" border="1px"> 
  <tbody>
    <tr>
        <td>AAAA</td>
        <td>BBBB</td>
        <td>CCCC</td>
    </tr> 
</tbody>
</table>
</div> 
';
// Print text using writeHTMLCell()
// $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
// output the HTML content
$pdf->writeHTML($html, true, false, true, false, '');
// reset pointer to the last page
$pdf->lastPage();
// ---------------------------------------------------------
// Close and output PDF document
// This method has several options, check the source code documentation for more information.
$pdf->Output('example_001.pdf', 'D');
//============================================================+
// END OF FILE
//============================================================+

5. 生成結(jié)果

三、不可避免的問(wèn)題

1、 XHTML

需要注意的是,在使用 writeHtml() 的時(shí)候,支持的是 XHTML 而非 HTML ,當(dāng)然 HTML5 更不支持

因此在構(gòu)建前端頁(yè)面的html代碼的時(shí)候,請(qǐng)使用 xhtml,否則一些內(nèi)容會(huì)失效。

比如:

1) input 表單必須進(jìn)行閉合

XHTML要求所有單標(biāo)簽必須進(jìn)行自閉和,而 tcpdf 自然無(wú)法識(shí)別

像上面 如果 input 按照 html5 標(biāo)準(zhǔn)寫(xiě)是無(wú)法認(rèn)出來(lái)的。

2) 樣式如果比較少,建議寫(xiě)在 tag 中的內(nèi)聯(lián)樣式 ><style> 標(biāo)簽內(nèi)。

雖然 TCPDF支持 <style> 這樣寫(xiě)法,但是如 margin-top 這樣的寫(xiě)在 <style> 標(biāo)簽中不生效,但是寫(xiě)在內(nèi)聯(lián)樣式竟然生效!

2、 生成PDF文件的方式

最后的  $pdf->Output('example_001.pdf', 'D'); 有兩個(gè)參數(shù):

  • 第一個(gè)參數(shù)是文件名

  • 第二個(gè)參數(shù)是導(dǎo)出方式

1. 常用的導(dǎo)出方式分別是:
  • I : 直接在線預(yù)覽二進(jìn)制pdf文件(注意在一些PHP框架中,是無(wú)法直接顯示,會(huì)顯示亂碼)

  • D :直接下載到客戶端電腦并自動(dòng)在瀏覽器預(yù)覽

  • FD : 在服務(wù)器上存一份,并下載到當(dāng)前客戶端然后會(huì)在瀏覽器預(yù)覽

  • F: 存儲(chǔ)在服務(wù)器中,不在客戶端下載

2. 如果選擇 F 或者 FD 可能會(huì)遇到 fopen 啥啥啥的錯(cuò)誤

解決方案是,如果 選擇在服務(wù)器保存( F 或 FD ),第一個(gè)參數(shù)的文件名是需要一個(gè) 絕對(duì)路徑 的,比如:

$pdf->Output('/data/pdf/example_001.pdf','FD');

然后就能夠解決問(wèn)題。

四、中文亂碼

中文肯定是亂碼,這個(gè)想也不用多想。

最簡(jiǎn)單的解決方案:

1. 下載tcpdf支持的的中文字體

我在 CSDN 找到的是微軟雅黑的,親測(cè)可用,下載地址:

  • http://download.csdn.net/detail/wenyang800/9561869

2. 將文件進(jìn)行替換

  • 壓縮包中包含msyh.php,msyh.z,msyh.ctg.z三個(gè)文件,直接放入tcpdf的fonts目錄下,

  • 使用setfont("msyh","",11)設(shè)置生成pdf字體大小即可

我上面的代碼中已經(jīng)設(shè)置了微軟雅黑字體,然后中文就沒(méi)問(wèn)題。

到此,關(guān)于“如何使用TCPDF撰寫(xiě)和生成PDF文件”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

新聞標(biāo)題:如何使用TCPDF撰寫(xiě)和生成PDF文件
文章源于:http://chinadenli.net/article28/ihescp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)用戶體驗(yàn)、微信小程序靜態(tài)網(wǎng)站、品牌網(wǎng)站制作動(dòng)態(tài)網(wǎng)站

廣告

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

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)