我是 stackoverflow 上的“新手”,但我会定期访问它以获取提示。
我从 jsPDF 自动表插件附带的 simple.html 文件中获取了一些代码,但它似乎没有从 php 生成的表中获取数据。
我正在尝试将数据转换为一种可以转换为漂亮的 pdf 报告的格式 - “带有所有修饰” - 即;分页符、每页标题、交替行颜色等。
我尝试将数据转换为 jsPDF 自动表可以使用的形式,但我出错了,因为它只是遍历数组并保留最后的记录并以 pdf 格式打印。代码如下所示。
<button onclick="generate()">Generate pdf</button>
<script src="/js//jspdf.debug.js"></script>
<script src="/js/jspdf.plugin.autotable.js"></script>
<?php
$link = mysqli_connect('localhost','user','password','database');
if(!$link)
{
echo 'Database Error: ' . mysqli_connect_error() ;
exit;
}
$results=array();
$sql_staff = "SELECT staff_id, staff_firstname, staff_lastname, staff_username, staff_chargerate, staff_lastlogin FROM tblstaff ORDER BY staff_lastname ASC, staff_firstname ASC ";
$result_staff = mysqli_query($link,$sql_staff);
while($row = mysqli_fetch_array($result_staff)){
$results[0] = $row['staff_id'];
$results[1] = $row['staff_firstname'] . " " . $row['staff_lastname'];
$results[2] = $row['staff_username'];
$results[3] = $row['staff_chargerate'];
$results[4] = $row['staff_lastlogin'];
echo json_encode($results);
$data = json_encode($results);
}
?>
<script>
function generate() {
var head = [["ID", "Staff Name", "Username", "Charge-rate", "Last Log-in"]];
var body = [
<?echo $data;?>
];
var doc = new jsPDF();
doc.autoTable({head: head, body: body});
doc.output("dataurlnewwindow");
}
</script>
我认为问题在于 $data = json_encode($results);
行,但我对 PHP 或 Javascript 的了解还不够,无法确定代码需要如何更改为生成完整的 PDF 报告。有人可以帮忙吗?
最佳答案
您的问题可能与覆盖 $results 数组中的值有关,这意味着您将得到一个项目而不是一组项目。您可能想要这样的东西:
$results = array();
while($row = mysqli_fetch_array($result_staff)){
$dataRow = array();
array_push($dataRow, $row['staff_id']);
array_push($dataRow, $row['staff_firstname'] . " " . $row['staff_lastname']);
// etc
array_push($results, $dataRow);
}
$data = json_encode($results);
关于javascript - 尝试将 php 表转换为 pdf 格式 - 使用 jsPDF-auto-table 将 php 查询结果(多条记录)转换为格式良好的 pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57576583/