Get readable text only from clipboard

JavaClipboard

Java 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 DataFlavors?

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionclampView Question on Stackoverflow
Solution 1 - JavaDragon8View Answer on Stackoverflow
Solution 2 - JavaMihir PatelView Answer on Stackoverflow
Solution 3 - JavaFarmorView Answer on Stackoverflow