Я использую google charts
для создания линейных диаграмм. а затем передать html, сгенерированный wkhtmltopdf
версии 0.12.5 (с исправленным qt) в windows, которая является утилитой оболочки для преобразования html страниц в PDF.
wkhtmltopdf использует старую версию webkit
(механизм браузера) для выполнения кода javascript, поэтому он рассматривает Promise
как простое object
в дополнение к , а не , поддерживающему другие функции ES6.
Теперь перейдем к вопросу.
Код JS [main.js]:
1. google.load("visualization", "1", { packages: ["corechart"] });
2. google.setOnLoadCallback(function () {
3. drawChart();
4. });
5. function drawChart() {
6. var data = google.visualization.arrayToDataTable(
7. [
8. // some data
9. ]
10. );
11. var options = {
12 // some options
13. };
14. var chart = new google.visualization.LineChart(
15. document.getElementById("node_chart_div1") // a div element in html
16. );
17. chart.draw(data, options);
18. }
HTML код:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Line Chart</title>
<script
src="https://code.jquery.com/jquery-3.5.0.js"
integrity="sha256-r/AaFHrszJtwpe+tHyNi/XCfMxYpbsRg2Uqn0x3s2zc="
crossorigin="anonymous"
></script>
<script
type="text/javascript"
src="https://www.gstatic.com/charts/loader.js"
></script>
</head>
<body>
<div id="test"></div>
<div id="node_chart_div1" class="cellchart"></div>
</body>
<script src="main.js"></script>
</html>
Выполнение приведенного выше кода отображает диаграмму в браузере.
Но при запуске его через wkhtmltopdf
выдает пустой PDF.
после проверки я обнаружил, что google.setOnLoadCallback()
в строке номер 2 в main.js
возвращает объект Promise
, который хорошо интерпретируется механизмом браузера.
Но при запуске его через wkhtmltopdf
он трактуется как обычный object
и не выполняет никакого кода, написанного внутри его обратного вызова (который в данном случае является drawChart
функцией).
Мой запрос:
Любой js код-обертка для преобразования объекта, возвращенного в wkhtmltopdf
, в стандартный JS Promise
объект.
ИЛИ
Существуют ли какие-либо разные подход / обходной путь, чтобы исправить это.
команда, используемая для преобразования html страницы в PDF
wkhtmltopdf https://www.example.com/index.html output.pdf
найти живую демонстрацию вышеупомянутого кода на эту ссылку.
Любая помощь / предложение приветствуется.