Estoy usando el siguiente código para agregar una nueva página a mi documento PDF existente y guardarlo.

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

Funciona bien si tengo un documento que es A4, Página 1: el retrato, Página 2: retrato, Página 3: retrato, etc.

También funciona si puedo añadir un paisaje de Página A4. Sin embargo, después he añadido un paisaje de la página y tratar de añadir un retrato, el paisaje se desplaza hacia atrás para un retrato y todo el formato del documento se rompe.

Sospecho que esto tiene que ver algo con addPage() dentro del bucle. ¿Por qué no girar de forma adecuada cuando la aplicación ->useTemplate?

OriginalEl autor mmackh | 2012-08-29

3 Comentarios

  1. 12

    Supervisé la que hay una función llamada ->getTemplateSize().
    He aquí un trabajo fragmento:

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

    OriginalEl autor mmackh

  2. 1

    Tal vez esto ayuda a que el uno o el otro, si se define den orientación y no funciona en la generación de pdf. He cambiado la anchura y la altura en el modo de paisaje en AddPage(). Probablemente esto se debe hacer de forma automática, pero en mi caso en combinación con PDFmerger, una clase de contenedor para fpdf/fpdi, no.

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

    OriginalEl autor sunixzs

  3. 0

    Por CIERTO, si usted no puede garantizar que todos sus documentos A4 (este no es tu problema, pero era mi problema que me llevó a este P) también puede utilizar el tamaño de su plantilla para establecer el tamaño de su archivo generado las páginas de, por el paso de los tamaños como una matriz en la segunda arg:

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

    OriginalEl autor Jeremy Wadhams

Dejar respuesta

Please enter your comment!
Please enter your name here