Конвертер веб-страницы в PDF

Я ищу плагин/библиотеку JavaScript или PHP для преобразования красиво оформленного веб-сайта (с использованием CSS) в файл PDF.

Чтобы уточнить, мне нужно преобразовать вывод HTML-CSS на веб-странице в файл PDF. Я нашел несколько интересных плагинов, связанных с JavaScript, таких как jsPDF, но он только конвертирует HTML в PDF, игнорируя CSS. Это не то, чего я хочу.

Некоторые моменты:

  • Сгенерированный файл PDF должен иметь вывод как HTML, так и CSS.
  • Должно работать как на Mac, так и на Windows.
  • Должен работать в последних версиях Chrome и Firefox.

PS: элементы добавляются динамически с помощью JavaScript. Предположим сценарий, в котором есть много разделов с разными стилями. Пользователь может добавлять или удалять эти стилизованные разделы, а позже он / она может нажать кнопку «создать как PDF».

Не то, что вы хотите, но решение с наименьшими усилиями, если использовать меню печати браузера для «печати в PDF».
@Mawg Я не могу сказать, что пользователи должны выполнять эти шаги вручную. Итак, ищем решение через JS или Php.
Тогда почему не Google для js pdf screenshot? Например, это выглядит полезным ... stackoverflow.com/questions/5621907/… конечно, я только задел здесь и не проверил, что это PDF, а не PNG или JPEG, поэтому это комментарий, и не ответ. Но ведь вы же не изобретаете совершенно новое колесо?
На techumber.com/2015/04/… есть отличная статья, объясняющая, как это сделать .
Я бы подумал, что вы не можете сделать эту серверную часть, если вы не сгенерируете всю страницу, js, css и всю серверную часть (и даже в этом случае это будет ужасно сложно). Поскольку страница отображается на стороне клиента, ищите решение на стороне клиента.
Не бойтесь рассматривать двухшаговые решения. Существует множество примеров того, как сохранить веб-страницу в формате JPG или PNG. Вторым шагом будет создание PDF-документа, содержащего это изображение.

Ответы (3)

WeasyPrint

Бесплатное (под лицензией BSD) решение с открытым исходным кодом , помогающее веб-разработчикам создавать PDF-документы. Он превращает простые HTML-страницы (с CSS, SVG и т. д.) в формат PDF. Он направлен на поддержку веб-стандартов для печати.

html-pdf(npm)

Вы можете использовать пакет NodeJS html-pdfnpm (см. GitHub , установка через :) npm install -g html-pdf. Пример командной строки оболочки:

html-pdf http://example.com/ example.pdf

ФантомJS

Используйте PhantomJS с rasterize.js . Пример командной строки:

phantomjs rasterize.js http://example.com/

wkhtmltopdf

Используйте wkhtmltopdf(см. страницу GitHub ) инструмент командной строки, чтобы преобразовать веб-сайт в страницу PDF.

По словам PhantomJS , отличного безголового браузера, отлично подходящего для дельфинов разработки.

Поскольку PhantomJS использует WebKit, реальный механизм компоновки и рендеринга, он может делать скриншот веб-страницы.

и

Помимо формата PNG, PhantomJS поддерживает JPEG, GIF и PDF.

Это действительно просто в использовании. Вот пример кода для захвата в формате .PNG

var page = require('webpage').create();
page.open('http://github.com/', function() {
  page.render('github.png');
  phantom.exit();
});
Пробовал конвертировать softwarerecs.stackexchange.com/questions/35963/… но левый край потрошит а справа вопросов нет. У него есть интерактивные ссылки, так что ура!
Если это не работает, зачем говорить «ура»? я сбит с толку
потому что по крайней мере ссылки кликабельны. Многие другие продукты не являются.
На данный момент я не могу ничего порекомендовать, но если вы разместите свой код на stackoverflow.com , вам там помогут.

Этот вопрос задает Is it possible to capture or print what's displayed in an html canvas as an image or pdf?, и ответ @lepe, который, кажется, знает, о чем говорит, с 13,6 тыс. повторений, который имеет 16 голосов, говорит

Я бы использовал " wkhtmltopdf ". Просто отлично работает. Он использует движок webkit (используется в Chrome, Safari и т. д.) и очень прост в использовании:

wkhtmltopdf stackoverflow.com/questions/923885/this_question.pdf

Вот и все!

Попробуй

Рекомендацию поддерживает г-н JavaScript , который, похоже, знает, о чем говорит.