首頁 > 後端開發 > php教程 > 使用 MPDF 將HTML轉為PDF,然後將該PDF轉為PNG圖片的時候,中文報錯... ...

使用 MPDF 將HTML轉為PDF,然後將該PDF轉為PNG圖片的時候,中文報錯... ...

WBOY
發布: 2016-09-28 08:54:07
原創
1511 人瀏覽過

第一步:

使用 MPDF(版本6.1) 將 HTML 頁面轉為PDF文件,可以轉換成功。程式碼如下:

<code>$html = "对盲人初学者来说,它无需任何额外的修改。";
// $html = "These are the most used acronyms throughout this manual.";
include './mpdf/mpdf.php';
$mpdf=new mPDF('+aCJK'); 
$mpdf->autoScriptToLang = true;
$mpdf->autoLangToFont = true;
$mpdf->WriteHTML($html);
$mpdf->Output();</code>
登入後複製
登入後複製

第二步:

使用 imagick 實現 PDF 轉 圖片 的時候,
如果 PDF 文件中 沒有中文,則轉換成功
如果 PDF 文件中 有中文,則直接報錯:,報錯代碼:

<code>Fatal error: Uncaught exception 'ImagickException' with message 'Failed to read the file' in /home/www/test/index-back.php:26 Stack trace: #0 /home/www/test/index-back.php(26): Imagick->readimage('/home/www/test/...') #1 /home/www/test/index-back.php(48): pdf2png('/home/www/test/...', '/home/www/test/...') #2 {main} thrown in /home/www/test/index-back.php on line 26</code>
登入後複製
登入後複製

備註:另外,自己找了一個公開API的PDF說明文件(基本上全是中文), 使用 imagick把該PDF轉成png,轉換成功功功...

PDF 轉 圖片 代碼:

<code>function pdf2png($PDF, $Path){
   if(!extension_loaded('imagick')){
       return false;
   }
   if(!file_exists($PDF)){
       return false;
   }
   $IM = new imagick();
   $IM->setResolution(120, 120);
   $IM->setCompressionQuality(100);
   $IM->readImage($PDF);
   foreach($IM as $Key => $Var){
       $Var->setImageFormat('png');
       $Filename = $Path.'/'.md5($Key.time()).'.png';
       if($Var->writeImage($Filename)==true){
           $Return[]= $Filename;
       }
   }
   return $Return;
}
$pdf = __DIR__.'/1.pdf';
$path = __DIR__.'/images';
$data = pdf2png($pdf, $path );
var_dump($data);</code>
登入後複製
登入後複製

求解決:

<code>使用 MPDF 将HTML转为PDF,然后将该PDF转为PNG图片时有中文怎么才能不报错??
</code>
登入後複製
登入後複製

回覆內容:

第一步:

使用 MPDF(版本6.1) 將 HTML 頁面轉為PDF文件,可以轉換成功。程式碼如下:

<code>$html = "对盲人初学者来说,它无需任何额外的修改。";
// $html = "These are the most used acronyms throughout this manual.";
include './mpdf/mpdf.php';
$mpdf=new mPDF('+aCJK'); 
$mpdf->autoScriptToLang = true;
$mpdf->autoLangToFont = true;
$mpdf->WriteHTML($html);
$mpdf->Output();</code>
登入後複製
登入後複製

第二步:

使用 imagick 實現 PDF 轉 圖片 的時候,
如果 PDF 文件中 沒有中文,則轉換成功
如果 PDF 文件中 有中文,則直接報錯:,報錯代碼:

<code>Fatal error: Uncaught exception 'ImagickException' with message 'Failed to read the file' in /home/www/test/index-back.php:26 Stack trace: #0 /home/www/test/index-back.php(26): Imagick->readimage('/home/www/test/...') #1 /home/www/test/index-back.php(48): pdf2png('/home/www/test/...', '/home/www/test/...') #2 {main} thrown in /home/www/test/index-back.php on line 26</code>
登入後複製
登入後複製

備註:另外,自己找了一個公開API的PDF說明文件(基本上全是中文), 使用 imagick把該PDF轉成png,轉換成功功功...

PDF 轉 圖片 代碼:

<code>function pdf2png($PDF, $Path){
   if(!extension_loaded('imagick')){
       return false;
   }
   if(!file_exists($PDF)){
       return false;
   }
   $IM = new imagick();
   $IM->setResolution(120, 120);
   $IM->setCompressionQuality(100);
   $IM->readImage($PDF);
   foreach($IM as $Key => $Var){
       $Var->setImageFormat('png');
       $Filename = $Path.'/'.md5($Key.time()).'.png';
       if($Var->writeImage($Filename)==true){
           $Return[]= $Filename;
       }
   }
   return $Return;
}
$pdf = __DIR__.'/1.pdf';
$path = __DIR__.'/images';
$data = pdf2png($pdf, $path );
var_dump($data);</code>
登入後複製
登入後複製

求解決:

<code>使用 MPDF 将HTML转为PDF,然后将该PDF转为PNG图片时有中文怎么才能不报错??
</code>
登入後複製
登入後複製
相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板