【问题标题】:Generating Blank Page FPDF生成空白页 FPDF
【发布时间】:2017-03-22 18:07:30
【问题描述】:

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

【问题讨论】:

    标签: php mysql fpdf


    【解决方案1】:

    试试这个, 我在使用 FPDF 库生成动态 Pdf 时遇到了同样的问题,但是 $pdf->SetAutoPageBreak(false);

    解决了这个问题
            $pdf->AddPage('L','A4');
            $pdf->SetFont('Arial','',8);
            $pdf->SetHeight(4);
            $pdf->SetAutoPageBreak(false);
    

    【讨论】:

      【解决方案2】:

      我也有过几次相同的经历,我通过以下方式解决了:

      查看运行 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”语句引入,以“”结尾。

      但是,除此之外,还有两个或三个回车符 (CR),这会导致在执行主脚本时将空行输出为 HTML,因此显示的是完全空白的页面。我删除了所有的 CR,报告神奇地起作用了!只需确保脚本中没有可能导致输出空行的地方。

      顺便说一句,错误日志在确定错误 500 消息的原因方面也非常有用,这些消息没有其他信息可以帮助您。

      【讨论】:

        猜你喜欢
        • 2017-03-24
        • 1970-01-01
        • 1970-01-01
        • 2014-07-24
        • 2019-06-30
        • 2016-06-22
        • 2012-01-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多