FPDF / FPDI addPage() Orientation



我正在使用以下代码将新页面添加到我现有的PDF文档中并保存。

require('addons/fpdf.php');
require('addons/fpdi.php');
$pdf = new FPDI();                      
$pagecount = $pdf->setSourceFile($orgpdfpath);
for($i = 1; $i <=  $pagecount; $i++){
    $pdf->addPage();
    $tplidx = $pdf->importPage($i);
    $pdf->useTemplate($tplidx);
}
$pdf->addPage($pdforientation);
$pdf->Image($imgpath,$pdfxaxis,$pdfyaxis,$pdfwith,$pdfheight);
$pdf->Output($orgpdfpath,'F'); 

如果我有一个A4的文件,第1页:肖像,第2页:肖像、第3页:肖像等,效果很好。

如果我添加一个横向A4页面,它也会起作用。然而,在我添加了一个横向页面并尝试添加纵向页面后,横向页面会移回纵向页面,文档的整个格式也会中断。

我怀疑这与循环中的addPage()有关。为什么在应用->useTemplate时它不适当地旋转?

我监督了一个名为->getTemplateSize()的函数。下面是一个工作片段:

$pdf = new FPDI();                      
$pagecount = $pdf->setSourceFile($orgpdfpath);
for($i = 1; $i <=  $pagecount; $i++){
    $tplidx = $pdf->importPage($i);
    $specs = $pdf->getTemplateSize($tplidx);
    $pdf->addPage($specs['h'] > $specs['w'] ? 'P' : 'L');
    $pdf->useTemplate($tplidx);
}
$pdf->addPage($pdforientation);
$pdf->Image($imgpath,$pdfxaxis,$pdfyaxis,$pdfwith,$pdfheight);
$pdf->Output($orgpdfpath,'F'); 

BTW,如果你不能保证你的所有文档都是A4(这不是你的问题,但正是我的问题导致了这个问题),你也可以使用模板的大小来设置你生成的文件的页面大小,方法是在第二个arg:中以数组的形式传递大小

$pdf->AddPage(
    ( $size['w'] > $size['h'] ) ? 'L' : 'P',
    [ $size['w'], $size['h'] ]
);

如果您定义了den方向,而它在pdf生成中不起作用,那么这可能会有所帮助。我在AddPage()上更改了横向模式下的宽度和高度。这可能应该自动完成,但在我的案例中,结合fpdf/fpdi的包装类PDFmerger,它并没有。

$fpdi = new FPDI;
$count = $fpdi->setSourceFile($filename);
for($i=1; $i<=$count; $i++) {
  $template = $fpdi->importPage($i);
  $size = $fpdi->getTemplateSize($template);
  $orientation = ($size['h'] > $size['w']) ? 'P' : 'L';
  if ($orientation == "P") {
    $fpdi->AddPage($orientation, array($size['w'], $size['h']));
  } else {
    $fpdi->AddPage($orientation, array($size['h'], $size['w']));
  }
 $fpdi->useTemplate($template);
}

相关内容

  • 没有找到相关文章

最新更新