Pergunta

Tenho um aplicativo XULRunner que precisa copiar os dados da imagem para a área de transferência.Eu descobri como copiar texto para a área de transferência e posso colar dados PNG da área de transferência.O que não consigo descobrir é como colocar dados de um URL de dados na área de transferência para que possam ser colados em outros aplicativos.

Este é o código que uso para copiar texto (bem, XUL):

var transferObject=Components.classes["@mozilla.org/widget/transferable;1"].
    createInstance(Components.interfaces.nsITransferable);

var stringWrapper=Components.classes["@mozilla.org/supports-string;1"].
    createInstance(Components.interfaces.nsISupportsString);

var systemClipboard=Components.classes["@mozilla.org/widget/clipboard;1"].
    createInstance(Components.interfaces.nsIClipboard);

var objToSerialize=aDOMNode;

transferObject.addDataFlavor("text/xul");

var xmls=new XMLSerializer();
var serializedObj=xmls.serializeToString(objToSerialize);

stringWrapper.data=serializedObj;

transferObject.setTransferData("text/xul",stringWrapper,serializedObj.length*2);

E, como eu disse, os dados que estou tentando transferir são um PNG como URL de dados.Então, estou procurando o equivalente ao acima que permitirá, por ex.Paint.NET para colar os dados do meu aplicativo.

Foi útil?

Solução

Aqui está uma solução alternativa que acabei usando e que resolve muito bem o problema.A variável dataURL é a imagem que eu estava tentando colocar na área de transferência em primeiro lugar.

var newImg=document.createElement('img');
newImg.src=dataURL;

document.popupNode=newImg;

var command='cmd_copyImageContents'

var controller=document.commandDispatcher.getControllerForCommand(command);

if(controller && controller.isCommandEnabled(command)){
    controller.doCommand(command);
}

Isso copia a imagem para a área de transferência como uma 'imagem/jpg'.

Outras dicas

Neal Deakin tem um artigo sobre manipulação da área de transferência em xulrunner.Não tenho certeza se isso responde especificamente à sua pergunta, mas definitivamente vale a pena conferir.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top