Как лучше создать PDF-файл с помощью javascript и / или php?

У меня есть веб-приложение, и мне нужно распечатать данные в формате PDF. В бэкэнде я использую php, а во фронтенде - фреймворк javascript MVC (backbone.js).

Я не знаю, сгенерировать ли pdf только с помощью javascript (.. затем с использованием кеша данных) или с помощью ajax, который вызовет страницу php, которая будет генерировать pdf ... Какое лучшее решение?

Естественно, мне нужно иметь возможность печатать, сохранять и использовать таблицу стилей для PDF.

Спасибо.


person keepyourweb    schedule 08.11.2011    source источник
comment
Javascript: компьютер пользователя сделает всю работу; PHP: ваш собственный сервер выполняет эту работу, что может стать проблемой, если ~ 100 пользователей одновременно генерируют PDF-файлы.   -  person sascha    schedule 08.11.2011
comment
Соответствующие? stackoverflow.com/questions/742271/   -  person Marc B    schedule 08.11.2011


Ответы (6)


Я предпочитаю mPDF для создания PDF-файлов:

Вы можете сгенерировать PDF-файл с помощью PHP и получить его, выполнив вызов AJAX, это единственный хороший способ. Конечно, в mPDF вы можете стилизовать документ с помощью CSS.

Если вы хотите читать PDF-файлы с помощью javascript, прочтите: Open Source Javascript PDF Viewer

edit: сейчас 2016 год, и mPDF точно не рекомендуется, это устаревшее программное обеспечение. Есть гораздо лучшие, просто взгляните на GitHub:

PHP: https://github.com/search?l=PHP&o=desc&q=pdf&ref=searchresults&s=stars&type=Repositories&utf8=%E2%9C%93

JavaScript: https://github.com/search?utf8=%E2%9C%93&q=node+pdf&type=Repositories&ref=searchresults

person PiKey    schedule 08.11.2011
comment
Из вашего совета я нашел это: code.google.com/p/dompdf Может быть, лучше чем mpdf, попробуйте. - person keepyourweb; 08.11.2011

Проверьте DocRaptor, если вам нужно форматирование, чтобы быть точным. Это SaaS, построенный на базе Prince XML.

https://docraptor.com/

Вот пример использования PHP (вывод в электронную таблицу Excel вместо PDF)

https://docraptor.com/documentation#php_example

<?php

$api_key = "YOUR_API_KEY_HERE";
$url = "https://docraptor.com/docs?user_credentials=$api_key";

$document_content = "<table><tr><td>Cell</td></tr></table>";

$request = new HTTPRequest($url, HTTP_METH_POST);
$request->setPostFields(array('doc[document_content]' => $document_content, 
                              'doc[document_type]'    => 'xls',
                              'doc[name]'             => 'my_doc.xls',
                              'doc[test]'             => 'true'));
$request->send();

$file = fopen ("my_excel_doc.xls", "w"); 
fwrite($file, $request->getResponseBody()); 
fclose ($file);

?>
person CambridgeMike    schedule 08.11.2011

Вероятно, вы захотите использовать PHP для создания PDF-файла. Не уверен, есть ли какие-нибудь библиотеки javascript для такого рода вещей. Как сказал @ Sn0opy, это может стать проблемой сервера, хотя, если многие люди создают PDF-файлы (особенно если они большие).

Существует ряд построителей PDF для PHP. Я успешно использовал и html2ps, и tcpdf.

person Paul DelRe    schedule 08.11.2011

Есть несколько чистых js-решений, но они не очень надежны, работают не во всех браузерах. Вы можете посмотреть здесь:

http://andreasgal.com/2011/06/15/pdf-js/

вот их классный пример: http://mozilla.github.com/pdf.js/web/viewer.html

Есть еще этот проект: http://code.google.com/p/jspdf/

Прочтите об ограничениях, и если они слишком велики для вашего проекта, используйте PHP, как советуют люди.

Если вы знаете, что на клиенте установлен плагин flash / acrobat, вы можете использовать их на клиенте для создания PDF-файлов, подробности смотрите здесь: http://www.adobe.com/devnet/acrobat.html

person Roman Goyenko    schedule 08.11.2011
comment
Здорово! Мое приложение не будет мультиплатформенным, попробую - person keepyourweb; 08.11.2011

Мне очень нравится этот для php: html2pdf

person Aurelio De Rosa    schedule 08.11.2011

Вот запись руководства PHP для расширения PDF в PHP:

http://php.net/manual/en/book.pdf.php

Кроме того, в этой статье показано, что вам нужно сделать для создания PDF-файла на PHP:

http://www.sitepoint.com/generate-pdfs-php/

person ckost    schedule 08.11.2011