如何从OS X粘贴板/剪贴板中获取HTML数据?

时间:2013-06-20 15:15:58

标签: macos clipboard pasteboard

我必须发送一份关于将一些剪贴板内容粘贴到Web内容丰富的编辑器中的报告,我需要一种方法将剪贴板内容转储/恢复到(可能)HTML。

我该怎么做?

即使我使用pbpaste -P rtfpbpaste -P HTML

,似乎pbcopy / pbpaste总是给我发短信

2 个答案:

答案 0 :(得分:7)

我意识到你已经发现了这一点,但是为了从谷歌出现在这里的人们的利益,Getting RTF data out of Mac OS X pasteboard (clipboard)的RTF数据解决方案也适用于将HTML从剪贴板中取出

即命令

osascript -e 'the clipboard as «class HTML»' |   perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))'

答案 1 :(得分:7)

三年后,在更文明的时代,我们有Swift。您可以编写一个简短的Swift脚本来准确提取OS X的粘贴板。

将以下Swift 4片段放入新文本文件中。我将我命名为pbpaste.swift

import Cocoa
let type = NSPasteboard.PasteboardType.html
if let string = NSPasteboard.general.string(forType:type) {
  print(string)
}
else {
  print("Could not find string data of type '\(type)' on the system pasteboard")
  exit(1)
}

然后,复制一些html,并从放置该文件的目录中运行swift pbpaste.swift

是的,HTML! Uggh,OS X添加了大量自定义标记(以及<meta>标记?!) - 但是,至少它不是纯文本!

注意:

  • NSPasteboard.PasteboardType.html是一个特殊的全局变量,其值为"public.html"
  • 显然这是特定于html的,所以你可能想要:
    1. 将其命名为pbpaste-html.swift
    2. 从命令行参数
    3. 中读取所需的类型
  • 它有点慢,因为它是在动态解释,而不是编译和执行。编译为我提供了10倍的加速:

    xcrun -sdk macosx swiftc pbpaste.swift -o pbpaste-html
    

    然后只需拨打./pbpaste-html而不是swift pbpaste.swift