首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PDF中嵌入SVG (使用JS将SVG导出为PDF )

在PDF中嵌入SVG (使用JS将SVG导出为PDF )
EN

Stack Overflow用户
提问于 2011-05-06 23:08:54
回答 6查看 68.8K关注 0票数 36

起始点:我没有一个服务器可以提供静态文件以外的任何东西。我的<body>中有一个SVG元素(动态创建),我想将其导出为矢量格式,最好是PDF或SVG。

我开始考虑使用已经存在的lib jsPDFdownloadify。它工作得很好。不幸的是,这不支持SVG,只支持文本。

我已经了解到PDF格式可以嵌入SVG图像,并且从Acrobat Reader5(以及ImageViewer插件)开始就启用了it seems。但它不起作用。我尝试了3种不同的PDF阅读器,但都没有成功。

这是否意味着PDF已经放弃了对SVG嵌入的支持?我在这上面什么都没找到。

我有两个问题;这个问题能解决吗?如果是,在PDF中嵌入SVG的规范是什么?有了这些信息,我就可以自己在jsPDF中构建这种支持。

浏览器支持需求是Safari、Chrome和Firefox。支持SVG的版本。

EN

Stack Overflow用户

发布于 2021-04-08 19:03:57

使用pdfkitsvg-to-pdfkitblob-stream的最小示例,将SVG元素下载为PDF。

index.html.中导入

代码语言:javascript
运行
复制
<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>

  1. 运行此函数,其中svg是SVG DOM元素或SVG字符串。

代码语言:javascript
运行
复制
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();
}
票数 0
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5913338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档