我目前正在处理发票脚本,该脚本目前从MySql中提取信息,然后将该信息转换为PDF并使用PHPmailer通过电子邮件发送。
我坚持的部分是如何将其转换为PDF。我希望能够将orderid发布到下一页,然后转换为PDF。
我已在下面附上我的脚本以获得一些帮助。
<?php
session_start();
$username = $_SESSION['username'];
$con = mysqli_connect('***', '***', '***', '***');
if (!isset($con)) {
die("Connection to Aurora System failed.");
}
$orderid = $_POST['order_id'];
?>
<!doctype html>
<html>
<body class="body page-orderview clearfix">
<div class="element"></div>
<p class="text text-1">SMKD Field Force</p>
<a href="front.php"><img class="image" src="images/smkd_logo.png"></a>
<p class="text text-2">Welcome</p>
<p class="text text-3">Order <?php echo "$orderid"; ?>
<table>
<tr>
<th>Product Title</th>
<th>Nicotine Strength</th>
<th>Quantity</th>
<th>Price (inc. VAT)</th>
</tr>
<?php
$query = "SELECT `product`, `variant`, `quantity` FROM orders_detail WHERE order_id = '$orderid'";
$result = mysqli_query($con, $query);
$quantitytotal = 0;
$quantityline = - 0;
while ($row = mysqli_fetch_assoc($result)) {
$product = $row['product'];
$stuff = $row['quantity'];
$variant = $row['variant'];
$linequantity = $stuff;
$quantitytotal += $stuff;
$pricequery = "SELECT product_price FROM products WHERE product_name = '$product'";
$priceresult = mysqli_query($con, $pricequery);
$pricetag = 0;
$priceline = 0;
while ($rowprice = mysqli_fetch_assoc($priceresult)) {
$price = $rowprice['product_price'];
$pricetag += $price;
$priceline = $price;
}
$linetotal = $priceline * $linequantity;
echo '<tr><td>' . $product .' </td> ' . '<td>' . $variant . '</td>' . ' <td> ' . $linequantity . '</td>' . '<td> £' . $linetotal . '</td> </tr>';
}
$total = $pricetag * $quantitytotal;
?>
<tr><td>Total Ex Vat:</td><td> Total Inc Vat:</td></tr>
<tr><td><?php echo "£" . ($total / 1.2);?></td>
<td><?php echo "£" . $total; ?></td></tr>
</table>
</p><br>
<form method="post" action"pdfinvoice.php">
<input type="hidden" value="<?php echo $orderid; ?>" name="orderid">
</form>
Submit button goes here
</body>
</html>
我不反对将整个页面转换为PDF,但据我所知,这对FPDF来说是不可能的。
问候&amp;非常感谢!
答案 0 :(得分:0)
只要你不会在样式和html元素方面过于复杂,我建议你看看https://github.com/dompdf/dompdf,它是一个非常强大的HTML到PDF转换器库,是支持相当多的HTML。
只是表格等不会在pdf内部工作,所以不要包括那些(它们可能会也可能不会呈现,取决于确切的html标签。)
答案 1 :(得分:0)
我实际上刚刚在几周前完成了同样的任务。我的页面不显示pdf。结账完成后,页面显示成功消息并将pdf通过电子邮件发送给用户。
下载并在您的php文件中包含FPDF库。它只需要创建FPDF对象,添加它并输出它。
require "Resources/PDF/fpdf.php";
$pdf = new FPDF();
$pdf->SetAutoPageBreak(true, 0);
$pdf->SetLeftMargin(8);
$pdf->AddPage();
$pdf->SetFont('Arial','B',20);
$pdf->SetTextColor(255);
$pdf->SetFillColor(0,153,204);
$pdf->Cell(194,10,'MyCompany Inc.','LRT',0,'L', true);
$pdf->Ln();
$pdf->SetFont('Arial','I',12);
$pdf->Cell(97,10,'Invoice #: '.$id.''.$cnt.'','LB',0,'L', true);
$pdf->Cell(97,10, "Date: ".date("d-m-Y")." ",'RB',0,'R', true);
$pdf->Ln();
$pdf->SetTextColor(0,153,204);
$pdf->SetFont('Arial','B',14);
$pdf->Cell(40,10,'Ship to:',0,4);
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','I',12);
$pdf->Cell(40,5, $_POST['shippingName'],0,5);
$pdf->Cell(40,5, $COMP,0,6);
$pdf->Cell(40,5, $EMAIL,0,6);
$pdf->Cell(40,5, $_POST['shippingPhoneNumber'],0,7);
$pdf->Cell(40,5, $_POST['shippingAddress'],0,8);
$pdf->Cell(40,5, $_POST['shippingPostalCode'],0,9);
$pdf->Cell(40,5, $_POST['shippingCity'],0,10);
$pdf->Cell(40,5, $_POST['shippingProvince'],0,11);
$pdf->Cell(40,5, $_POST['shippingCountry'],0,12);
$pdf->Output(); //should display the pdf to the page
输出( “文件路径”);可以将pdf保存到您可以通过电子邮件发送文件的目录。 上面将创建一个标题和列表通过$ _POST变量传入的用户信息。
FPDF文档有时会有所帮助。 http://www.fpdf.org/