getting clipboard content as rawdata  
Author Message
oliv





PostPosted: 2007-3-23 0:31:00 Top

java-programmer, getting clipboard content as rawdata I am within a java application (swing), and
I would like to get the content of user clipboard as rawdata (binary
byte array) without trying to figure out what flavor it is. I just
need to get the bytes and post them to a server.
(It can part of word doc or xls - server will try to convert that into
an image)
Does that question makes any sens (since I haven't seen a way to do
that within java.awt.datatransfer api) ?


thanks

 
Thomas Fritsch





PostPosted: 2007-3-23 3:23:00 Top

java-programmer >> getting clipboard content as rawdata email***@***.com wrote:
> I am within a java application (swing), and
> I would like to get the content of user clipboard as rawdata (binary
> byte array) without trying to figure out what flavor it is. I just
> need to get the bytes and post them to a server.
> (It can part of word doc or xls - server will try to convert that into
> an image)
> Does that question makes any sens (since I haven't seen a way to do
> that within java.awt.datatransfer api) ?

// get the clipboard contents
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable transferable = clipboard.getContents(null);

// dump out all available flavors
DataFlavor[] flavors = transferable.getTransferDataFlavors();
for (int i = 0; i < flavors.length; i++) {
System.out.println(flavors[i]);
}
// If the clipboard contains part of a Word-doc or an Excel-Sheet,
// you'll get dozens of different flavors here, for example:
// DataFlavor[mimetype=text/rtf;representationclass=java.io.InputStream]
// DataFlavor[mimetype=text/rtf;representationclass=[B]
// DataFlavor[mimetype=text/plain;representationclass=[B;charset=Cp1252]

// get the contents in one of the flavors (RTF InputStream)
DataFlavor flavor = new
DataFlavor("text/rtf;class=java.io.InputStream");
InputStream stream = (InputStream) transferable.getTransferData(flavor);
// ... read the bytes from the stream...

--
Thomas
 
Thomas Fritsch





PostPosted: 2007-3-23 16:23:00 Top

java-programmer >> getting clipboard content as rawdata Thomas Fritsch wrote:
> // If the clipboard contains part of a Word-doc or an Excel-Sheet,
> // you'll get dozens of different flavors here, for example:
> // DataFlavor[mimetype=text/rtf;representationclass=java.io.InputStream]
> // DataFlavor[mimetype=text/rtf;representationclass=[B]
> // DataFlavor[mimetype=text/plain;representationclass=[B;charset=Cp1252]
>
> // get the contents in one of the flavors (RTF InputStream)
> DataFlavor flavor = new
> DataFlavor("text/rtf;class=java.io.InputStream");
> InputStream stream = (InputStream) transferable.getTransferData(flavor);
> // ... read the bytes from the stream...
>
It is especially cumbersome to get the byte[] and char[] flavors. You
have to specify them as "[B" or "[C", respectively. For example:
DataFlavor flavor = new
DataFlavor("text/plain;class=\"[B\";charset=Cp1252");
byte[] b = (byte[]) transferable.getTransferData(flavor);
(Ask Sun why they didn't write about that in the API docs of DataFlavor.)

--
Thomas