python - Python:在Windows剪贴板中将svg字符串复制为“image/svg+xml”格式,因此可以将其粘贴为svg图像
问题描述
假设我有一个 svg 文件的 xml 内容,如下所示:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Created with matplotlib (http://matplotlib.org/) -->
<svg height="344.88pt" version="1.1" viewBox="0 0 460.8 344.88" width="460.8pt"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
...
我的问题是,如何将此字符串复制到 Windows 剪贴板,而不是作为字符串,而是作为“image/svg+xml”数据类型,可以作为 svg 图像粘贴到 powerpoint 中?
解决方案
我知道的唯一支持 Mime 类型的剪贴板库是 QtClipboard:https ://doc.qt.io/qtforpython/PySide2/QtGui/QClipboard.html
你可能想看看它。
可能在您可以设置的 Mime 类型setMimeData
中还有image/svg+xml
例子:
from PyQt5 import QtCore
d = QtCore.QMimeData()
print(d.formats()) # Now it is an empty list "[]" because you still didn't set the data and the mime type
# Set data in the object with the required mime type
d.setData("image/svg+xml", b'<?xml version="1.0" encoding="utf-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><!-- Created with matplotlib (http://matplotlib.org/) --><svg height="344.88pt" version="1.1" viewBox="0 0 460.8 344.88" width="460.8pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">')
print(d.formats()) # Now it prints: ['image/svg+xml']
从这里你可以把它带到 QClipboard。
我引用文档:http ://doc.qt.io/archives/qt-4.8/qclipboard.html
setMimeData() 函数具有最大的灵活性:它允许您将任何 QMimeData 添加到剪贴板中。
推荐阅读
- ios - Swift 自定义单元格以适应屏幕宽度
- python - 为我的不和谐机器人创建一个可以随时运行的异步函数
- elasticsearch - nginx 代理背后的 Elasticsearch 跨集群搜索
- android - 如何将 ImageView 保持在屏幕范围内
- javascript - ES6 推送到静态数组属性
- css - 使用 Bulma 将下拉菜单附加到文本输入
- c# - 用于输入的 C# WPF 动态名称
- android - 将数据从 recylerview 适配器传递到导航抽屉中的片段
- mysql - 只进行一次查询即可从同一张表中获取数据
- jenkins - Groovy:构造函数调用必须是构造函数中的第一条语句