sor*_*rin 10 macos clipboard pasteboard
我必须发送一份关于将一些剪贴板内容粘贴到一个富Web编辑器的报告,我需要一种方法来将剪贴板内容转储/恢复到(可能)HTML.
我怎样才能做到这一点?
似乎pbcopy/pbpaste总是给我文本,即使我使用pbpaste -P rtf或pbpaste -P HTML
三年后,在更文明的时代,我们有斯威夫特.您可以编写一个简短的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"pbpaste-html.swift,或它有点慢,因为它是在动态解释,而不是编译和执行.编译给我10倍的加速:
xcrun -sdk macosx swiftc pbpaste.swift -o pbpaste-html
然后打电话./pbpaste-html而不是swift pbpaste.swift.
我意识到你已经发现了这一点,但为了从谷歌出现在这里的人们的利益,从Mac OS X粘贴板(剪贴板)获取RTF数据的 RTF数据解决方案可以很好地将HTML从剪贴板中取出也是.
也就是说,命令
osascript -e 'the clipboard as «class HTML»' |   perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))'