6

我正在使用以下代码将新页面添加到现有 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时它没有正确旋转?

4

3 回答 3

16

我监督有一个名为 ->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'); 
于 2012-08-30T07:02:48.033 回答
2

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

$pdf->AddPage(
    ( $size['w'] > $size['h'] ) ? 'L' : 'P',
    [ $size['w'], $size['h'] ]
);
于 2016-02-05T17:32:37.560 回答
2

如果您定义了书房方向并且它在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);
}
于 2017-02-20T12:23:42.217 回答