10
votes

Écran Apple: Comment puis-je copier le contenu HTML dans le presse-papiers?

Je sais comment copier un texte brut dans le presse-papiers: xxx

mais la question est de savoir comment puis-je copier le contenu HTML dans le presse-papiers? Par exemple, comment puis-je copier le contenu HTML suivant dans le presse-papiers: xxx

de sorte que je reçois du texte audacieux quand je le colle dans le TextEdit?

merci pour l'aide à l'avance!


J'ai trouvé une solution intermédiaire pour cela: xxx

Ceci fonctionne, Jusqu'ici tout va bien, mais malheureusement, j'ai trouvé que cela ne fonctionne pas pour une étiquette d'image: xxx

Cela ne fait pas le travail que je veux, donc quiconque sait la raison? de
Merci!


J'ai trouvé une solution de travail et l'avez posté ci-dessous :)


4 commentaires

La raison que la balise img ne fonctionne pas est que les documents RTF peuvent probablement utiliser des images incorporées et ne peuvent donc pas afficher les images hébergées sur des serveurs HTTP.


Je vois. Mais le presse-papiers peut sembler contenir des contenus HTML définitivement. Lorsque je fais glisser et copier une image dans Safari, puis videz le contenu à l'aide de la commande 'Osascript -e "" La commande Presse-papiers "'" indique les données telles que "Data HTML3C6D65 ... Données binaires ...", et je croire qu'il devrait faire un moyen de faire le même travail sur la ligne de commande. ;)


Je crois que puisque Safari a déjà téléchargé l'image, elle copie l'image elle-même lorsque vous le mettez sur le presse-papiers. Toutefois, lorsque vous utilisez les commandes ci-dessus, vous convertissez une étiquette incompatible IMG IMG au format RTF, qui vous laisse avec une image cassée.


Il semble que le format RTF ne puisse pas contenir d'images (téléchargées ni référencées), c'est pourquoi mon code a échoué. (et le safari copie du code HTML, non des images binaires.) Mais je pourrais atteindre l'objectif en utilisant directement la classe HTML directe sans passer la classe RTF. Merci pour l'aide, Michael!


6 Réponses :


1
votes

Je ne suis pas super grand chez AppleScript, mais voici quelque chose qui fonctionne. Malheureusement, comme il ouvre une fenêtre de safari, ce n'est pas instantané. Vous devrez peut-être ajuster la valeur de retard pour compenser les performances plus lentes, mais 0,25 s semblait suffisamment longue dans mes tests.

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


1 commentaires

Merci pour la réponse, Michael! Votre réponse pourrait être une bonne solution de contournement, je pense qu'il devrait y avoir un moyen plus simple de le faire sans utiliser Safari. Mais j'apprécie et +1 pour la réponse!



26
votes

J'ai trouvé une solution et l'idée est d'utiliser directement la classe HTML au lieu de la classe RTF. (TextEdit ou les éditeurs Web peuvent gérer cette classe HTML ainsi que les données de la classe RTF)
Tout ce que vous avez à faire est de convertir votre code HTML en cru hexcode.
Le code complet ressemble à: xxx

Vous pouvez les combiner en une phrase, bien sûr.
J'espère que cela a aidé quelqu'un intéressé. :)


2 commentaires

Grande solution; Notez que pour la prise en charge de l'UTF-8, vous devez préfixer vos extraits HTML avec .


Cela fonctionne lorsque je colle, par exemple, textedit, mais je ne peux pas coller dans de nombreux autres endroits, tels que l'application Web de la discorde. Des idées?



0
votes

Désolé, mais votre code ne compilera même pas dans AppleScript Editor dans OS X Mavericks XXX PRE>

Cependant, j'ai trouvé que le code suivant fonctionne bien: P>

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"


0 commentaires

1
votes

Je n'ai pas été capable d'utiliser une autre solution dans ce fil sur yosemite. Lors de la mise en place de la RTF dans les choses du presse-papiers fonctionnant lors du collage de TextEdit, mais pas lors du colonage en chrome (je voulais script coller dans une feuille de calcul de Feuilles Google). Finalement, j'ai pu obtenir cela pour travailler: xxx


0 commentaires

0
votes

(en expansion sur l'anwser par Ryan Pattersson qui fonctionne comme un charme.)

Vous pouvez créer un sous-programme qui place un lien vers le presse-papiers, puis l'appelez à plusieurs endroits de votre code P>

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


0 commentaires

3
votes

La solution par @kj ne fonctionnerait pas si l'entrée HTML est trop grosse, vous pourriez rencontrer des messages d'erreur comme ci-dessous:

$ printf '# title\n\n- list\n- list' | cmark > sample.html
$ ~/bin/pbcopyhtml sample.html
$ osascript -e 'the clipboard as record'
«class HTML»:«data HTML3C68313E7469746C653C2F68313E0A3C756C3E0A3C6C693E6C6973743C2F6C693E0A3C6C693E6C6973743C2F6C693E0A3C2F756C3E0A»


0 commentaires