2012-06-18 88 views
4

我知道如何为纯文本复制到剪贴板:Apple脚本:如何将html内容复制到剪贴板?

oascript -e 'set the clipboard to "plain text"' 

但问题是我怎么能HTML内容复制到剪贴板? 例如,我怎么能复制下面的HTML内容复制到剪贴板:

<b>bold text</b> 

让我得到粗体文字,当我将其粘贴在文本编辑?

感谢您的帮助!


我发现这中间的解决方案:

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

调用它的原因了'img'标签不工作是因为RTF文档可以大概只使用嵌入图像,因此无法显示托管的HTTP服务器上的图像。 –

+0

我明白了。但剪贴板看起来可以保存html内容。当我在Safari中拖动并复制一些图像,然后使用'osascript -e'剪贴板''命令转储内容时,它显示数据如'«数据HTML3C6D65 ...二进制数据...»',而我相信应该有办法在命令行上做同样的工作。 ;) –

+0

我相信,因为Safari已经下载了图像,所以它将图像本身复制到剪贴板上。但是,当您使用上述命令时,您会将不兼容的'img'标记转换为RTF格式,从而导致图像损坏。 –

回答

9

我发现了一个解决方案,其思想是直接使用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}»" 

你可以将它们组合成一个句子,当然。
希望这有助于任何人感兴趣。 :)

+0

伟大的解决方案;请注意,对于UTF-8支持,您应该在HTML代码片段前加上'。 – mklement0

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中。

+0

谢谢你的回答,迈克尔!你的答案可能是一个很好的解决方法,我认为应该有一个简单的方法来做到这一点,而不使用Safari。但我很欣赏,并为答案+1! –

0

很抱歉,但在AppleScript的编辑器在OS X小牛你的代码甚至不会编译

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变量“the_url”和“link_text”。

1

我在Yosemite的这个主题中无法使用任何其他解决方案。将RTF内容放入剪贴板时,粘贴到TextEdit时会起作用,但在粘贴到Chrome时(我想将脚本粘贴到Google表格电子表格中)时不起作用。最后,我能得到这个工作:(由瑞安Pattersson的作品就像一个魅力的anwser扩大)

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 
0

您可以创建放一个链接到剪贴板,然后子程序从多个地方在你的代码

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 
相关问题