我不得不发送一份关于将一些剪贴板内容粘贴到网页编辑器中的报告,我需要一种方法将剪贴板内容转储/恢复到(可能)HTML。如何从OS X粘贴板/剪贴板中获取HTML数据?
我该怎么做?
似乎pbcopy/pbpaste不要送花儿给人给我短信,即使我用pbpaste -P rtf
或pbpaste -P HTML
我不得不发送一份关于将一些剪贴板内容粘贴到网页编辑器中的报告,我需要一种方法将剪贴板内容转储/恢复到(可能)HTML。如何从OS X粘贴板/剪贴板中获取HTML数据?
我该怎么做?
似乎pbcopy/pbpaste不要送花儿给人给我短信,即使我用pbpaste -P rtf
或pbpaste -P HTML
我知道你已经发现了这一点,但对于人谁从谷歌在这里摸到的利益,则在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)))'
三年后,在更文明的时代,我们有Swift。您可以编写一个简短的Swift脚本来准确提取您需要的OS X粘贴板。
将下面的swift 3片段放到一个新的文本文件中。我将其命名pbpaste.swift
:
import Cocoa
let type = NSPasteboardTypeHTML
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>
标记?!) - 但是,嘿,至少它不是纯文本!
注:
NSPasteboardTypeHTML
是一个特殊的全球计算结果为字符串"public.html"
pbpaste-html.swift
,或这有点慢,因为它正在被动态解释,没有被编译和执行。编辑给我10倍的加速:
xcrun -sdk macosx swiftc pbpaste.swift -o pbpaste-html
然后只需调用./pbpaste-html
而不是swift pbpaste.swift
。
斯威夫特2版:
import Cocoa
let type = NSPasteboardTypeHTML
if let string = NSPasteboard.generalPasteboard().stringForType(type) {
print(string)
}
else {
print("Could not find string data of type '\(type)' on the system pasteboard")
exit(1)
}