下面是generatepdf.php:
<?php
include('db.php');
require_once 'vendor/autoload.php';
ob_start();
?>
<?php
$student_id = 0;
if (isset($_GET['id'])) {
$student_id = $_GET['id'];
}
// var_dump($student_id);
$fetchUser = $conn->query("SELECT * from student where id = $student_id")->fetchAll(PDO::FETCH_ASSOC);
$subjects = $conn->query("SELECT * FROM subjects WHERE student_id = $student_id")->fetchAll(PDO::FETCH_ASSOC);
//
// var_dump($fetchUser);
// Student Info
$name = $fetchUser[0]['name'];
$rollno = $fetchUser[0]['rollno'];
$image = $fetchUser[0]['image'];
$center = $fetchUser[0]['center'];
$division = $fetchUser[0]['division'];
$academic_year = $fetchUser[0]['academic_year'];
$class = $fetchUser[0]['class'];
$session = $fetchUser[0]['session1'] . ' - ' . $fetchUser[0]['session2'];
$father = $fetchUser[0]['father'];
$stream = $fetchUser[0]['stream'];
$totalmarks = $fetchUser[0]['totalmarks'];;
$obtmarks = $fetchUser[0]['obtmarks'];
$marksinwords = $fetchUser[0]['marksinwords'];
$percentage = ($fetchUser[0]['obtmarks'] / $fetchUser[0]['totalmarks']) * 100;
$percentage = number_format($percentage, 2);
$todaysDate = gmdate("M d, Y", strtotime('now'));
$html = '
<html>
<head>
<style>
body {font-family: sans-serif;
font-size: 10pt;
}
p { margin: 0pt; }
table.items {
border: 0.1mm solid #000000;
}
td { vertical-align: top; }
.items td {
border-left: 0.1mm solid #000000;
border-right: 0.1mm solid #000000;
}
table thead td { background-color: #EEEEEE;
text-align: center;
border: 0.1mm solid #000000;
font-variant: small-caps;
}
.items td.blanktotal {
background-color: #EEEEEE;
border: 0.1mm solid #000000;
background-color: #FFFFFF;
border: 0mm none #000000;
border-top: 0.1mm solid #000000;
border-right: 0.1mm solid #000000;
}
.items td.totals {
text-align: right;
border: 0.1mm solid #000000;
}
.items td.cost {
text-align: "." center;
}
</style>
</head>
<body>
<!--mpdf
<htmlpageheader name="myheader">
<table width="100%"><tr>
<td width="80%" style="color:#000; "><span style="font-weight: bold; font-size: 14pt;">Online Marksheet For TELEGANA UNIVERSITY</span></td>
// <td width="20%" style="text-align: right;">Date: ' . $todaysDate . '<br />
</tr></table>
</htmlpageheader>
<htmlpagefooter name="myfooter">
<div style="border-top: 1px solid #000000; font-size: 9pt; text-align: center; padding-top: 3mm; ">
Page {PAGENO} of {nb}
</div>
</htmlpagefooter>
<sethtmlpageheader name="myheader" value="on" show-this-page="1" />
<sethtmlpagefooter name="myfooter" value="on" />
mpdf-->
<img style="margin-top: -50px;padding: 15px; border: 2px solid #000; height: 100px;margin: auto !important;width: 100px;background-size: contain;background-repeat: no-repeat;background-position: center;margin-left: 80px !important;" src="images/' . $image . '" class="img-thumbnail">
<table width="100%" style="font-family: serif;" cellpadding="10"><tr>
<td width="55%"><br /><br /><span style="font-weight: bold;">Name:</span> ' . $name . '<br /><span style="font-weight: bold;">Father:</span> ' . $father . '<br /><span style="font-weight: bold;">Center:</span> ' . $center . '<br /><span style="font-weight: bold;">Division:</span> ' . $division . '<br /><span style="font-weight: bold;">Class:</span> ' . $class . '</td>
<td width="5%"> </td>
<td width="40%"><br /><br /><span style="font-weight: bold;">Hall Ticket / Roll No:</span> ' . $rollno . '<br /><span style="font-weight: bold;">Session:</span> ' . $session . '<br /><span style="font-weight: bold;">Stream:</span> ' . $stream . '<br /><span style="font-weight: bold;">Year of Passing:</span> ' . $academic_year . '</td>
</tr></table>
<br />
<table class="items" width="100%" style="font-size: 9pt; border-collapse: collapse; " cellpadding="8">
<thead>
<tr>
<td width="15%">Sub Code</td>
<td width="40%">Subject Name</td>
<td width="10%">Theory</td>
<td width="15%">Practicals</td>
<td width="20%">Marks Secured</td>
</tr>
</thead>
<tbody>
<!-- ITEMS HERE -->
';
foreach ($subjects as $subject) {
$html .= '<tr>';
$html .= '<td align="center">' . $subject['subcode'] . '</td>';
$html .= '<td align="center">' . $subject['subject_name'] . '</td>';
$html .= '<td>' . $subject['total_marks'] . '</td>';
$html .= '<td class="cost">' . $subject['obtained_marks'] . '</td>';
$html .= '<td class="cost">' . $subject['marksinwords'] . '</td>';
$html .= '</tr>';
}
$html .= '
<tr style="border-top: 2px solid #000;">
<td style="border-top: 2px solid #000;" align="center" >Percentage: ' . $percentage . '</td>
<td style="border-top: 2px solid #000;" align="center"></td>
<td style="border-top: 2px solid #000;">' . $totalmarks . '</td>
<td style="border-top: 2px solid #000;" class="cost">' . $obtmarks . '</td>
<td style="border-top: 2px solid #000;" class="cost">' . $marksinwords . '</td>
</tr>
</tbody>
</table>
</body>
</html>
';
require_once 'bootstrap.php';
$mpdf = new MpdfMpdf([
'margin_left' => 10,
'margin_right' => 10,
'margin_top' => 30,
'margin_bottom' => 25,
'margin_header' => 10,
'margin_footer' => 10
]);
$mpdf->SetTitle("Online Marksheet");
$mpdf->SetDisplayMode('fullpage');
$mpdf->WriteHTML($html);
$mpdf->Output();
这对我来说在XAMPP中工作得很好,并且每次加载页面时都会下载PDF。
但是当我在cPanel的文件管理器上托管这些完全相同的文件时,它只显示给我一个空白页。没有错误。我能做什么?
我已经检查了我的XAMPP (v8.0)和PHP(v7.3)的PHP版本,但这似乎不是问题(除非你们中的一个人认为它是?)
排除:
注释掉$mpdf->WriteHTML($html);
$mpdf->Output();
首先是echo $html;
,看看是否都是正确的。
为什么?确保你的html没有格式错误。
如果已经发送了error messages
或任何php headers
, PDF将被损坏并在渲染时显示错误。
output();
前检查事项
- 所有路径包括/要求路径仍然是正确的,或者你上传它们不同于你的XAMPP?
- 为什么ob_start(),但我没有看到你在代码中的
ob_get_contents()
和ob_end_clean()
?实际上,它可以在不输出的情况下保持缓冲。服务器可能比您的XAMPP更严格,并给您警告。 - 所有错误检查后,路径更正,如果是不正确的-你的用户输入没有被santised这是一个大的NO NO。
关于您的it's only showing me a blank page. No errors. What can I do?
声明。出现严重错误,需要检查日志
在本例中,likely "require"引导路径不正确。
如果错误日志中没有错误,那么您的ob_start()
可能会禁止您输出任何内容。