【问题标题】:How to converted SVG Files into PDF in JSPDF using javascript如何使用 javascript 在 JSPDF 中将 SVG 文件转换为 PDF
【发布时间】:2015-03-07 13:03:45
【问题描述】:

我很难使用 JSPDF 将 SVG 文件转换为 PDF。在这里,我在以下代码中工作。

 var doc = new jsPDF();
    var test = $.get('amChart.svg', function(svgText){
    //  console.log(svgText);
        var svgAsText = new XMLSerializer().serializeToString(svgText.documentElement);
        console.log(svgAsText);
        doc.addSVG(svgAsText, 20, 20, doc.internal.pageSize.width - 20*2)
//console.log(doc);
        // Save the PDF
  doc.output('datauri');
    });

我从这个SO Answer得到这个脚本。它的结果只有空白PDF。当我console.log(doc)在输出之前它会显示结果。但它不会导致PDF强>...

我也在这个 GITHUB URL 中使用 SVGELEMENTOPDF 函数,我也在这个代码中工作。

// I recommend to keep the svg visible as a preview
var svg = $('#container > svg').get(0);
// you should set the format dynamically, write [width, height] instead of 'a4'
var pdf = new jsPDF('p', 'pt', 'a4');
svgElementToPdf(svg, pdf, {
    scale: 72/96, // this is the ratio of px to pt units
    removeInvalid: true // this removes elements that could not be translated to pdf from the source svg
});
pdf.output('datauri'); // use output() to get the jsPDF buffer

但我不能实现它..请告诉我...如何在 JSPDF 中解决这个问题

【问题讨论】:

  • 如果您可以像使用 wkhtmltopdf 之类的工具一样访问该命令 - wkhtmltopdf.org 有很多文档可以帮助您进行操作。请记住,为了使其正确呈现,您需要在操作系统上安装字体包。
  • 由于生成PDF主要是服务器端工作,可能是它更好的废弃完整网页并使用phantomjs将整页转换为PDF

标签: javascript html svg pdf-generation jspdf


【解决方案1】:

对我有用的是:

  1. 使用svgCrowbar 序列化SVG

    var uri = svgCrowbar(eGraph);
    
  2. 使用画布将序列化的 SVG 写入 PNG dataURI

    // Create image object which will enable the graph to be saved (via canvas)
    var image = new Image();
    image.onload = function () {
        // Create canvas 
        var canvas = document.createElement('canvas');
        canvas.width = image.width;
        canvas.height = image.height;
        var context = canvas.getContext('2d');
        context.drawImage(image, 0, 0);
    
        // Save DataURI for later use
        window.sitescriptdata.dataURI[id] = canvas.toDataURL('image/png');
        window.sitescriptdata.numDataURIsLoaded++;        
    
        ...
    
    };
    image.src = uri;
    
  3. 使用 jsPDF.addImage() 将该 PNG 嵌入到 PDF 中

使用这种方法,我能够将多个动态生成的 SVG 嵌入到单个 PDF 中。由于 PDF 上的图像看起来失真,我对结果不是 100% 满意,但可能是我需要对 jsPDF 设置进行更多调整以使所有内容看起来清晰。

【讨论】:

  • 你是对的@Ddddan..但是当我创建 Image 时,SVG 标签将为 pdf 提供适当的质量,我使用低质量 PDF 给出结果。所以只有我需要使用 jsPDF 将 SVG 值转换为 PDF跨度>
猜你喜欢
  • 1970-01-01
  • 2021-10-06
  • 2014-10-03
  • 2017-02-16
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
  • 2014-11-16
  • 2017-05-05
相关资源
最近更新 更多