Файл PDF имеет большую ширину, чем обычно.

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

Большинство PDF-файлов отображается хорошо, но при большой ширине отображается только его часть.

0
hulkyuan 14 Мар 2018 в 09:50

2 ответа

Лучший ответ

Спасибо @ Jan. Ваш код не работает у меня идеально, но укажите мне правильное направление.

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.

0
hulkyuan 15 Мар 2018 в 08:22

В вашем коде есть несколько проблем:

  1. Вы вызываете UseTemplate () перед добавлением страницы.
  2. Метод AddPage () добавляет страницу с размером страницы по умолчанию, который был определен в конструкторе.

Итак, вам нужно изменить свой сценарий на:

$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
Jan Slabon 14 Мар 2018 в 11:54