2013-04-19 2 views
3

Я работаю над приложением, которое преобразует диаграммы HTML и SVG, сгенерированные с помощью d3.js, в PDF. Графики отображаются через вызовы AJAX после загрузки страницы.wkhtmltopdf - Преобразование SVG, созданного AJAX в PDF

Я работаю с wkhtmltopdf 0.9.6, который, кажется, отлично справляется с преобразованием статического HTML5 в PDF, но у меня возникают проблемы с преобразованием диаграмм SVG.

При визуализации простой многострочной линейной диаграммы большая часть области диаграммы не отображается. Даже после отключения анимации. Использование --redirect-delay не помогает, даже если установлено значение 8000.

Что интересно, так это то, что большинство частей диаграммы визуализируются, как легенда и ось. Только не содержание.

Кто-нибудь еще столкнулся с этой или подобной проблемой?

спасибо.

+0

Вы должны преобразовать чат в изображение в HTML, а затем преобразовать его с помощью html-to-pdf. –

+0

Возможно, вам придется немного подождать, пока диаграмма появится полностью. Попробуйте использовать 'window.setTimeout', чтобы добавить задержку перед рендерингом в PDF. Кроме того, вы можете взглянуть на [phantomjs] (http://phantomjs.org/) - я использовал его для преобразования графиков d3 (с анимацией) в PDF без проблем. –

ответ

0

добавить последнюю страницу этого сценария:

function sleep(milliSeconds) { 
    var startTime = new Date().getTime(); // get the current time 
    while (new Date().getTime() < startTime + milliSeconds); // hog cpu 
} 

sleep(5000); 

А: --redirect задержку -> 5000

Использование библиотеки d3.js не компресс других JS.

1

Если вы используете wkhtmltopdf в оболочке, в качестве альтернативы установки таймера в источнике, вы можете добавить эту опцию:

--javascript-delay 30000 

Например, полная команда может выглядеть следующим образом:

wkhtmltopdf --enable-javascript --debug-javascript --javascript-delay 30000 --images http://www.google.com google.pdf 
Смежные вопросы