gpt4 book ai didi

php - FPDF 生成单独的页面而不是一大页

转载 作者:行者123 更新时间:2023-11-29 09:29:18 25 4
gpt4 key购买 nike

我正在尝试为数组中的每封电子邮件在 fpdf 上生成多页,但它不断生成包含每封电子邮件数据的长页面,并将该长页面发送给每个人。更新这是我的整个代码...第一部分生成 PDF,第二部分通过电子邮件发送给它们。

<?php
while (ob_get_level())
ob_end_clean();
header("Content-Encoding: None", true);

//Requires here
require('../fpdf/fpdf.php');
require_once '../connect.php';

$db = new PDO('mysql:host=localhost;dbname=mcle','user','pass');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// CREATE AND SAVE THE PDF DOCUMENT
class pdf extends FPDF
{

function header()
{

//$this->image('img/lsnc_logo.jpg',2,2);
$this->SetTextColor(0,0,255);
$this->SetFont('Helvetica','B',16);
$this->SetFillColor('230,230,230');
$this->SetXY(35,15);
$this->Cell(140,10,'Certificate Of Attendance for California
MCLE',1,0,'C', TRUE);
$this->Ln(20);
}
function pdf_body($db)
{
$emails = $_POST['email'];
foreach ($emails as $email)
{
$stmt = $db->query("SELECT *
FROM sessions JOIN attendance
ON sessions.event_id = attendance.event_id JOIN staff
ON attendance.staff_bar_no = staff.staff_bar_no
WHERE staff.email = '$email'");
for($i = 0; $i < count($emails); $i++)
{

while($data = $stmt->fetch(PDO::FETCH_OBJ))
{

$this->Ln(10);
$this->SetX(20);
$this->SetFont('Arial','B',11);
$this->Cell(45,6,'Provider Name:',0,0,'R',0);

$this->SetFont('Times','',11);
$this->Cell(150,6,'Legal Services Of Northern California',0,0,'L');
$this->Ln();

$this->SetX(20);
$this->SetFont('Arial','B',11);
$this->Cell(45,6,'Provider Number:',0,0,'R',0);
$this->SetFont('Times','',11);
$this->Cell(150,6,'2221',0,0,'L');
$this->Ln();

$this->SetX(20);
$this->SetFont('Arial','B',11);
$this->Cell(45,6,'Title Of Activity:',0,0,'R',0);

$this->SetFont('Times','',11);
$this->Cell(150,6,$data->pro_title,0,0,'L');
$this->Ln();

$this->SetX(20);
$this->SetFont('Arial','B',11);
$this->Cell(45,6,'Date Of Activity:',0,0,'R',0);
$this->SetFont('Times','',11);
$this->Cell(65,6,$data->date,0,0,'L');
$this->Ln();

$this->SetX(20);
$this->SetFont('Arial','B',11);
$this->Cell(45,6,'Time of Activity:',0,0,'R',0);
$this->SetFont('Times','',11);
$this->Cell(65,6,$data->time,0,0,'L');
$this->Ln();

$this->SetX(20);
$this->SetFont('Arial','B',11);
$this->Cell(45,6,'Location (City, State):',0,0,'R',0);
$this->SetFont('Times','',11);
$this->Cell(150,6,$data->location,0,0,'L');
$this->Ln();


$this->Ln(10);
$this->SetFont('Arial','B',12);
$this->Cell(65,6,'Eligible California MCLE Credit','',0);
$this->Ln(10);

$this->SetFont('Times','',12);
$this->Cell(109,6,'Total California MCLE Credit Hours for the above
activity are:',0,0,'R',0);
$this->SetFont('Times','B',12);
$this->Cell(4,6,$data->length,0,0,'R');
$this->SetFont('Times','',12);
$this->Cell(80,6,', including the following sub-field
credits:',0,0,'L',0);
$this->Ln(5);

$this->SetFont('Arial','',12);
$this->Cell(45,6,'* Legal Ethics: ',0,0,'R',0);
$this->SetFont('Arial','B',12);
$this->Cell(45,6,$data->length,0,0,'L');
$this->Ln();


$this->SetFont('Arial','',12);
$this->Cell(57,6,'* Elimination of Bias: ',0,0,'R',0);
$this->SetFont('Arial','B',12);
$this->Cell(45,6,$data->bias,0,0,'L');
$this->Ln();

$this->SetFont('Arial','',12);
$this->Cell(174,6,'* Substance Abuse / Mental or Physical Issues Affecting
Professional Competence: ',0,0,'R',0);
$this->SetFont('Arial','B',12);
$this->Cell(10,6,$data->sampiapc,0,0,'L');
$this->SetFont('Arial','',12);


$this->Ln(15);
$this->SetFont('Times','B',11);
$this->MultiCell(174,6,'THE BOTTOM PORTION OF THIS FORM IS TO BE COMPLETED
BY THE ATTORNEY AFTER PARTICIPATION IN THE ABOVE-REFERENCED ACTIVITY');

$this->Ln(12);
// Split Here
$this->SetFont('Times','I',12);
$this->SetX(20);
$this->MultiCell(170, 6, '' . str_repeat('By signing below, I certify that
I participated in all or some* of the activity described above and am
therefore entitled to the following MCLE credit hours -', 1),'LRT');

$this->SetFont('Times','',12);
$this->SetX(20);
$this->Cell(170,6,'Total California MCLE Credit Hours ______, including
the following sub-field credits:','LR');

$this->Ln();
$this->SetX(20);
$this->SetFont('Times','',12);
$this->Cell(170,6,' Legal Ethics:______','LR');
$this->Ln();

$this->SetX(20);
$this->SetFont('Times','',12);
$this->Cell(170,6,' Elimination of Bias:______','LR');
$this->Ln();

$this->SetX(20);
$this->SetFont('Times','',12);
$this->Cell(170,6,' Substance Abuse / Mental or Physical Issues
Affecting Professional Competence:____ ','LR');
$this->Ln();


$this->SetFont('Times','I',12);
$this->SetX(20);
$this->Cell(170,6,' ','LR');
$this->Ln();
$this->SetX(20);
$this->MultiCell(170,6,'*Partial participation hours must be pro-rated.
You may not claim credit for sub-fields unless the Provider is granting
credit in those areas and you participated in those portions of the
activity ','LR');

$this->SetX(20);
$this->Cell(170,6,' ','LR');
$this->Ln();

//
$this->SetX(20);
$this->SetFont('Times','',12);
$this->Cell(33,6,'Print Your Name:',0,'L');
$this->SetFont('Arial','B',12);
$this->Cell(80,6,$data->fname." ".$data->lname ,0,0,'L');

$this->SetFont('Arial','',12);
$this->Cell(28,6,'State Bar No: ',0,'R');
$this->SetFont('Arial','B',12);

$this->Cell(29,6,$data->staff_bar_no,0,0,'L');

$this->SetX(20);
$this->Cell(170,10,' ','LR');
//
$this->Ln();
$this->SetX(20);
$this->SetFont('Times','',12);
$this->Cell(170,6,'Your Signature:_____________________________ ','LR');

$this->SetX(20);
$this->Cell(170,6,' ','LR');
$this->Ln();
$this->SetX(20);
$this->Cell(170,6,' ','LRB');
$this->Ln(19);


$this->SetFont('Times','B',10);
$this->SetX(20);
$this->Cell(25,4,'Reminders: ',0,0,'L',0);
$this->Ln();
$this->SetX(20);
$this->SetFont('Times','',10);
$this->MultiCell(170,4,'1- Keep this record of attendance for 4 years. In
the event that you are audited by the State Bar, you may be requested to
submit this record of attendance. Send this to the State Bar only if you
are audited');
$this->SetX(20);
$this->MultiCell(170,4,'2- You must personally sign-in on the Official
Record of Attendance for California MCLE or complete a contemporaneous
registered login online for web events maintained by this provider in
order to qualify for California MCLE credits.');

}

}
}

}

function footer()
{

}
////////////////////////// Make sure we don't detete this below
}
//////////////////////////
$pdf = new pdf();
$pdf->AddPage('P','A4',0);
$pdf->pdf_body($db);

//$pdf->Output();
//Mailing Parts here

$emails = $_POST['email']; //This is mainly to declare $email
foreach ($emails as $email)
{
//
}

// email stuff (change data below)
$to = $email;
$from = "noreply@domain";
$subject = "Your LSNC MCLE Attendance Certificate";
$message = "<p>Hello,</p> <p>Here is your LSNC MCLE Attendance
Certificate. Please Confirm . Thank you !</p>";

// a random hash will be necessary to send mixed content
$separator = md5(time());

// carriage return type (we use a PHP end of line constant)
$eol = PHP_EOL;

// attachment name
$filename = "MCLE.pdf";

// encode data (puts attachment in proper format)
$pdfdoc = $pdf->Output('', 'S');
$attachment = chunk_split(base64_encode($pdfdoc));

// main header
$headers = "From: ".$from.$eol;
$headers .= "MIME-Version: 1.0".$eol;
$headers .= "Content-Type: multipart/mixed; boundary=\"".$separator."\"";

// no more headers after this, we start the body! //


$body = "--".$separator.$eol;
$body .= "Content-Transfer-Encoding: 7bit".$eol.$eol;
//$body .= "This is a MIME encoded message.".$eol;

// message
$body .= "--".$separator.$eol;
$body .= "Content-Type: text/html; charset=\"iso-8859-1\"".$eol;
$body .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
$body .= $message.$eol;

// attachment
$body .= "--".$separator.$eol;
$body .= "Content-Type: application/octet-stream;
name=\"".$filename."\"".$eol;
$body .= "Content-Transfer-Encoding: base64".$eol;
$body .= "Content-Disposition: attachment".$eol.$eol;
$body .= $attachment.$eol;
$body .= "--".$separator."--";
mail($to, $subject, $body, $headers) ;
unset($pdf); // THIS will now ONLY send the first email with other
//generated pages...

?>
<script>
alert('Emails Successfully Sent !');
history.back();
</script>
<?php
?>

我希望找到解决方案,我知道我在第一个循环中丢失了,我无法循环遍历数组的元素(我认为)。一旦我做对了,电子邮件部分就会正常工作,因为我已经在个人记录上测试了它......非常感谢@Dave。

最佳答案

您有一个 foreach 遍历 $_POST['multi1'] 和一个类似的 foreach 遍历 $_POST[ 'email'] 因此不清楚哪些变量实际上来自您的表单(未显示)。

对于这个答案,我假设 $_POST['multi1'] 是要使用的正确变量。如果不是,请根据需要调整代码。您会注意到,PDF 是为每个电子邮件地址构建的、发送的,然后 PDF 对象在继续到下一个电子邮件地址之前被销毁。

// this stuff only needs to be set once
$subject = 'Your LSNC MCLE Attendance Certificate';
$message = '<p>Hello,</p><p>Here is your LSNC MCLE Attendance Certificate. Please Confirm . Thank you!</p>';

// a random hash will be necessary to send mixed content
$separator = md5(time());

// carriage return type (we use a PHP end of line constant)
$eol = PHP_EOL;

// attachment name
$filename = "MCLE.pdf";

if (isset($_POST['submit'])) {

foreach($_POST['multi1'] as $email) {

$to = $email;

$stmt = $db->query("SELECT * FROM sessions
JOIN attendance ON sessions.event_id = attendance.event_id
JOIN staff ON attendance.staff_bar_no = staff.staff_bar_no
WHERE staff.email = '$email'");

while ($data = $stmt->fetch(PDO::FETCH_OBJ)) {
//building pdf here
}

$pdf = new pdf();
$pdf->AddPage('P','A4',0);
$pdf->pdf_body($db);

// encode data (puts attachment in proper format)

$pdfdoc = $pdf->Output("", "S");
$attachment = chunk_split(base64_encode($pdfdoc));

// main header
$headers = 'From: noreply@emailaddress.domain' . $eol;
$headers .= '"MIME-Version: 1.0' . $eol;
$headers .= 'Content-Type: multipart/mixed; boundary="' . $separator .'"';

// no more headers after this, we start the body! //

$body = '--' . $separator . $eol;
$body .= 'Content-Transfer-Encoding: 7bit' . $eol . $eol;
//$body .= "This is a MIME encoded message.".$eol;

// message
$body .= '--' . $separator . $eol;
$body .= 'Content-Type: text/html; charset="iso-8859-1"' . $eol;
$body .= 'Content-Transfer-Encoding: 8bit' . $eol . $eol;
$body .= $message . $eol;

// attachment
$body .= '--' . $separator . $eol;
$body .= 'Content-Type: application/octet-stream; name="MCLE.pdf"' . $eol;
$body .= 'Content-Transfer-Encoding: base64' . $eol;
$body .= 'Content-Disposition: attachment' . $eol . $eol;
$body .= $attachment . $eol;
$body .= '--' . $separator . '--';
mail($to, $subject, $body, $headers) ;

unset($pdf); // destroy PDF object

} // end of foreach through $_POST['multi1']

} // end of isset($_POST['submit'])

关于php - FPDF 生成单独的页面而不是一大页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59042540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com