記載 :
1.將 html 內容轉換至 pdf
2.解決語系utf 問題
3.順道理解 ob_start() 緩存在php的作法
以下連結包含解決中文顯示的問題 , 搭配底下的 code 一起看
https://github.com/spipu/html2pdf
直接帶入code來看 , 分為兩部份
//Content.php <table> <?php for($i = 0 ; $i < 5 ; $i++ ){ ?> <tr> <td><?php echo "---->".$i."<br>"; ?></td> </tr> <?php } ?> </table> <!-- 開始緩存 --> <?php ob_start(); ?> 要轉成pdf的內容こんにちは世界 <!-- 取得緩存內容 --> <?php $content = ob_get_contents(); ?> <!-- 關閉緩存 --> <?php ob_flush(); ?> <!-- 關閉緩存 印出 --> <?php ob_get_flush(); ?> <!-- 關閉緩存 不印出 --> <?php ob_end_clean(); ?> <!-- 測試緩存內容 --> <?php echo "<br>php Cache:".ob_get_contents()."<br>"; ?>
<form method="post" action="html2pdf.php"> <input type="hidden" name="Content" value=<?php echo $content; ?> <input type="submit" name="submit" value="Submit"> </form>
整體的理解
1.整個 html 資源由上到下,若需轉成 pdf 部份 以 ob_start()為起始
2.執行 ob_start() 表由該行開始將內容記入 php 緩存
3.ob_get_contents 取出緩存內容放入變數 $Content 中
4.為什麼需要這麼做?網路上得到的解答是只有字串才能放入寫檔函式中
因此透過緩存返回的字串塞進轉換函式中
5.記入緩存的內容以下列兩種方式來清除
5.1.ob_get_flush 清除緩存並且將緩存內容導致瀏覽器
5.2.ob_get-_clean 只清除緩存
//html2pdf.php
<?php
require_once(dirname(__FILE__).'../html2pdf.class.php');
try
{
//freeserif
$content = '<page style="font-family:javiergb">'.$_REQUEST['Content'].'</page>';
$html2pdf = new HTML2PDF('P', 'A4', 'fr', true, 'UTF-8', 0);
$html2pdf->pdf->SetDisplayMode('fullpage');
$html2pdf->setDefaultFont('javiergb');
$html2pdf->writeHTML($content, isset($_GET['vuehtml']));
$html2pdf->Output('ticket.pdf');
}
catch(HTML2PDF_exception $e) {
echo $e;
exit;
}
?>
html2pdf.php這支檔案內容理解很簡單,單純將form post的內容傳送至此做轉換
唯一要注意是
$html2pdf->setDefaultFont('javiergb');
此字型支援 Utf 各種語系顯示,轉換出來的中文才會正常
沒有留言:
張貼留言