生成空白页FPDF

时间:2017-03-22 18:07:31

标签: php mysql fpdf

  

这是我的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>

2 个答案:

答案 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消息的原因时也非常有用,该消息没有其他信息可以帮助您。