我知道如何将纯文本复制到剪贴板:
oascript -e 'set the clipboard to "plain text"'
但问题是如何将html内容复制到剪贴板? 例如,如何将以下html内容复制到剪贴板:
<b>bold text</b>
以便在将其粘贴到TextEdit中时获得粗体文字?
提前感谢您的帮助!
我找到了一个中间解决方案:
echo "<b>bold text</b>" | textutil -stdin -stdout -format html -convert rtf | pbcopy
这项工作到目前为止一直很好,但不幸的是我发现它不适用于图像标记:
echo "<img src=\"https://www.google.com/images/srpr/logo3w.png\">" | textutil -stdin -stdout -format html -convert rtf | pbcopy
这不能完成我想要的工作,所以有人知道原因吗? 谢谢!
我找到了一个有效的解决方案,并在下面发布:)
答案 0 :(得分:13)
我找到了一个解决方案,其目的是直接使用HTML类而不是RTF类。 (TextEdit或Web编辑器可以处理此HTML类以及RTF类数据)
您所要做的就是将您的html代码转换为原始的十六进制代码
完整的代码如下:
hex=`echo -n "your html code here" | hexdump -ve '1/1 "%.2x"'`
osascript -e "set the clipboard to «data HTML${hex}»"
当然,你可以把它们组合成一个句子 希望这有助于任何感兴趣的人。 :)
答案 1 :(得分:1)
我对AppleScript并不擅长,但这里有一些有用的东西。不幸的是,由于它打开了一个Safari窗口,它不是即时的。您可能需要调整延迟值以补偿较慢的性能,但在我的测试中0.25秒似乎足够长。
set theHTML to "<b>bold text</b>"
tell application "Safari"
open location "data:text/html," & theHTML
activate
tell application "System Events"
keystroke "a" using {command down}
keystroke "c" using {command down}
end tell
delay 0.25
close the first window
end tell
之后,渲染的文本应该放在剪贴板上,准备粘贴到TextEdit中。
答案 2 :(得分:1)
我无法在优胜美地的这个帖子中使用任何其他解决方案。将RTF内容放入剪贴板时,粘贴到TextEdit时会有效,但粘贴到Chrome时却没有(我想将粘贴脚本粘贴到Google表格电子表格中)。最终我能够让这个工作:
set rawHTML to "<a href=\"" & gmailURL & "\">" & myTitle & "</a>"
set escapedData to do shell script "echo " & (quoted form of rawHTML) as «class HTML»
set the clipboard to escapedData
答案 3 :(得分:1)
如果输入的HTML太大,则@ k-j的解决方案将不起作用,您可能会遇到如下错误消息:
/usr/bin/osascript: Argument list too long
我将@ k-j的解决方案进行了一些改进,将其转换为可执行文件并通过管道处理数据。希望对您有所帮助。
〜/ bin / pbcopyhtml:
#!/bin/sh
printf "set the clipboard to «data HTML$(cat $@ | hexdump -ve '1/1 "%.2x"')»" | osascript -
$ printf '# title\n\n- list\n- list' | cmark | ~/bin/pbcopyhtml
$ osascript -e 'the clipboard as record'
«class HTML»:«data HTML3C68313E7469746C653C2F68313E0A3C756C3E0A3C6C693E6C6973743C2F6C693E0A3C6C693E6C6973743C2F6C693E0A3C2F756C3E0A»
$ printf '# title\n\n- list\n- list' | cmark > sample.html
$ ~/bin/pbcopyhtml sample.html
$ osascript -e 'the clipboard as record'
«class HTML»:«data HTML3C68313E7469746C653C2F68313E0A3C756C3E0A3C6C693E6C6973743C2F6C693E0A3C6C693E6C6973743C2F6C693E0A3C2F756C3E0A»
答案 4 :(得分:0)
抱歉,您的代码甚至无法在OS X Mavericks的AppleScript编辑器中编译
hex=`echo -n "your html code here" | hexdump -ve '1/1 "%.2x"'`
osascript -e "set the clipboard to «data HTML${hex}»"
但是,我发现以下代码运行良好:
set the_HTML to "<font size=4 face=\"verdana\"><a href=\"" & the_url & "\" target=_blank>" & link_text & "</a></font>"
--set the clipboard to the_text
do shell script "echo " & quoted form of the_HTML & " | textutil -format html -convert rtf -stdin -stdout | pbcopy -Prefer rtf"
当然,您需要设置AppleScript变量&#34; the_url&#34;和&#34; link_text&#34;在上述陈述之前。
答案 5 :(得分:0)
(Ryan Pattersson对anwser进行了扩展,就像魅力一样。)
您可以创建一个子程序,将链接放入剪贴板,然后从代码中的多个位置调用它
my urlToClipboard("Gmail", "http://gmail.com")
on urlToClipboard(theTitle, theUrl)
set rawHTML to "<a href=\"" & theUrl & "\">" & theTitle & "</a>"
set escapedData to do shell script "echo " & (quoted form of rawHTML) as «class HTML»
set the clipboard to escapedData
end urlToClipboard