使用jspdf将Svg呈现为Pdf
我在使用jspdf将svg元素呈现为pdf时遇到问题。我正在使用插件来实现这一点 下面是我的代码使用jspdf将Svg呈现为Pdf,svg,jspdf,Svg,Jspdf,我在使用jspdf将svg元素呈现为pdf时遇到问题。我正在使用插件来实现这一点 下面是我的代码 // I recommend to keep the svg visible as a preview var tmp = document.getElementById("chartContainer"); var svgDoc = tmp.getElementsByTagName("svg")[0]; var pdf = new jsPDF('p', 'pt', 'a4'); svgElemen
// I recommend to keep the svg visible as a preview
var tmp = document.getElementById("chartContainer");
var svgDoc = tmp.getElementsByTagName("svg")[0];
var pdf = new jsPDF('p', 'pt', 'a4');
svgElementToPdf(svgDoc, pdf, {
scale: 72 / 96, // this is the ratio of px to pt units
removeInvalid: false // this removes elements that could not be translated to pdf from the source svg
});
pdf.output('datauri'); // use output() to get the jsPDF buffer
它正在生成空白pdf。请帮助您可以使用canvg来实现这一点 步骤1:从DOM获取“SVG”标记代码
var svg = document.getElementById('svg-container').innerHTML;
if (svg)
svg = svg.replace(/\r?\n|\r/g, '').trim();
步骤2:
使用canvg从svg创建画布
var canvas = document.createElement('canvas');
canvg(canvas, svg);
步骤3:
使用.toDataURL()从画布创建图像
在这里查看演示
Canvg Repo:我已经尝试了这两种方法,并在内部使用。
这两个对我来说都不起作用,在pdf中生成的图像要么位置不正确,要么显示不正确
我最后做了以下工作,效果非常好:
将SVG转换为不带任何库的PNG,请参见
只需使用普通的
svgToPdf只支持g、line、rect、椭圆、圆、文本元素和一些属性。只是作为一个简单的演示来播放。@Priyesh Tiwari:我遇到了同样的问题svg到pdf的转换,你是如何解决你的问题的?你的JSFIDLE在Firefox上不工作(我用FF47窗口尝试过)当我点击“Get pdf”@Purushoth时什么也没有发生,下面是错误ReferenceError:canvg没有定义
。在您的jsfiddle:不存在中,似乎没有正确设置链接。你能更新一下吗?提前谢谢!外部资源似乎已被删除/移动。但是代码将与正确的外部引用一起工作。查看此处了解更多详细信息。它现在已修复,@Basj。谢谢你的指点。谢谢,它现在工作了!另一个问题,我至少会贡献500分:)如果你打开并写$$x^2+1$$
它将使用“MathJax”渲染成数学。然后,用通常的JS PDF库将其转换为PDF似乎是不可能的。你有什么想法吗?在Safari中没有为我工作,只是挂起,没有错误。你的答案是最简单、轻松和实用的。非常感谢。
var imgData = canvas.toDataURL('image/png');
// Generate PDF
var doc = new jsPDF('p', 'pt', 'a4');
doc.addImage(imgData, 'PNG', 40, 40, 75, 75);
doc.save('test.pdf');