2012-06-18 117 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 
相關問題