起始点:我没有一个服务器可以提供静态文件以外的任何东西。我的<body>中有一个SVG元素(动态创建),我想将其导出为矢量格式,最好是PDF或SVG。
我开始考虑使用已经存在的lib jsPDF和downloadify。它工作得很好。不幸的是,这不支持SVG,只支持文本。
我已经了解到PDF格式可以嵌入SVG图像,并且从Acrobat Reader5(以及ImageViewer插件)开始就启用了it seems。但它不起作用。我尝试了3种不同的PDF阅读器,但都没有成功。
这是否意味着PDF已经放弃了对SVG嵌入的支持?我在这上面什么都没找到。
我有两个问题;这个问题能解决吗?如果是,在PDF中嵌入SVG的规范是什么?有了这些信息,我就可以自己在jsPDF中构建这种支持。
浏览器支持需求是Safari、Chrome和Firefox。支持SVG的版本。
发布于 2021-04-08 19:03:57
使用pdfkit、svg-to-pdfkit和blob-stream的最小示例,将SVG元素下载为PDF。
在index.html.中导入
<script src="https://cdn.jsdelivr.net/npm/pdfkit@0.10.0/js/pdfkit.standalone.js"></script>
<script src="https://bundle.run/blob-stream@0.1.3"></script>
<script src="https://cdn.jsdelivr.net/npm/svg-to-pdfkit@0.1.8/source.js"></script>svg是SVG DOM元素或SVG字符串。function downloadPDF(svg, outFileName) {
let doc = new PDFDocument({compress: false});
SVGtoPDF(doc, svg, 0, 0);
let stream = doc.pipe(blobStream());
stream.on('finish', () => {
let blob = stream.toBlob('application/pdf');
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = outFileName + ".pdf";
link.click();
});
doc.end();
}https://stackoverflow.com/questions/5913338
复制相似问题