Ошибка wkhtmltopdf при встраивании SVG

Кому-нибудь в этом огромном пространстве когда-либо удавалось успешно создать PDF со встроенным SVG на HTML? Я все время получаю ошибку сегментации.

Или, возможно, есть ли другой способ встраивания SVG в файл HTML, а затем экспортировать его в PDF вместо wkhtmltopdf?

Ответ 1

У меня была аналогичная проблема. Похоже, что javascript, встроенный в изображение SVG, может вызвать ошибку сегментации.

Я создавал SVG-графики, используя pygal Python module. Для успешного создания PDF из HTML с помощью графиков SVG мне пришлось сделать несколько вещей:

  • Удалить ссылку на javascript. (В случае pygal добавьте ключ js =() в конструктор графа).
  • Укажите размер изображения в теге svg, например

    <svg ... width="300" height="200">
    

    (В случае использования pygal используйте keywoard kernel_size)

  • Вставить SVG-изображение в тег img в кодировке base64, например

    <img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0...">
    

Я использовал 11-ю версию wkhtmltopdf.

Ответ 2

Если это исправление не работает для других, вот что сработало для меня с chartist.js и wkhtmltopdf 0.12.2.1 под Ubuntu 64. (Кредит Панокеву)

Добавьте это в свой javascript перед всеми другими JS.

{

Function.prototype.bind = Function.prototype.bind || function (thisp) {
    var fn = this;
    return function () {
        return fn.apply(thisp, arguments);
    };
};

Определить стиль ширины для диаграммы div, например - style = "width: 950px;"

Ответ 3

Правильно.. Мне удалось наконец оттянуть его... все необходимое было немного обработано в исходном файле eps. Я открыл файл с помощью иллюстратора и решил "сгладить прозрачность". Может быть, это то, что он сделал, чтобы сгладить множество слоев файла или что-то в этом роде... затем сохраните как svg.. и он отлично отобразится в PDF файле.

Надеюсь, это поможет, если у кого-то будет такая же проблема, как у меня. Спасибо!: D