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?
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 a problem of the programm which puts the data in the clipboard.
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 "";
}
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.
来源:https://stackoverflow.com/questions/7105778/get-readable-text-only-from-clipboard