// ==UserScript== // @name 破解www.ainitu.com印章下载 // @namespace http://tampermonkey.net/ // @version 1.4 // @description 导出指定 ID 的 为 SVG,并自动删除指定元素 // @author You // @match https://ainitu.cdxyxjiao.top* // @match https://www.ainitu.com* // @grant none // ==/UserScript== (function () { 'use strict'; // 等待页面加载完成 window.addEventListener('load', () => { console.log('页面加载完成,开始删除指定元素'); // 使用 CSS 选择器和 XPath 定位要删除的元素 const selectors = [ '/html/body/div[1]', // XPath 选择器 '//*[@id="app"]/div/div[5]', // XPath 选择器 '//*[@id="app"]/div/div[6]', // XPath 选择器 '//*[@id="app"]/div/div[4]/button[3]', // XPath 选择器 '//*[@id="app"]/div/div[4]/div', // XPath 选择器 '/html/body/div[3]', // XPath 选择器 '/html/body/div[2]', ]; // 删除元素的通用函数 function deleteElement(selector) { try { // 优先尝试 XPath const element = document.evaluate(selector, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; if (element) { element.remove(); console.log(`已删除元素(XPath): ${selector}`); } else { console.log(`未找到元素(XPath): ${selector}`); } } catch (err) { console.error(`无法删除元素(XPath): ${selector}`, err); } } // 遍历删除指定元素 selectors.forEach(selector => deleteElement(selector)); console.log('指定元素删除完成'); }); // 创建一个按钮 const button = document.createElement('button'); button.innerText = '导出 Canvas 为 SVG'; button.style.position = 'fixed'; button.style.top = '10px'; button.style.right = '10px'; button.style.zIndex = '1000'; button.style.padding = '10px 20px'; button.style.backgroundColor = '#007bff'; button.style.color = '#fff'; button.style.border = 'none'; button.style.borderRadius = '5px'; button.style.cursor = 'pointer'; button.style.boxShadow = '0 2px 4px rgba(0, 0, 0, 0.2)'; document.body.appendChild(button); // 按钮点击事件 button.addEventListener('click', function () { console.log('按钮点击事件触发'); // 通过 ID 获取目标 元素 const canvas = document.getElementById('canvas'); if (!canvas) { alert('未找到 ID 为 "canvas" 的 元素'); console.log('未找到目标 元素'); return; } console.log('找到目标 canvas:', canvas); // 获取 Canvas 的宽度和高度 const width = canvas.width; const height = canvas.height; // 创建 SVG 元素 const svgNS = "http://www.w3.org/2000/svg"; const svg = document.createElementNS(svgNS, "svg"); svg.setAttribute("xmlns", svgNS); svg.setAttribute("viewBox", `0 0 ${width} ${height}`); svg.setAttribute("width", width); svg.setAttribute("height", height); // 获取 Canvas 数据并嵌入 SVG const dataURL = canvas.toDataURL(); const image = document.createElementNS(svgNS, "image"); image.setAttributeNS(null, 'href', dataURL); image.setAttribute("x", 0); image.setAttribute("y", 0); image.setAttribute("width", width); image.setAttribute("height", height); svg.appendChild(image); // 转换为字符串并下载 const svgData = new XMLSerializer().serializeToString(svg); const blob = new Blob([svgData], { type: "image/svg+xml;charset=utf-8" }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'exported_canvas.svg'; a.click(); URL.revokeObjectURL(url); // 释放 URL console.log('目标 canvas 转换为 SVG 并成功导出'); }); })();