我确实必须发送一份关于将一些剪贴板内容粘贴到 Web 富编辑器中的报告,并且我需要一种将剪贴板内容转储/恢复为(可能)HTML 的方法。
我怎样才能做到这一点?
似乎 pbcopy / pbpaste 总是给我文本,即使我使用pbpaste -P rtf
orpbpaste -P HTML
我确实必须发送一份关于将一些剪贴板内容粘贴到 Web 富编辑器中的报告,并且我需要一种将剪贴板内容转储/恢复为(可能)HTML 的方法。
我怎样才能做到这一点?
似乎 pbcopy / pbpaste 总是给我文本,即使我使用pbpaste -P rtf
orpbpaste -P HTML
三年后,在更加文明的时代,我们有了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!呃,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
.
我知道您已经找到了这一点,但是为了让从 Google 出现在这里的人的利益,从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)))'