typescript - 从 DOM 或 Object 元素下载 svg 文件
问题描述
我想从 DOM 下载/保存 .svg。我已将我的 svg 文件嵌入到 Object 元素中,并动态更新 SVG 中的一些元素,并在我的 Angular 7 应用程序中对其进行样式设置。
<object id="svg1" data="assets/10026_019.svg" type="image/svg+xml" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"></object>
<button (click)="downloadSVG()">Download SVG file</button>
更新 SVG 后,我需要在 .svg 文件中下载/保存整个 svg contnet。或任何其他替代选项可用于下载更新的 svg 文件?
解决方案
我自己做过,但不确定这是否是正确的方法。下面的代码工作正常。我已经从 npm 安装了文件保护程序包
npm install file-saver ngx-filesaver --save
在 app.module.ts 中,我们必须导入并将其添加到导入数组中
import { FileSaverModule } from 'ngx-filesaver';
imports: [
FileSaverModule
]
然后在打字稿中,我们必须像下面这样导入文件保护程序
import { FileSaverService } from "ngx-filesaver";
从构造函数我们必须初始化服务
constructor(private fileSaverService: FileSaverService){}
然后下载功能
downloadSvg(){
let obj:any=document.getElementById('svg1');
let svgBody:any=obj.contentDocument.querySelector("svg").innerHTML;
let svgContent="<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"4239.54 906.94 3137 1984\">"+svgBody+"</svg>";
let blob=new Blob([svgContent]);
this.fileSaverService.save(this.blob,'filename.svg');
}
推荐阅读
- django - 如何在 Django 中发送电子邮件/电话号码验证码?
- matplotlib - 如何正确绘制四个 Y 轴/脊椎?
- r - 如何上传多个表格并在 r shiny 中分别显示?
- python - 为什么会有这么奇怪的情节?
- bash - 为什么我的方法要处理已从数组中删除的元素?
- javascript - 如何使用 React 中的函数以连续方式选择颜色?
- android - cordova-plugin-admob-free 在构建过程中产生错误?
- algorithm - 给定两棵 B 树,T1 和 T2,使得 T2 中的每个元素都大于 T1 中的每个元素,加入到 B 树中
- google-colaboratory - 你如何在 Google Colab 中缩进?
- java - Java 登录系统:在登录系统中创建新用户