我有一個在線日記/日記網站,用戶通過PHP和MYSQLi將他們的日記條目保存到我的數據庫。將MYSQL DB信息保存到用戶的PDF文件
我想添加一個功能,用戶可以通過單擊菜單鏈接將所有條目保存到PDF文件中。
這樣做的最好方法是什麼?我研究了DOMPDF,看起來很簡單,很有希望,但讓它工作已經花了幾天的時間,並且準備好了解其他解決方案。
也許有很多解決方案在那裏,我不想花3天時間去發現,這不適合我,所以我要求那些做過這樣的事情,對你有用的人。
UPDATE 我能夠得到dompdf的工作,這是相當簡單,工作很好。我遇到的問題是,如果它試圖呈現大量的HTML,它會崩潰。似乎是代碼存在的問題(谷歌共識)。例如。我的數據庫有603條記錄,每條記錄只有大約2段文字。對我來說,這不是我認爲LARGE,從MYSQL DB方面。
我不得不將最大超時設置增加到320秒,這樣我才能在不崩潰Apache的情況下讀取大約400條記錄。我會將LIMIT 400添加到我的SQL語句中,並且需要大約300秒並顯示PDF文件(方式太長以至於不合理)。如果我將限制增加到450,就會導致apache崩潰。而Apacher錯誤是與內存不良覆蓋等有關的。所以它對我來說非常好,直到400條記錄返回,並且在渲染階段,它會很慢並且在大約450條記錄處崩潰。
這似乎是這種情況,因爲我GOOGLE了,發現許多人有類似的問題。看起來這將是DOMPDF會知道的並且在他們的FAQ或修復中提及的東西,但他們沒有。所以儘管我仍然會喜歡PDF選項。我選擇僅允許用戶將數據保存爲文本文件。這是非常簡單的PHP編碼(5行),並將我的數據立即保存爲文件。
這裏是代碼的該數據保存到一個文本文件中的肉:
$myFile = "pdjentries.txt";
$fo = fopen($myFile, 'w') or die("can't open file");
$data = "ALL Your Entries from PersonalDreamJournal.com\r \n\r\n\r\n";
while ($row = $Recordset1->fetch_assoc())
{
$data .= date("m-d-Y", strtotime($row['date'])).' '.$row['flag']. "\r\n";
$data .= $row['text']. "\r";
$data .= "****************************************************************";
$data .= "\r\n\r\n\r\n\r\n\r\n"; ;
} //end while
$data .='----END OF ALL ENTRIES-----';
header('Content-type: application/txt');
header('Content-Disposition: attachment; filename="pdj-entries.txt"');
echo $data;
dompdf有什麼問題?它應該和創建一個HTML頁面一樣簡單,儘管一些HTML佈局可能會有問題。 – BrianS
@BrianS我可以得到dompdf的工作,這是相當簡單,工作很好。我遇到的問題是,如果它試圖呈現大量的HTML,它會崩潰。在我看來,代碼存儲問題。 –
這是一種可能性,取決於文檔的大小。也可能與文檔結構有關(例如,dompdf在高度超過頁面的表格單元格時遇到問題)。 – BrianS