Как я могу отредактировать источник HTML в буфере обмена?

Если я вырежу какой-нибудь HTML из окна мессенджера Pidgin, я могу легко вставить его дословно в новое HTML-письмо в Thunderbird. Все форматирование (шрифты, цвета и т. Д.) Сохраняются, поэтому кажется, что в моем буфере обмена настольных компьютеров Ubuntu 13.10 где-то должен быть источник HTML.

Но я бы хотел настроить источник HTML.

Как я могу получить источник HTML, если он находится в буфере обмена? Я хотел бы просто выбросить его в текстовый файл, поработать с разметкой в ​​Vim или чем-то еще, а затем использовать этот источник HTML на веб-странице или передать его в Thunderbird «Вставить → HTML».

Хм, может быть что-то вроде PasteImg (упоминается в Получение графики из буфера обмена на диск? ), но с использованием request_rich_text() вместо request_image()? Я не возражаю против использования небольшого скрипта Python в тех редких случаях, когда я хочу получить исходный код HTML из буфера обмена.

То, что находится в буфере обмена, может фактически быть «расширенным текстом».

Сценарий Python из этого ответа выводит

Current clipboard offers formats: ('TIMESTAMP', 'TARGETS', 'MULTIPLE',
'SAVE_TARGETS', 'COMPOUND_TEXT', 'STRING', 'TEXT', 'UTF8_STRING', 'text/html',
'text/plain')

Оказывается, мои журналы на Pidgin представлены в HTML, так что это один из способов получить этот источник HTML , минуя буфер обмена целиком. Я все еще заинтересован в ответе на оригинальный вопрос (как извлечь HTML из буфера обмена).

7
задан 13 April 2017 в 15:24

6 ответов

Найденный им! Вот то, как достигнуть источник HTML, когда существуют некоторые на Вашем буфере обмена:

#!/usr/bin/env python
import gtk
print (gtk.Clipboard().wait_for_contents('text/html')).data

Это помогло.

Это не работало на меня. Мой обратный вызов никогда не вводился.

0
ответ дан 13 April 2017 в 15:24

Я вижу то, что Вы пытаетесь достигнуть. Попытайтесь вставить во что-то, что берет WYSIWYG, отредактируйте его там, затем скопируйте вставку в Thunderbird?

, Возможно, bluegriffon или libreoffice писатель будет работать.

0
ответ дан 13 April 2017 в 15:24

Вот модификация Вашего сценария, который на самом деле позволяет редактирование HTML непосредственно.

Это также решает проблемы с кодировкой символов: если Вы отвечаете на электронное письмо от кого-то использующего Windows, возможности являются кодированием, застревает в UTF-16, который бесполезен для редактирования. Вы, возможно, должны установить chardet модуль в Python.

Замена 'vi' с Вашим предпочтительным текстовым редактором, в subprocess.call(....

#!/usr/bin/env python
import gtk
import chardet
import os
import getopt
import subprocess

dtype = 'text/html'
htmlclip = gtk.Clipboard().wait_for_contents(dtype).data
encoding = chardet.detect(htmlclip)['encoding']

# Shove the clipboard to a temporary file
tmpfn = '/tmp/htmlclip_%i' % os.getpid()

with open (tmpfn, 'w') as editfile:
   editfile.write(htmlclip.decode(encoding))

# Manually edit the temporary file
subprocess.call(['vi', tmpfn])

with open (tmpfn, 'r') as editfile:
   htmlclip = editfile.read().encode(encoding)

# Put the modified data back to clipboard
gtk.Clipboard().set_with_data(
      [(dtype,0,0)],
      lambda cb, sd, info, data: sd.set(dtype, 8, htmlclip),
      lambda cb, d: None )
gtk.Clipboard().set_can_store([(dtype,0,0)])
gtk.Clipboard().store()

Это делает полный цикл редактирования, изменяя буфер обмена “ в place”.

я использую его для восполнения раздражающего отсутствия Thunderbird функции HTML-редактора:

  1. выбор весь с ctrl+a в окне
  2. ctrl+c
  3. создания сообщения, выполненном вышеупомянутый сценарий, который открывает редактора –
    1. вносят Ваши изменения в источник HTML
    2. , сохраняют и выходят
  4. ctrl+v в составить перезаписях окна все содержание с Вашей отредактированной версией HTML.
0
ответ дан 13 April 2017 в 15:24

Я действительно не использую Thunderbird, но необходимо быть в состоянии использовать расширение, чтобы помочь отредактировать источник в Thnderbird - например:

https://addons.mozilla.org/en-us/thunderbird/addon/edit-html-source / <глоток> не обновленный целую вечность
https://addons.mozilla.org/en-us/thunderbird/addon/stationery /

0
ответ дан 13 April 2017 в 15:24

Существует ответ в https://stackoverflow.com/questions/3261379/getting-html-source-or-rich-text-from-the-x-clipboard, который непосредственно использует xclip утилита:

xclip -selection clipboard -o -t text/html

я нахожу это самым легким и самым надежным теперь, так как GTK3/Python3, кажется, представил некоторые изменения, которые повредили исходный ответ.

0
ответ дан 19 April 2019 в 03:53

Чтобы получить исходный HTML-код «форматированного текста»:

# Get the HTML source to stdio
xclip -selection clipboard -t text/html -o

У вас есть несколько ЦЕЛЕЙ, например text/plain (по умолчанию), чтобы получить только отображаемый текст. .

Я работаю с простым/текстовым содержимым буфера обмена, используя xsel:

xsel -b | something | something_else | xsel -b

Довольно полезно, например, для изменить список на TOP n случаев с сортировкой | уникальный -c | сортировать -рн | головка -20.

В вашем случае измените первый xsel -b на указанную выше команду xclip.

0
ответ дан 13 November 2020 в 04:23

Другие вопросы по тегам:

Похожие вопросы: