代码之家  ›  专栏  ›  技术社区  ›  intuited

从X剪贴板获取HTML源或富文本

  •  20
  • intuited  · 技术社区  · 14 年前

    如何从X剪贴板获取富文本或HTML源代码?例如,如果你从网络浏览器复制一些文本并粘贴到kompozer中,它将粘贴为HTML,并保留链接等。但是,对于相同的选择,xclip-o只输出纯文本,以类似于的方式重新格式化 elinks -dump . 我想把HTML拉出并放入文本编辑器(特别是 vim ).

    我问 the same question on superuser.com

    2 回复  |  直到 7 年前
        1
  •  25
  •   rkhayrov    14 年前

    #!/usr/bin/python
    
    import glib, gtk
    
    def test_clipboard():
        clipboard = gtk.Clipboard()
        targets = clipboard.wait_for_targets()
        print "Targets available:", ", ".join(map(str, targets))
        for target in targets:
            print "Trying '%s'..." % str(target)
            contents = clipboard.wait_for_contents(target)
            if contents:
                print contents.data
    
    def main():
        mainloop = glib.MainLoop()
        def cb():
            test_clipboard()
            mainloop.quit()
        glib.idle_add(cb)
        mainloop.run()
    
    if __name__ == "__main__":
        main()
    

    输出如下所示:

    $ ./clipboard.py 
    Targets available: TIMESTAMP, TARGETS, MULTIPLE, text/html, text/_moz_htmlcontext, text/_moz_htmlinfo, UTF8_STRING, COMPOUND_TEXT, TEXT, STRING, text/x-moz-url-priv
    ...
    Trying 'text/html'...
    I asked <a href="http://superuser.com/questions/144185/getting-html-source-or-rich-text-from-the-x-clipboard">the same question on superuser.com</a>, because I was hoping there was a utility to do this, but I didn't get any informative responses.
    Trying 'text/_moz_htmlcontext'...
    <html><body class="question-page"><div class="container"><div id="content"><div id="mainbar"><div id="question"><table><tbody><tr><td class="postcell"><div><div class="post-text"><p></p></div></div></td></tr></tbody></table></div></div></div></div></body></html>
    ...
    Trying 'STRING'...
    I asked the same question on superuser.com, because I was hoping there was a utility to do this, but I didn't get any informative responses.
    Trying 'text/x-moz-url-priv'...
    http://stackoverflow.com/questions/3261379/getting-html-source-or-rich-text-from-the-x-clipboard
    
        2
  •  55
  •   Stephane Chazelas Ash Wilson    5 年前

    补充 @rkhayrov's answer ,已存在该命令: xclip patch to xclip 那是什么 added to xclip later on in 2010 ,但还没有发布。所以,假设你的操作系统像Debian一样与subversion负责人 ( : version 0.13 随着这些变化最终在2016年发布(并拉入Debian) in January 2019

    要列出剪贴板选择的目标,请执行以下操作:

    $ xclip -selection clipboard -o -t TARGETS
    TIMESTAMP
    TARGETS
    MULTIPLE
    SAVE_TARGETS
    text/html
    text/_moz_htmlcontext
    text/_moz_htmlinfo
    UTF8_STRING
    COMPOUND_TEXT
    TEXT
    STRING
    text/x-moz-url-priv
    

    $ xclip -selection clipboard -o -t text/html
     <a href="https://stackoverflow.com/users/200540/rkhayrov" title="3017 reputation" class="comment-user">rkhayrov</a>
    $ xclip -selection clipboard -o -t UTF8_STRING
     rkhayrov
    $ xclip -selection clipboard -o -t TIMESTAMP
    684176350
    

    以及 也可以设置和拥有一个选择( -i 而不是 -o ).

        3
  •  2
  •   tiangolo    3 年前

    扩展Stephane Chazelas的想法,您可以:

    • 运行此命令从剪贴板中提取,转换为HTML,然后(使用管道 | xclip :
    xclip -selection clipboard -o -t text/html | xclip -selection clipboard
    
    • 接下来,当你用 Ctrl键 + ,它将粘贴HTML源代码。

    更进一步,你可以让它成为一个 ,这样就不必每次都打开终端并运行确切的命令。¨

    为此:

    • 打开操作系统的设置(在我的例子中是Ubuntu)
    • 然后找到快捷方式部分
    • 设置 姓名 ,例如: Copy as HTML
    bash -c "xclip -selection clipboard -o -t text/html | xclip -selection clipboard"
    

    注意 :注意,它与上面的命令相同,但放在内联Bash脚本中。这对于能够使用 |

    • 将快捷方式设置为所需的任意组合,最好不要覆盖使用的其他快捷方式。在我的情况下,我将其设置为: + 班次 c

    • Ctrl键 +
    • 然后,在粘贴之前,使用以下命令将其转换为HTML: Ctrl键 + 班次 + c
    • 下一步,粘贴时使用: Ctrl键 v

    Shortcut edition window