我想創建一個包含12個月數據等巨大數據的PDF文件。 每月從MySQL表中包含500行。我已經嘗試過使用FPDF,但花費太多的時間是不可接受的。如果還有其他更好的PHP庫或類可以輕鬆完成並且不會使系統繁忙?使用PHP創建從MySQL獲取大量數據的PDF文件
如果有一個腳本需要一個月的時間將一個月的數據寫入一個月,然後逐個寫入PDF並最終創建PDF文件?
我想創建一個包含12個月數據等巨大數據的PDF文件。 每月從MySQL表中包含500行。我已經嘗試過使用FPDF,但花費太多的時間是不可接受的。如果還有其他更好的PHP庫或類可以輕鬆完成並且不會使系統繁忙?使用PHP創建從MySQL獲取大量數據的PDF文件
如果有一個腳本需要一個月的時間將一個月的數據寫入一個月,然後逐個寫入PDF並最終創建PDF文件?
構建PDF總是很長。如果你有大量的資源,它將會非常長,你無法避免。 我可以看到一種方式對你的用戶來說更柔和一些:
發送給他們一個html呈現器,然後用Ajax使pdf生成異步。所以你可以顯示一個狀態欄。並通知您的用戶您正在執行他們的需求。
然後生成可technicaly通過三種方式進行乳膠字符串,然後使用proc_open
要求乳膠編譯器構建PDF文件。這是一個非常快速和可靠的工具,但它需要你有一個專用服務器而不是共享主機。
// 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();
?>
我照例從PHP使用創建非常大的PDF文件(通常)相同的方法。首先,我創建文檔的網頁版本並將其輸出到文件。然後我通過wkhtmltopdf運行該文件。這種方法比其他任何方式都取得了更大的成功。 HTML應該很快生成,而wkhtmltopdf的速度和效率令人驚訝。另外,您可以使用CSS3技術進行精細的格式化。
對於非常大的PDF文件,我也生成了較小的PDF文件,然後將它們與pdfmeld合併。這也使您可以選擇添加書籤。
感謝您寶貴的建議。如果可能,請提供演示鏈接? – Nantu
你想要的東西像HTML到PDF嗎? –
舊數據(即前幾個月)會改變嗎?如果沒有,那麼你可以保留'previous-months.pdf'的文件副本,並重新生成當前月份。然後,在向用戶提供服務時,合併這兩個PDF文件 - 這可能會更快。 – halfer
或者,當用戶希望下載長的PDF報告時,將需求排列在表中,並使用cron-job生成加電子郵件發送給他們。 – halfer