我想制作一个包含大量数据的 PDF 文件,例如 12 个月的数据。每个月包含来自 MySQL 表的 500 行。我尝试过使用 FPDF,但它需要太多时间,这是不可接受的。如果有其他更好的 PHP 库或类可以轻松实现而不会使系统忙碌?
如果有什么脚本需要一个月一个接一个地把12个月的数据一个接一个地写入PDF,最后创建PDF文件?
我想制作一个包含大量数据的 PDF 文件,例如 12 个月的数据。每个月包含来自 MySQL 表的 500 行。我尝试过使用 FPDF,但它需要太多时间,这是不可接受的。如果有其他更好的 PHP 库或类可以轻松实现而不会使系统忙碌?
如果有什么脚本需要一个月一个接一个地把12个月的数据一个接一个地写入PDF,最后创建PDF文件?
我经常使用(通常)相同的方法从 PHP 创建非常大的 PDF。首先,我创建文档的网页版本并将其输出到文件。然后我通过 wkhtmltopdf 运行文件。这种方法比其他任何方法都更成功。HTML 应该可以快速生成,并且 wkhtmltopdf 出奇的快速和高效。此外,您还可以使用 CSS3 技术进行精细格式化。
对于非常大的 PDF,我还生成了较小的 PDF,然后将它们与 pdfmeld 合并。这也使您可以选择添加书签。
// you can used fpdf like this.
<?php
require('fpdf.php');
class PDF extends FPDF
{
// Page header
function Header()
{
// Logo
$this->Image('logo.png',10,6,30);
// Arial bold 15
$this->SetFont('Arial','B',15);
// Move to the right
$this->Cell(80);
// Title
$this->Cell(30,10,'Title',1,0,'C');
// Line break
$this->Ln(20);
}
// Page footer
function Footer()
{
// Position at 1.5 cm from bottom
$this->SetY(-15);
// Arial italic 8
$this->SetFont('Arial','I',8);
// Page number
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}
// Instanciation of inherited class
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
for($i=1;$i<=40;$i++)
$pdf->Cell(0,10,'Printing line number '.$i,0,1);
$pdf->Output();
?>
构建 PDF 总是很长。如果你有大量的资源,它会非常非常长,这是你无法避免的。我可以看到一种对您的用户更柔和的方法:
向他们发送 html 渲染,然后使用 Ajax 使 pdf 生成异步。所以你可以显示一个状态栏。并告知您的用户您正在执行他们的需求。
然后可以通过三种方式在技术上执行生成:
proc_open
要求乳胶编译器构建一个 pdf 文件。它是一个非常快速且可靠的工具,但它需要您拥有专用服务器而不是共享主机。