如何编辑剪贴板中的 HTML 源代码?

如何编辑剪贴板中的 HTML 源代码?

如果我从 Pidgin 即时通讯窗口剪切一些 HTML,我可以轻松地将其逐字粘贴到 Thunderbird 中的新 HTML 电子邮件中。所有格式(字体、颜色等)都保留了下来,因此看来我的 Ubuntu 13.10 桌面剪贴板中一定有 HTML 源代码。

但我想调整 HTML 源代码。

当 HTML 源代码在剪贴板中时,我如何才能获取它?我只想将其放入文本文件中,在 Vim 或其他程序中处理标记,然后在网页中使用此 HTML 源代码或将其提供给 Thunderbird 的“插入 → HTML”。

嗯,也许是这样的粘贴图片(提及于将剪贴板上的图形传输到磁盘吗?),但使用request_rich_text()而不是request_image()? 当我偶尔想从剪贴板获取 HTML 源代码时,我不会介意使用一个小的 Python 脚本。

剪贴板中的内容实际上可能是“富文本”。

Python 脚本来自这个答案输出

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

事实证明我的 Pidgin 日志是 HTML 格式的,所以这是获取HTML 源代码,完全绕过剪贴板。我仍然对原始问题的答案感兴趣(如何从剪贴板检索 HTML)。

答案1

找到了!以下是当您的剪贴板上有 HTML 源代码时获取该源代码的方法:

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

幫助了。

对我来说没用。我的回拨从未输入过。

答案2

我明白你的意思。尝试粘贴到支持所见即所得格式的内容中,在那里编辑,然后复制粘贴到 Thunderbird 中?

也许 bluegriffon 或 libreoffice writer 会起作用。

答案3

这是对脚本的修改,它实际上允许編輯直接访问 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()

这将完成一个完整的编辑循环,“就地”修改剪贴板。

我用它来弥补 Thunderbird 缺少 html 编辑器功能的缺点:

  1. 全选ctrl+a邮件撰写窗口中
  2. ctrl+c
  3. 运行上述脚本,打开一个编辑器 -
    1. 对 html 源代码进行修改
    2. 保存并退出
  4. ctrl+v在撰写窗口中用您编辑的 html 版本覆盖全部内容。

答案4

一个答案直接使用该xclip实用程序:

xclip -selection clipboard -o -t text/html

我发现它现在是最简单和最可靠的,因为 GTK3/Python3 似乎引入了一些破坏原始答案的变化。

相关内容