Get readable text only from clipboard
JavaClipboardJava Problem Overview
I already know how to get plain text from the clipboard in Java, but sometimes the text is encoded in some weird DataFlavor
, like when copying from Microsoft Word or from a website or even source code from Eclipse.
How to extract pure plain text from these DataFlavor
s?
Java Solutions
Solution 1 - Java
import java.awt.HeadlessException;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
String data = (String) Toolkit.getDefaultToolkit()
.getSystemClipboard().getData(DataFlavor.stringFlavor);
with the getData()
Method and the stringFlavor
you should get plain text from the clipboard.
If there are weird text in the clipboard, I think, this should be a problem of the program which puts the data in the clipboard.
Solution 2 - Java
You can use following method getting clipboard text in Java:
public String getClipBoard(){
try {
return (String)Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
} catch (HeadlessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedFlavorException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
Solution 3 - Java
First I haven't worked with clipboard but this seems intresting
From http://docstore.mik.ua/orelly/java/awt/ch16_01.htm
"To read data from the clipboard, a program calls the Transferable.getTransferData() method. If the data is represented by a DataFlavor that doesn't correspond to a Java class (for example, plainTextFlavor), getTransferData() returns an InputStream for you to read the data from."
So if you give it a class which doesn't correspont you get the InputStream and then you can read the "pure" text from the InputStream yourself.