外部PDF文件导入页面无法正常显示

时间:2018-03-14 06:50:26

标签: php pdf mpdf

PDF文件的宽度比平常大。

$pagecount = $mpdf->SetSourceFile($pdfurl);
for($x=0;$x<$pagecount;$x++){
   $tplId = $mpdf->ImportPage(($x+1));
    $mpdf->UseTemplate($tplId);
    $mpdf->AddPage();
}

大多数PDF显示效果很好,但宽度较大时,只会显示其中的一部分。

2 个答案:

答案 0 :(得分:1)

您的代码中存在以下几个问题:

  1. 在添加页面之前调用UseTemplate()。
  2. AddPage()方法在默认页面大小中添加一个页面,该页面在构造函数中定义。
  3. 因此您必须将脚本更改为:

    $pageCount = $mpdf->SetSourceFile($pdfurl);
    for($pageNo = 1; $pageNo <= $pageCount ; $pageNo++){
        $tplId = $mpdf->ImportPage($pageNo);
        $size = $mpdf->GetTemplateSize($pageNo);
        $mpdf->AddPageByArray([
            'orientation' => $size['w'] > $size['h'] ? 'L' : 'P',
            'newformat' => [$size['w'], $size['h']]
        ]);
        $mpdf->UseTemplate($tplId);
    }
    

答案 1 :(得分:0)

谢谢@ Jan.Your代码对我来说不是很完美。但是指出了正确的方向。

for($pageNo = 1; $pageNo <= $pageCount ; $pageNo++){
    $tplId = $mpdf->ImportPage($pageNo);
    $size = $mpdf->GetTemplateSize($tplId);
    $w=210;
    if($size['w'] > $size['h']){
        $w=299;
    }
    $mpdf->AddPageByArray([
    'orientation' => $size['w'] > $size['h'] ? 'L' : 'P'
    ]);
    $mpdf->UseTemplate($tplId,0,0,$w);

}

但我的解决方案遇到了问题。横向模式会将PDF尺寸缩小一点。