2013-09-16 1 views
0

У меня есть онлайн-дневник/дневник, где пользователи сохраняют записи своего дневника в моей БД через PHP и MYSQLi.сохранить информацию о MYSQL DB в файл PDF для пользователей

Я хочу добавить функцию, в которой пользователь может сохранить все свои записи в файле PDF, щелкнув ссылку меню.

Каков наилучший способ для этого? Я изучил DOMPDF, и это казалось простым и многообещающим, но заставить его работать заняло несколько дней, и я готов смотреть на другие решения.

Может быть, много решений, и я не хочу тратить 3 дня, чтобы узнать, это не для меня, поэтому я прошу тех, кто сделал что-то подобное, что сработало для вас.

ОБНОВЛЕНИЕ У меня есть возможность работать с dompdf, и это довольно легко и работает хорошо. Проблема, с которой я столкнулся, заключается в том, что она вылетает, если она пытается отобразить большое количество HTML. Кажется, проблемы памяти с кодом (Google консенсус). Например. моя БД имеет 603 записи, каждая запись имеет только 2 абзаца текста. Для меня это не то, что я бы рассматривал LARGE, с аспектом базы данных MYSQL.

Мне нужно было увеличить максимальные значения таймаута до 320 секунд, чтобы я мог прочитать его до 400 записей без сбоев Apache. Я бы добавил LIMIT 400 в мой SQL-оператор, и это займет около 300 секунд и отобразит PDF-файл (слишком долго, чтобы быть разумным). Если бы я увеличил LIMIT, чтобы сказать 450, это приведет к сбою апачей. и ошибка 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

Вы можете отправить информацию клиенту, а затем визуализировать в формате PDF на стороне клиента с jsPDF. Он очень прост в использовании.