将MYSQL数据库信息保存为用户的PDF文件

时间:2013-09-16 17:14:01

标签: php mysql pdf-generation dompdf

我有一个在线日记/日记网站,用户通过PHP和MYSQLi将日记条目保存到我的数据库中。

我想添加一个功能,用户可以通过点击菜单链接将所有条目保存为PDF文件。

最好的方法是什么?我已经研究过DOMPDF,它似乎很容易和有希望,但让它工作已经花了几天时间,我已经准备好了解其他解决方案。

也许很多解决方案,我不想花3天时间才发现,这不适合我,所以我要求那些做过类似事情的人,对你有用的东西。

更新 我能够让dompdf工作,这很容易,而且效果很好。我遇到的问题是,如果它尝试呈现大量的HTML,它会崩溃。似乎是代码的内存问题(Google共识)。例如。我的DB有603条记录,每条记录只有2段文字。对我来说,从MYSQL数据库方面来看,这不是我会考虑的大问题。

我不得不将最大超时设置增加到320秒,这样我就可以在不崩溃Apache的情况下读取大约400条记录。我会将LIMIT 400添加到我的SQL语句中,它将花费大约300秒并显示PDF文件(方式太长而不合理)。如果我将LIMIT增加到450,那就会崩溃apache。和Apacher错误是与坏内存覆盖等有关的事情。所以它工作得很好,对我来说,直到400个记录返回,并且在渲染阶段,它会很慢并且在大约450条记录时崩溃。

这似乎就是这种情况,因为我用谷歌搜索并发现许多人有类似的问题。似乎这将是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;

1 个答案:

答案 0 :(得分:1)

您可以将信息发送到客户端,然后使用jsPDF呈现pdf客户端。这很容易使用。