[英]inserting 2 images into a pdf on each page
我有一个PHP脚本,当他们通过贝宝(Paypal)完成付款时,会通过电子邮件将2张图片发送给他人。 现在这些图像中的1个通过imagettftext函数添加了文本。
现在,我要做的是,不是通过电子邮件发送2张图像,而是希望将2张图像添加到其各自页面上的PDF文件中,然后将该PDF文件通过电子邮件发送给他们。
这是我发送图片的电子邮件的代码:
$sql = mysql_query("select * from `bookings` where `id`='$order_id'");
while ($row = mysql_fetch_assoc($sql))
{
foreach ($row as $k => $v)
$$k = $v;
$img = imagecreatefrompng("ticket-blank.png");
if (!empty($lead_home_phone)) $phone = "Home Phone: $lead_home_phone\n";
else if (!empty($lead_work_phone)) $phone = "Work Phone: $lead_work_phone\n";
else if (!empty($lead_mobile_phone)) $phone = "Mobile Phone: $lead_mobile_phone\n";
$dets = "Full name: $lead_title $lead_name\n";
$dets .= "Address 1: $lead_address_1\n";
$dets .= "Postcode: $lead_postcode\n";
$dets .= "City/Town: $lead_city\n";
$dets .= "State/Province: $lead_state\n";
$dets .= "Country: $lead_country\n";
if (!empty($phone)) $dets .= "$phone\n";
$dets .= "Email Address: $lead_email";
imagettftext($img, 8, 0, 50, 115, imagecolorallocate($img, 0, 0, 0), 'arial.ttf', "BOOKING FOR ".date('F j, Y', $the_date)."\nORDER ID # $order_id");
imagettftext($img, 8, 0, 270, 115, imagecolorallocate($img, 0, 0, 0), 'arial.ttf', "$num_adults ADULTS $num_children CHILDREN\n$ticket_type");
imagettftext($img, 8, 0, 50, 165, imagecolorallocate($img, 0, 0, 0), 'arial.ttf', $dets);
imagettftext($img, 8, 0, 415, 165, imagecolorallocate($img, 0, 0, 0), 'arial.ttf', "Total: CZK $pay_total");
$img_name = time().'.png';
imagepng($img, "tickets/$img_name");
$files = array();
$files []= "tickets/$img_name";
$files []= "tickets/brochure.jpg";
// email fields: to, from, subject, and so on
$from = "info@mysite.com";
$subject ="Your Ticket";
$message = "Booking Complete!";
$headers = "From: $from";
// boundary
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
// headers for attachment
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
// multipart boundary
$message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
$message .= "--{$mime_boundary}\n";
// preparing attachments
for ($x=0; $x < count($files); $x++)
{
$file = fopen($files[$x],"rb");
$data = fread($file,filesize($files[$x]));
fclose($file);
$data = chunk_split(base64_encode($data));
$message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$files[$x]\"\n" .
"Content-Disposition: attachment;\n" . " filename=\"$files[$x]\"\n" .
"Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
$message .= "--{$mime_boundary}\n";
}
// mail the emails with attachments
mail('me@myemail.com', $subject, $message, $headers);
}
如何将2张图片添加到PDF文件中,然后通过电子邮件发送?
看看像fpdf这样的php pdf生成库。 我以前使用过fpdf,发现它非常简单直接。 这是一个如何在他们的网站上使用它的示例:
<?php
require('fpdf.php');
class PDF extends FPDF
{
// Page header
function Header()
{
// Logo
$this->Image('logo.png',10,6,30);
// Arial bold 15
$this->SetFont('Arial','B',15);
// Move to the right
$this->Cell(80);
// Title
$this->Cell(30,10,'Title',1,0,'C');
// Line break
$this->Ln(20);
}
// Page footer
function Footer()
{
// Position at 1.5 cm from bottom
$this->SetY(-15);
// Arial italic 8
$this->SetFont('Arial','I',8);
// Page number
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}
// Instanciation of inherited class
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
for($i=1;$i<=40;$i++)
$pdf->Cell(0,10,'Printing line number '.$i,0,1);
$pdf->Output();
?>
如您所见,您基本上只需要创建一个pdf文件,添加一个页面,然后将图像,文本,表格等添加到该页面,然后您就可以输出pdf了。 在您的情况下,您希望将其输出到一些临时文件,通过电子邮件发送该文件,然后删除该文件以节省服务器空间(或在几天后删除它们)。
希望这会有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.