Экспорт html в PDF с помощью JavaScript

Я хочу экспортировать HTML в PDF с помощью JavaScript, я видел такие библиотеки, как jsPDF и pdfMake, но они очень ограничены. Например, ни с одним из них я не могу экспортировать элементы HTML, такие как <hr>, с jsPDF стиль очень ограничен, я видел этот вопрос, но ответ у меня не работает, с pdfMake я не могу скачать pdf, просто с chrome.


person István    schedule 08.07.2015    source источник
comment
Лучшее, что я видел для этого, - это использовать процесс на стороне сервера для запуска PhantomJS, печати в PDF и ответа сгенерированным файлом.   -  person Phil    schedule 08.07.2015
comment
В моем проекте я не могу использовать сервер, я должен делать это на стороне клиента...   -  person István    schedule 08.07.2015
comment
Это проблема, с которой я борюсь в настоящее время, и у меня есть личная заинтересованность в ее решении. Я вижу, что любое решение на стороне сервера должно использовать признанный механизм рендеринга, с чем-то вроде PhantomJS неясно, какой механизм рендеринга он использует, поэтому результаты могут быть не такими, как хотелось бы, особенно с новыми элементами HTML5. Другая проблема — автоматизация из отдельного процесса, Java-приложения. Его легко распечатать в PDF из браузера, если у вас есть драйвер принтера. Я предполагаю, что у нас обоих есть потребности в автоматизации.   -  person glend    schedule 08.07.2015


Ответы (1)


Если вы можете получить HTML из URL-адреса, вы можете проверить этот ответ, который я написал, объясняет, как это сделать.

Пример:

https://dhtml2pdf.herokuapp.com/api.php?url=https://www.github.com&result_type=show

Очень просто добавить якорь в ваш HTML, который показывает PDF или загружает его в ваш HTML.

Этот якорь покажет PDF, преобразованный из страницы https://www.github.com:

<a href="https://dhtml2pdf.herokuapp.com/api.php?url=https://www.github.com&result_type=show" target="_blank">Show PDF</a>

И этот скачает его:

<a href="https://dhtml2pdf.herokuapp.com/api.php?url=https://www.github.com&result_type=download&file_name=my_pdf">Download PDF</a>

Если вы хотите попробовать это с JavaScript, вы можете создать кнопку HTML и по событию клика загрузить PDF. Пример:

HTML:

<button type="button" id="download-pdf-button">Download the PDF</button>

JavaScript:

document.getElementById("download-pdf-button").addEventListener("click", function() {
    var link = document.createElement('a');
    link.href = 'https://dhtml2pdf.herokuapp.com/api.php?url=https://www.github.com&result_type=download';
    link.download = 'file.pdf';
    link.dispatchEvent(new MouseEvent('click'));
});

Просмотрите проект на Github.

Надеюсь, поможет.

person David López    schedule 04.02.2018
comment
Проект больше не работает. Не могли бы вы обновить его? - person John Max; 31.10.2019
comment
Проект снова прекратил работу. Пожалуйста, есть ли способ разветвить его, чтобы избежать непредсказуемых прерываний в будущем? - person John Max; 28.05.2020
comment
Привет @JohnMax, я ответил вам в вопросе, который вы создали на Github: github.com/Dellos7 /dhtml2pdf/issues/7 , там я объясню вам, как вы можете разветвить его, чтобы настроить свой собственный экземпляр Heroku с приложением. - person David López; 29.05.2020