Establecer un tipo de portapapeles sin configurar "texto de portapapeles con estilo"

1

Estoy desarrollando una herramienta para agregar una versión de HTML de un texto al portapapeles. Actualmente, estoy usando applecript para manipular el portapapeles.

Lamentablemente, me di cuenta de que además de las entradas que le pido que agregue, también agrega la entrada styled Clipboard text . Creo que esto hace que las aplicaciones como Pages no puedan pegar la versión con HTML.

Para ver el estado actual del portapapeles que uso (con la palabra "while" 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 agregar 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 las páginas (-09), se inserta la versión de texto sin formato del texto.

Sin embargo, al copiar lo mismo desde el editor de gmail en Chrome, se puede pegar con información de resaltado en Páginas. 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 entrada styled Clipboard text .

Por lo tanto, a la pregunta real. ¿Cómo puedo configurar la entrada HTML sin configurar la entrada styled Clipboard text ?

He intentado varios enfoques. Por ejemplo, he intentado configurar el portapapeles para que solo contenga una cadena y una entrada HTML, pero aún se incluye la entrada adicional. También he intentado establecer la entrada styled Clipboard text en la cadena vacía, pero eso también establece todas las entradas de texto sin formato en la cadena vacía.

No creo que la herramienta de línea de comando pbcopy sea lo suficientemente poderosa para hacer esto, ya que establece el portapapeles en un nuevo valor.

Aunque actualmente estoy usando applecript para hacer esto, estoy abierto a usar cualquier herramienta disponible, preferiblemente una de script (para que no tenga que pedir a los usuarios que realicen una compilación).

    
pregunta Lindydancer 26.06.2015 - 05:44

1 respuesta

1

Después de algunas investigaciones, descubrí que puedes manipular el Pasteboard de Python, sin tener que introducir la entrada styled Clipboard text . reimplementé el módulo ruby / applescript en Python, así que ahora puedo copiar la sintaxis resalte el texto de Emacs y péguelo en aplicaciones simples como la ventana de terminal o aplicaciones que pueden manejar texto con formato, como Páginas.

    
respondido por el Lindydancer 26.06.2015 - 20:17

Lea otras preguntas en las etiquetas