这是我的billingpdf.php,如果我点击提交按钮,它就会继续生成一个空白页面。当我试图删除并在billingpdf.php上放一些基本代码它工作的pdf已经创建,它显示我输入的消息,但当我尝试使用提交按钮时,似乎它不再生成pdf。谁是FPDF的专家?
<?php
session_start();
if (!isset($_SESSION["uemail"])){
header('Location: login.php'); }
$uid = $_SESSION['UserID'];
?>
<?php
if(isset($_POST['submit']))
{
require("fpdf.php");
require ("../util/dbConnection.php");
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(18, 10, '', 0);
$pdf->Cell(150, 10, 'Testing"', 0);
$pdf->SetFont('Arial', '', 9);
$pdf->Cell(50, 10, 'Date: '.date('d-m-Y').'', 0);
$pdf->Ln(15);
$pdf->SetFont('Arial', 'B', 11);
$pdf->Cell(70, 8, '', 0);
$pdf->Cell(100, 8, 'Billing Assessment', 0);
$pdf->Ln(23);
$pdf->SetFont('Arial', 'B', 8);
$pdf->Cell(20, 8, 'Expense ID', 0);
$pdf->Cell(30, 8, 'Request Booking', 0);
$pdf->Cell(20, 8, 'Request Date', 0);
$pdf->Cell(20, 8, 'Due date', 0);
$pdf->Cell(25, 8, 'Amount', 0);
$pdf->Ln(8);
$pdf->SetFont('Arial', '', 8);
$sql = "SELECT ExpenseID, reqbookID, RequestBooking, requestDate, amount,
DATE_ADD(requestDate,INTERVAL 30 DAY) as duedate
FROM tblbilling NATURAL JOIN tblbookreq
WHERE UserID = $uid ORDER BY requestDate";
$result = $conn->query($sql);
while ($row = $result->fetch_assoc()){
$pdf->Cell(20, 8, $row['ExpenseID"'], 0);
$pdf->Cell(30, 8, $row['RequestBooking'], 0);
$pdf->Cell(20, 8, $row['requestDate'], 0);
$pdf->Cell(20, 8, $row['duedate'], 0);
$pdf->Cell(25, 8, $row['amount'], 0);
}
$pdf->Output();
}
?>
这是我的billing.php
<h2>Services and Charges</h2>
<div class="content" style="border:1px dotted black; padding:1%; border-radius:1em; ">
<select style="margin-bottom:1%;">
<option> --- </option>
<option>Weekly</option>
<option>Monthly</option>
</select>
<select style="margin-bottom:1%;">
<option> --- </option>
<option>Laundry</option>
<option>Cafe</option>
<option>Maintenance</option>
</select>
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for Expenses...">
<table id="myTable" cellpadding=10>
<thead>
<tr>
<th>Expense ID</th>
<th>Expense Name</th>
<th>Date Requested</th>
<th>Date Due</th>
<th>Amount</th>
</tr>
</thead>
<input type="submit" value="Print"style="float:right;" ></input>
<tbody>
</form>
<?php
include "../util/dbConnection.php";
$sql = "SELECT ExpenseID, reqbookID, RequestBooking, requestDate, amount, DATE_ADD(requestDate,INTERVAL 30 DAY) as duedate FROM tblbilling NATURAL JOIN tblbookreq WHERE UserID = $uid ORDER BY requestDate";
$result = $conn->query($sql);
while ($row = $result->fetch_assoc()){
echo "<tr>
<td>".$row["ExpenseID"]."</td>
<td>".$row["RequestBooking"]."</td>
<td>".$row["requestDate"]."</td>
<td>".$row["duedate"]."</td>
<td>".$row["amount"]."</td>
</tr>";
}
?>
</tbody>
</table>
</div>
答案 0 :(得分:1)
试试这个, 我有同样的问题,使用FPDF库生成动态Pdf,但这是通过$ pdf-&gt; SetAutoPageBreak(false);
解决的 $pdf->AddPage('L','A4');
$pdf->SetFont('Arial','',8);
$pdf->SetHeight(4);
$pdf->SetAutoPageBreak(false);
答案 1 :(得分:0)
我有几次相同的经历,我通过以下方法解决了这个问题:
在运行PHP脚本的文件夹中查看 error_log 文件。通常,在其末尾会出现一条错误消息,该错误消息与您收到错误的脚本有关。
就我而言,我收到此消息:
[2019年11月29日13:33:44 UTC] PHP致命错误:未捕获异常:FPDF错误:已经输出了某些数据,无法发送PDF文件(输出从/ home / xxxxxx / public_html /开始sla / connectdb.php:19)在/home/xxxxxx/public_html/sla/fpdf/fpdf.php:271
它告诉我的经典做法是,在FPDF生成报告的任何部分之前先发送HTML语句。
它也说它是从第19行的connectdb.php
脚本开始的。connectdb.php是一个小的脚本,由主脚本中的'include'语句引入,并以“ <? php”,并以“?>”结尾。
但是,除此之外,还有两个或三个回车符(CR),这导致在执行主脚本时将空白行输出为HTML,从而显示了完全空白的页面。我删除了所有CR,然后报告神奇地起作用了!只需确保脚本中没有任何可能导致输出空行的位置即可。
顺便说一句,错误日志在识别错误500消息的原因时也非常有用,该消息没有其他信息可以帮助您。