2011-08-18 23 views
41

से पठनीय पाठ प्राप्त करें मुझे पहले से ही पता है कि जावा में क्लिपबोर्ड से सादा पाठ कैसे प्राप्त किया जाए, लेकिन कभी-कभी टेक्स्ट कुछ अजीब DataFlavor में एन्कोड किया गया है, जैसे कि जब Microsoft Word से कॉपी हो या किसी वेबसाइट से या ग्रहण से स्रोत कोड भी ।केवल क्लिपबोर्ड

इन DataFlavor से शुद्ध सादा पाठ निकालने के लिए कैसे?

+5

धन्यवाद, लेकिन मैं एक जावा समाधान के लिए देख रहा हूँ, जावास्क्रिप्ट नहीं – clamp

उत्तर

49
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); 

getData() विधि और स्ट्रिंगफ्लॉवर के साथ आपको क्लिपबोर्ड से सादा पाठ प्राप्त करना चाहिए।

यदि क्लिपबोर्ड में अजीब पाठ है, तो मुझे लगता है कि यह प्रोग्राम की समस्या होनी चाहिए जो क्लिपबोर्ड में डेटा डालती है।

+0

हम कैसे करते हो हम पाठ style..eg प्राप्त करना चाहते हैं, तो , बोल्ड, इटैलिक ... –

+2

चेतावनी: उपर्युक्त कोड का उपयोग करके आप इस ज्ञात जावा बग http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6606476 (जैसा मैंने किया था) को हिट कर सकते हैं और कोई काम नहीं है चारों ओर। सौभाग्य से मेरे पास पर्ल स्थापित है और इसलिए मैं क्लिपबोर्ड सामग्री को सादे पाठ में सेट करने के लिए एक पर्ल स्क्रिप्ट का आह्वान कर सकता हूं। :( –

+0

@SteveWaring उस अजीब अचूक त्रुटि पर सिर के लिए धन्यवाद। अभी तक इसका परीक्षण नहीं किया है, लेकिन मैं ड्रैगन 8 के समाधान का प्रयास करते समय System.err स्ट्रीम को शून्य और नल पॉइंटर्स को पकड़ने का सुझाव दूंगा। (बेशक डॉन ' जब इसे पूरा किया जाता है तो इसे सामान्य पर वापस सेट करना भूल जाते हैं^_ ^) – ThatOneGuy

0

सबसे पहले मैं क्लिपबोर्ड के साथ काम नहीं किया है, लेकिन इस

intresting से http://docstore.mik.ua/orelly/java/awt/ch16_01.htm

"क्लिपबोर्ड से डाटा पढ़ने के लिए लगता है, एक कार्यक्रम Transferable.getTransferData() विधि कहते हैं। डेटा का प्रतिनिधित्व करती है, तो डेटाफ्लेवर द्वारा जो जावा क्लास (उदाहरण के लिए, plainTextFlavor) के अनुरूप नहीं है, getTransferData() डेटा को पढ़ने के लिए आपके लिए इनपुटस्ट्रीम देता है। "

तो यदि आप इसे एक कक्षा देते हैं जो आपको प्रतिक्रिया नहीं देता है तो आप इनपुटस्ट्रीम प्राप्त करते हैं और फिर आप इनपुटस्ट्रीम से "शुद्ध" टेक्स्ट पढ़ सकते हैं।

+0

[DataFlavor.plainTextFlavor] (http://docs.oracle.com/javase/7/docs/api/java/awt/datatransfer/DataFlavor.html#plainTextFlavor) जावा 1.3 के बाद से बहिष्कृत है। – Huxi

1

आप निम्न विधि का उपयोग कर सकते हैं जावा में पाठ क्लिपबोर्ड हो रही:

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 ""; 
} 
संबंधित मुद्दे