根据man
的{{1}}页面,
pbpaste
然而(根据我至少使用10.6 Snow Leopard的经验), -Prefer {txt | rtf | ps}
tells pbpaste what type of data to look for in the pasteboard
first. As stated above, pbpaste normally looks first for plain
text data; however, by specifying -Prefer ps you can tell
pbpaste to look first for Encapsulated PostScript. If you spec-
ify -Prefer rtf, pbpaste looks first for Rich Text format. In
any case, pbpaste looks for the other formats if the preferred
one is not found. The txt option replaces the deprecated ascii
option, which continues to function as before. Both indicate a
preference for plain text.
永远不会放弃RTF数据,即使它存在于粘贴板上。有没有其他简单的方法来获取准备粘贴的RTF文本?
我尝试过AppleScript,但是pbpaste -Prefer rtf
给出了响应osascript -e 'the clipboard as «class RTF »'
吨十六进制编码的废话«data RTF 7B
。 AppleScript可以将此hexdata转换为我可以使用的文本吗?
答案 0 :(得分:15)
我无法从AppleScript内部看到任何方法,但是因为你还在shell中工作,我只是对它进行后处理:“hex-encoded crap”是你想要的RTF数据。我能想到的最简单的脚本是
perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))'
解释:substr($_,11,-3)
剥离«data RTF
和»\n
位(每个guillemets是两个字节); pack("H*", ...)
将十六进制编码数据打包到字节流中; unpack("C*", ...)
将字节流解包为字符值数组; print chr foreach ...
将数组中的每个整数转换为相应的字符并打印出来;并且-ne
选项评估为每一行指定的脚本,该行隐含地存储在$_
中。 (如果您希望该脚本位于自己的文件中,请确保shebang行为#!/usr/bin/perl -ne
。)然后,运行
osascript -e 'the clipboard as «class RTF »' | \
perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))'
将为您提供原始RTF输出。
答案 1 :(得分:9)
我认为,至少在OS X 10.8上,如果您从Chrome复制HTML内容,这将有效:
osascript -e 'the clipboard as "HTML"'|perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))'
答案 2 :(得分:0)
我通过快速谷歌搜索找到了conversation这个问题
答案 3 :(得分:0)
通过AppleScript(在10.11 El Capitan中测试)非常容易:
set the clipboard to (the clipboard as «class RTF »)
您可以通过Automator创建服务:
剧本:
-- name: convert to RTF
on run {input, parameters}
set the clipboard to (the clipboard as «class RTF »)
return the clipboard
end run
完成。现在保存新服务并进行试用:选择一个文本,然后转到应用程序菜单并选择"服务" > "转换为RTF"