Estoy desarrollando un herramienta para añadir una versión en formato HTML de un texto al portapapeles. Actualmente, estoy usando applescript para manipular el portapapeles.
Por desgracia, me he dado cuenta de que, además de las entradas que le pido que añada, también añade la entrada styled Clipboard text
. Esto, creo, hace que aplicaciones como Pages no puedan pegar la versión en HTML.
Para ver el estado actual del portapapeles uso (con la palabra "mientras" en el portapapeles).
$ osascript -e "the clipboard as record"
«class utf8»:while, «class ut16»:while, string:while, Unicode text:while
Agrego la variante HTML de la siguiente manera (el HTML está codificado como una cadena hexadecimal):
$ osascript -e "set the clipboard to ((the clipboard as record) & {«class HTML»:«data HTML3c6d65746120636861727365743d277574662d38273e3c7072653e3c7370616e207374796c653d22636f6c6f723a20236364303063643b223e7768696c653c2f7370616e3e3c2f7072653e0a»})"
Después de añadir la variante HTML, el portapapeles contiene:
Unicode text:while,
string:while,
styled Clipboard text:«data styl01000000000010000E00030000000C00000000000000»,
«class utf8»:while,
«class HTML»:«data HTML3C6D65746120636861727365743D277574662D38273E3C7072653E3C7370616E207374796C653D22636F6C6F723A20236364303063643B223E7768696C653C2F7370616E3E3C2F7072653E0A»,
«class ut16»:while
Al pegar esto en Pages (-09) se inserta la versión en texto plano del texto.
Sin embargo, al copiar lo mismo desde el editor de gmail en Chrome se puede pegar con la información resaltada en Pages. En este caso el portapapeles contiene:
«class utf8»:while,
«class HTML»:«data HTML3C6D65746120636861727365743D277574662D38273E3C707265207374796C653D22636F6C6F723A207267622833342C2033342C203334293B20666F6E742D73697A653A20736D616C6C3B20666F6E742D7374796C653A206E6F726D616C3B20666F6E742D76617269616E743A206E6F726D616C3B20666F6E742D7765696768743A206E6F726D616C3B206C65747465722D73706163696E673A206E6F726D616C3B206C696E652D6865696768743A206E6F726D616C3B206F727068616E733A206175746F3B20746578742D616C69676E3A2073746172743B20746578742D696E64656E743A203070783B20746578742D7472616E73666F726D3A206E6F6E653B207769646F77733A20313B20776F72642D73706163696E673A203070783B202D7765626B69742D746578742D7374726F6B652D77696474683A203070783B206261636B67726F756E642D636F6C6F723A20726762283235352C203235352C20323535293B223E3C7370616E207374796C653D22636F6C6F723A20726762283230352C20302C20323035293B223E7768696C653C2F7370616E3E3C2F7072653E»,
«class ut16»:while,
string:while,
Unicode text:while
Mi conclusión es que la diferencia es la styled Clipboard text
entrada.
Así pues, pasemos a la verdadera pregunta. ¿Cómo puedo establecer la entrada HTML sin establecer el styled Clipboard text
entrada.
He probado varios enfoques. Por ejemplo, he intentado configurar el portapapeles para que sólo contenga una cadena y una entrada HTML, pero aún así se incluye la entrada extra. También he tratado de establecer el styled Clipboard text
a la cadena vacía, pero que también establece todas las entradas de texto plano a la cadena vacía también.
No creo que el pbcopy
es lo suficientemente potente como para hacer esto, ya que establece el portapapeles a un nuevo valor.
Aunque actualmente estoy usando applescript para hacer esto, estoy abierto a usar cualquier herramienta disponible, preferiblemente una que se pueda programar (para no tener que pedir a los usuarios que realicen una compilación).