У меня есть онлайн-дневник/дневник, где пользователи сохраняют записи своего дневника в моей БД через 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;
Какие проблемы у вас были с dompdf? Это должно быть так же просто, как создание HTML-страницы, хотя некоторые макеты HTML могут быть проблематичными. – BrianS
@BrianS Я могу получить работу dompdf, и это довольно легко и работает хорошо. Проблема, с которой я столкнулся, заключается в том, что она вылетает, если она пытается отобразить большое количество HTML. Мне кажется, проблемы с памятью с кодом. –
Это возможность, в зависимости от размера документа. Также может быть связано с структурой документа (например, dompdf имеет проблемы с ячейками таблицы с высотой, превышающей высоту страницы). – BrianS