2013-09-16 35 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客户端。它非常易于使用。

相关问题