FPDF / FPDI addPage()方向

时间:2012-08-29 20:13:06

标签: php pdf orientation fpdf fpdi

我正在使用以下代码将新页面添加到现有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()。为什么在应用 - &gt; useTemplate?

时它不能正确旋转

3 个答案:

答案 0 :(得分:12)

我监督了一个名为 - &gt; 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'); 

答案 1 :(得分:1)

如果你定义了den方向,它可能会有助于这个或那个,它在pdf生成中不起作用。我在AddPage()上以横向模式更改了宽度和高度。可能这应该是自动完成的,但在我的情况下,结合PDFmerger,fpdf / fpdi的包装类,它没有。

$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);
}

答案 2 :(得分:0)

顺便说一句,如果你不能保证你的所有文件都是A4(这不是你的问题,但这是我的问题导致我这个Q)你也可以使用你的大小模板,通过在第二个arg中将大小作为数组传递来设置生成的文件页面的大小:

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