6

我想制作一个包含大量数据的 PDF 文件,例如 12 个月的数据。每个月包含来自 MySQL 表的 500 行。我尝试过使用 FPDF,但它需要太多时间,这是不可接受的。如果有其他更好的 PHP 库或类可以轻松实现而不会使系统忙碌?

如果有什么脚本需要一个月一个接一个地把12个月的数据一个接一个地写入PDF,最后创建PDF文件?

4

3 回答 3

2

我经常使用(通常)相同的方法从 PHP 创建非常大的 PDF。首先,我创建文档的网页版本并将其输出到文件。然后我通过 wkhtmltopdf 运行文件。这种方法比其他任何方法都更成功。HTML 应该可以快速生成,并且 wkhtmltopdf 出奇的快速和高效。此外,您还可以使用 CSS3 技术进行精细格式化。

对于非常大的 PDF,我还生成了较小的 PDF,然后将它们与 pdfmeld 合并。这也使您可以选择添加书签。

于 2013-09-11T15:39:24.780 回答
1
 // 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();
?>
于 2013-06-20T10:41:09.953 回答
1

构建 PDF 总是很长。如果你有大量的资源,它会非常非常长,这是你无法避免的。我可以看到一种对您的用户更柔和的方法:

向他们发送 html 渲染,然后使用 Ajax 使 pdf 生成异步。所以你可以显示一个状态栏。并告知您的用户您正在执行他们的需求。

然后可以通过三种方式在技术上执行生成:

  • 使用 fpdf 并对处置进行硬编码
  • 使用 dom2pdf 或此类库使您的 html 呈现 pdf 文件
  • 创建一个乳胶字符串,然后使用proc_open要求乳胶编译器构建一个 pdf 文件。它是一个非常快速且可靠的工具,但它需要您拥有专用服务器而不是共享主机。
于 2012-12-24T09:50:10.163 回答