【问题标题】:FPDF multiple pdf with PHP data - Different header and footerFPDF 带有 PHP 数据的多个 pdf - 不同的页眉和页脚
【发布时间】:2015-02-10 19:17:44
【问题描述】:

我正在尝试创建 1、2 或 3 个 PDF,具体取决于来自 DB 的数据 - 使用 FPDF 和 PHP。 如果我必须创建 1 个 PDF,那没关系。 但是如果我需要创建 2 个或 3 个,我会遇到问题,因为无法重新声明某些类。

下面是测试必须生成多少 PDF 的 PHP 代码:

include "gera-certificado.php"; //creates the first PDF - ok

if($workshop_manha != ''){
    include "gera-certificado-wm.php"; // if this var is not empty, then create the second PDF -> problem
}

if($workshop_tarde != ''){
    include "gera-certificado-wt.php"; // if this var is not empty, then create the third PDF -> problem
}

在 FPDF 代码下方 - 包含 2 个图像(页眉和页脚)和仅 2 或 3 行名称为 var 的文本。在第一个 PDF 中生成 Ok 但在第二个和第三个中返回错误,因为重新声明了某些 FPDF 类。

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<?php
define('FPDF_FONTPATH','fpdf/font/');
 require('fpdf/fpdf.php');
 class PDF extends FPDF {
 function Header() {
 $this->SetFont("Arial","I",10);
 //escreve no pdf largura,altura,conteudo,borda,quebra de linha,alinhamento,preenchimento fundo

 //altura
 $this->SetY(0);
 $this->Image("img/topo-certificado.jpg",0,0,297,100); //Image($arquivo);

 }
 function Footer(){
 $this->SetY(-15);
 $this->Image("img/rodape-certificado.jpg",0,140,297,70); //Image($arquivo);
 }
 }

 $pdf=new PDF('L','mm','A4');
 $pdf->Open();
 $pdf->AddPage();
 $pdf->SetMargins(0,0,0);
 $pdf->SetAutoPageBreak(false);
 $pdf->SetAuthor('Dr. Ricardo Wainer');
 $pdf->SetTitle('Certificado');

 $pdf->SetFont('Arial','',13);
 $pdf->SetTextColor(27,67,161);     // Definir cor do texto
 $pdf->SetDrawColor(0,0,0); // Definir cor do traço?
 $pdf->SetXY(30,106);
 $pdf->MultiCell(236,8,"Certificamos que ".strtoupper($nome)." participou do I Congresso Wainer de Psicoterapias Cognitivas, I Congresso Sul-Brasileiro de Terapias Integradas e de 3ª Onda e I Simpósio Brasileiro de Terapia do Esquema, realizado no dias 27, 28 e 29 de agosto de 2015, com carga horária de 22 horas.",0,'C');

 $pdf->Output("../../certificados/".$id.".pdf");

 ?>

好的。就是这样!第二个和第三个 FPDF 代码与上面的代码相同,只是图像目录不同,因为 PDF 的页眉和页脚不同。 提前感谢您的帮助和时间:)

【问题讨论】:

    标签: php pdf fpdf multiple-processes


    【解决方案1】:

    如果我理解得很好,问题是您要重新声明 FPDF 类。为避免这种情况,您可以在尝试重新声明它之前验证该类是否已经存在,使用 class_exists php 函数。

    试试这个:

    if (!class_exists('FPDF')) {
        require('fpdf/fpdf.php');
    }
    

    【讨论】:

    • 如果我这样做返回错误:Cannot redeclare class PDF in C:\wamp\www\congress\gera-certificado-wm.php on line 21 我还评论了第 3、4 行, 5 和 19 但显示错误“无法在第 14 行重新声明页眉”,但我需要在第二个和第三个 PDF 中插入另一个页眉和页脚。及时,第一个 PDF 被正常创建。感谢您的帮助!
    【解决方案2】:

    我通过以下方式解决了这个问题:

    在包含 gera-certificado.php(生成第一个证书的文件)而不是包含下一个文件 (gera-certificado-wm.php) 之后,我使用 get 重定向以利用下一页上的变量。

    所以在生成第一个证书后,流程如下:

            if($workshop_manha != '' AND $workshop_tarde != ''){
                echo "<META HTTP-EQUIV='REFRESH' CONTENT=\"0; URL='gera-certificado-wm.php?id=".$id."&oc=".$oc."&nome=".$nome."&email=".$email."&wm=".$workshop_manha."&wt=".$workshop_tarde."'\">";
            }
            if($workshop_manha != '' AND $workshop_tarde == ''){
                echo "<META HTTP-EQUIV='REFRESH' CONTENT=\"0; URL='gera-certificado-wm.php?id=".$id."&oc=".$oc."&nome=".$nome."&email=".$email."&wm=".$workshop_manha."'\">";
            }
            if($workshop_manha == '' AND $workshop_tarde != ''){
                echo "<META HTTP-EQUIV='REFRESH' CONTENT=\"0; URL='gera-certificado-wt.php?id=".$id."&oc=".$oc."&nome=".$nome."&email=".$email."&wm=".$workshop_manha."&wt=".$workshop_tarde."'\">";
            }
    
            if($workshop_manha == '' AND $workshop_tarde == '' AND $oc != '0'){
                echo "<META HTTP-EQUIV='REFRESH' CONTENT=\"0; URL='../../action/envia-certificado-congresso.php?id=".$id."&nome=".$nome."&email=".$email."'\">";
            }
    

    恢复: 如果该人参加了上午和下午的课程,我会重定向到上午的证书,然后再转到下午的证书,最后我会发送所有证书。

    如果该人仅在上午或下午注册,我会重定向到特定证书,然后发送所有证书。

    如果此人在上午或下午没有报名任何课程,我只发送参与证书。

    也许代码不是那么漂亮,但在当时它工作并解决了需求。我把决议留在这里。也许它会帮助别人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多