首页 > 其他分享 >svg标签内容导出为svg文件问题

svg标签内容导出为svg文件问题

时间:2024-06-21 09:43:41浏览次数:10  
标签:const svgElement svg 代码 导出 标签 document

 原本的代码:

// 大概代码层级

// html代码
<div ref="svgContainer"><div>

// js 代码
// 1、div中添加svg
const svg = d3.select(svgContainer.value)
  .append("svg)
  .attr("id", svgElement")
  .attr("xmlns", "http://www.w3.org/2000/svg")
  .attr("xmlns:xlink", "http:/ /www.w3.org/1999/xlink")
//2、svg中添加g
const svg_g = svg.append("g")
//3、添加.svg图片
const svgImageCode = '<svg id='图层1' data-name='' xmlns='http://www.w3.org/2000/svg'  viewBox='' .........'
svg_g.append('image')
  .attr('width', 100)
  .attr('x', 100)
  .attr('y', 100)
  .attr("xlink:href", 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svgImageCode ) // 此处xlink:href对应的值之前是用的svg图片的相对路径,实际导出的时候导不出来,将 .svg 图片的代码作为字符串嵌入到添加的 image 元素中就可以一起导出了

 

增加的导出代码:

// 点击按钮时导出页面中的 SVG 元素为 .svg 文件
document.getElementById("exportSvgButton").onclick = function() { 
    const svgElement = document.getElementById("svgElement"); // 替换为实际的 SVG 元素 ID
    const svgContent = new XMLSerializer().serializeToString(svgElement);

    const blob = new Blob([svgContent], { type: "image/svg+xml" });
    const url = URL.createObjectURL(blob);

    const a = document.createElement("a");
    a.href = url;
    a.download = "diagram.svg"; // 设置导出的文件名为 "diagram.svg"
    document.body.appendChild(a);
    a.click();
    window.URL.revokeObjectURL(url); // 释放对象URL资源
};

 

标签:const,svgElement,svg,代码,导出,标签,document
From: https://www.cnblogs.com/lftBlogs/p/18259929

相关文章

  • H5中的表单标签
    1.form标签form标签构成表单框架,一些按钮只有在form标签内,才会显示出该标签的用途效果。例如:网址标签<inputtype="url">邮箱标签<inputtype="email"placeholder="请输入邮箱">2.表单中的控件主要由input标签加上type属性的更改来实现。text值<inputtype="text"p......
  • SVG <pattern> 标签的用法和应用场景
    通过使用<pattern>标签,可以在SVG图像内部定义可重复使用的任意图案。这些图案可以通过fill属性或stroke属性进行引用。使用场景例如我们要在<svg>中绘制大量的圆点点,可以通过重复使用<circle>标签来实现。<svgwidth="100"height="100"xmlns="http://www.......
  • SVG <pattern> 标签的用法和应用场景
    通过使用<pattern>标签,可以在SVG图像内部定义可重复使用的任意图案。这些图案可以通过fill属性或stroke属性进行引用。使用场景例如我们要在<svg>中绘制大量的圆点点,可以通过重复使用<circle>标签来实现。<svgwidth="100"height="100"xmlns="http://www.w3.org......
  • VueJs导出Excel,插件 xlsx
    1.安装组件:cnpminstallxlsx--save2.新建一个辅助ts、js文件我的excelUtil.ts注意:新版本的插件导入写法变了:import*asXLSXfrom'xlsx'import{timestampToDateString}from'@/common/dateUtil'import*asXLSXfrom'xlsx'//headerColumns:属性列表//header......
  • 【Android】代码中将 SVG 图像转换颜色
    要在代码中将SVG图像转换为黑色,你可以使用一个库,例如AndroidSVG或SVG-Android。以下是一个简单的示例代码,展示了如何通过代码方式将SVG图像改为黑色://导入AndroidSVG库importcom.caverock.androidsvg.SVG;importcom.caverock.androidsvg.SVGParseException;......
  • js 如何解析带有html标签的内容
    在JavaScript中解析带有HTML标签的内容,通常是为了提取信息或转换HTML结构为可操作的对象。以下几种方式可以实现:1.使用DOMParser        如果想将HTML字符串解析成DOM节点以便进一步操作(比如查询、修改等),可以使用DOMParser。这是一个非常强大的工具,特别是在处理复......
  • 最让企业头疼的保密网数据导出问题,现在终于解决了!
    企业保密网是确保企业数据安全的关键措施之一。通过采用先进的技术和管理手段,建立完善的保密制度和流程,可以有效保护企业数据的安全性和保密性,为企业的发展提供有力保障。企业保密网的结构层次主要包括物理层面、技术层面和管理层面。物理层面:包括企业网络设备、服务器、存储设......
  • python 实现博客园文章导出为word文档
    确保安装了以下Python库:pipinstallrequestsbeautifulsoup4python-doc importrequestsfrombs4importBeautifulSoupfromdocximportDocumentfromdocx.sharedimportPtfromdocx.oxml.nsimportqn#函数:获取博客园文章内容defget_blog_article(url):......
  • vue3标签模板上的ref类型注解
    子组件<scriptsetuplang="ts">import{ref,defineExpose}from'vue';constnum=ref<number>(10)defineExpose({num,//把值暴露出去,父级可以通过ref获取})</script><template><h1>我是组件</h1></template&g......
  • HTML基本标签使用【超链接标签、表格标签、表单标签、input标签】
    目录一、基本介绍1.1概念1.2HTML的核心特点二、HTML基本标签三、超链接标签四、表格标签✌`<table>`标签属性✍`<tr>`标签属性✌`<td>`和`<th>`标签属性演示注意事项五、表单标签综合应用最后一、基本介绍1.1概念HTML,全称为超文本标记语言(HyperText......