2012-09-12 44 views
14

在这个广​​阔的空间中有没有人曾经有幸成功地在HTML上使用嵌入式SVG创建PDF?我一直在收到分段错误。wkhtmltopdf在嵌入SVG时失败

或者,有没有其他方法可以将SVG嵌入到HTML文件中,然后将其导出为PDF而不是wkhtmltopdf

+0

这听起来很像我最近用wkhtmltopdf使用SVG解决的问题。你试过了哪个版本?使用静态链接0.9版本,我有更多的运气来做到这一点。 – hsanders

+0

hsanders,我使用0.11.0 rc1 ..你是如何嵌入文件btw? – Jeebsion

+0

我们使用的SVG被highcharts嵌入(在飞行中生成) – hsanders

回答

0

对..我终于把它拉出来......所有需要的东西都是对原始eps文件的一点处理。我用illustrator打开了文件,选择了“平坦化透明度”..也许它所做的是平坦化文件的许多层或其他东西..然后另存为svg ..并在PDF中呈现得很好..

希望这可以帮助如果有人在那里会有我一样的问题。谢谢! :D

12

我有类似的问题。似乎JavaScript嵌入在SVG图像中可能导致分段错误。

我使用pygal Python模块生成SVG图。要用SVG图形成功从HTML生成PDF,我必须做几件事:

  1. 删除对javascript的引用。 (在pygal的情况下,将js =()键添加到图构造函数中)。
  2. 指定SVG标记图像的尺寸,像

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

    (在pygal使用explicit_size keywoard的情况下)

  3. 嵌入SVG图像分成IMG标签中编码的形式的base64,像

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

我使用的是第11版wkhtmltopdf。

+2

也可以尝试从xml文件中的任何标签去除“不透明度”属性;为我解决了它。 – okyanet

+0

将SVG文件扩展为SVG标签为我做了。不幸的是,将它放在'img'标签中什么都没做。 –

4

如果此修复程序不为别人打工,这里就是与chartist.js和wkhtmltopdf 0.12.2.1 Ubuntu下64(感谢Panokev)

的其他一切给你的加入JavaScript为我工作JS。

{ 

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

确定地宽度样式图表DIV,例如 - 风格= “宽度:950像素;”

+1

这是特定于chartist.js,它有什么作用?你能添加更多细节吗? – mehmet