Python: скопируйте строку SVG в формат «image / svg + xml» в буфере обмена Windows, чтобы можно было вставить ее как изображение SVG - PullRequest
0 голосов
/ 26 января 2019

Скажем, у меня есть XML-содержимое файла SVG, например:

<?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», который можно вставить в powerpoint как изображение svg?

1 Ответ

0 голосов
/ 26 января 2019

Единственная известная мне библиотека буфера обмена, которая поддерживает типы 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 в буфер обмена.

...