【问题标题】:FPDF / FPDI addPage() OrientationFPDF / FPDI addPage() 方向
【发布时间】:2012-08-24 12:37:51
【问题描述】:

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

【问题讨论】:

    标签: php pdf orientation fpdf fpdi


    【解决方案1】:

    我监督有一个名为 ->getTemplateSize() 的函数。 这是一个有效的 sn-p:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        如果您定义书房方向并且它不适用于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);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-13
          • 1970-01-01
          • 2018-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-27
          • 1970-01-01
          相关资源
          最近更新 更多