2013-09-16 36 views
0

我有一個在線日記/日記網站,用戶通過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; 
+0

dompdf有什麼問題?它應該和創建一個HTML頁面一樣簡單,儘管一些HTML佈局可能會有問題。 – BrianS

+0

@BrianS我可以得到dompdf的工作,這是相當簡單,工作很好。我遇到的問題是,如果它試圖呈現大量的HTML,它會崩潰。在我看來,代碼存儲問題。 –

+0

這是一種可能性,取決於文檔的大小。也可能與文檔結構有關(例如,dompdf在高度超過頁面的表格單元格時遇到問題)。 – BrianS

回答

1

您可以將信息發送到客戶端,然後用jsPDF顯示PDF客戶端。它非常易於使用。

相關問題