2010-03-30 6 views
13

pbpaste के लिए man पेज के अनुसार से बाहर आरटीएफ डेटा प्राप्त हो रहा, मैक ओएस एक्स पेस्टबोर्ड (क्लिपबोर्ड)

-Prefer {txt | rtf | ps} 
      tells pbpaste what type of data to look for in the pasteboard 
      first. As stated above, pbpaste normally looks first for plain 
      text data; however, by specifying -Prefer ps you can tell 
      pbpaste to look first for Encapsulated PostScript. If you spec- 
      ify -Prefer rtf, pbpaste looks first for Rich Text format. In 
      any case, pbpaste looks for the other formats if the preferred 
      one is not found. The txt option replaces the deprecated ascii 
      option, which continues to function as before. Both indicate a 
      preference for plain text. 

हालांकि (10.6 Snow Leopard कम से कम के साथ मेरा अनुभव में), pbpaste -Prefer rtf कभी नहीं, कभी देता है आरटीएफ डेटा तब भी जब पेस्टबोर्ड पर मौजूद होता है। आरटीएफ पाठ को चिपकने के लिए तैयार होने के लिए कोई और आसान तरीका है?

मैंने ऐप्पलस्क्रिप्ट की कोशिश की, लेकिन osascript -e 'the clipboard as «class RTF »' प्रतिक्रिया «data RTF 7B टन हेक्स एन्कोडेड बकवास 7D» देता है। क्या ऐप्पलस्क्रिप्ट इस हेक्सडाटा को टेक्स्ट में परिवर्तित कर सकता है जिसे मैं खेल सकता हूं?

उत्तर

11

मैं किसी भी तरह AppleScript अंदर से यह करने के लिए नहीं देख सकते हैं के साथ इस बारे में conversation पाया है, लेकिन जब से तुम खोल में काम कर रहे हैं वैसे भी, मैं सिर्फ पोस्ट था इसे संसाधित करें: "हेक्स-एनकोडेड बकवास" वह आरटीएफ डेटा है जिसे आप चाहते हैं। सबसे सरल स्क्रिप्ट मैं के बारे में सोच सकता है

perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))' 

बारे में स्पष्टीकरण: «data RTF और »\n बिट्स बंद substr($_,11,-3) स्ट्रिप्स (guillemets में से प्रत्येक के दो बाइट्स है); pack("H*", ...) हेक्स-एन्कोडेड डेटा को एक बाइटस्ट्रीम में पैक करता है; unpack("C*", ...) चरित्र मूल्यों की एक सरणी में एक bytestream unpacks; print chr foreach ... सरणी में प्रत्येक पूर्णांक को इसके संबंधित चरित्र में परिवर्तित करता है और इसे प्रिंट करता है; और -ne विकल्प प्रत्येक पंक्ति के लिए दी गई स्क्रिप्ट का मूल्यांकन करते हैं, उस पंक्ति के साथ $_ में निहित रूप से संग्रहीत किया जाता है।

osascript -e 'the clipboard as «class RTF »' | \ 
    perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))' 

चल आप कच्चे आरटीएफ उत्पादन दे देंगे (यदि आप अपने स्वयं के फ़ाइल में है कि स्क्रिप्ट चाहते हैं, बस सुनिश्चित कुटिया लाइन #!/usr/bin/perl -ne है।) फिर,।

+1

चालाक दृष्टिकोण। थोड़ा सा सरलीकरण '« कक्षा आरटीएफ »' को केवल स्ट्रिंग '" आरटीएफ "के साथ प्रतिस्थापित करना है (किसी भी मामले में समापन डिलीमीटर से पहले आवश्यक पिछली जगह को नोट करें): 'osascript -e' क्लिपबोर्ड" आरटीएफ "के रूप में | perl -ne 'प्रिंट chr foreach unpack ("सी *", पैक ("एच *", सबस्ट्र ($ _, 11, -3))' '- कम से कम 10.8+ पर काम करता है। यह भी ध्यान रखें कि - डिज़ाइन द्वारा - क्लिपबोर्ड पर कोई आरटीएफ डेटा नहीं होने पर AppleScript कमांड त्रुटि की रिपोर्ट करेगा। – mklement0

+0

मैंने अपने '.profile' में यह वास्तव में आसान उपनाम जोड़ा है:' alias pbpaste-rtf = "osascript -e 'क्लिपबोर्ड \" RTF \ "' | perl -ne 'प्रिंट chr foreach unpack (\" सी * \ ", पैक (\" एच * \ ", सबस्ट्र (\ $ _, 11, -3))) '' '। –

0

मैं एक त्वरित गूगल खोज

+0

"हालांकि आप आरटीएफ को एक स्ट्रिंग के रूप में हेरफेर करने में सक्षम नहीं होंगे AppleScript।" मैंने देखा कि मैंने अपनी पोस्ट में प्रश्न पोस्ट करने से पहले, लेकिन मुझे यह अविश्वसनीय लगता है कि फ़ाइल में लिखने के बिना आरटीएफ डेटा प्राप्त करने का कोई तरीका नहीं है। (मैं एसटीडीओट पर आरटीएफ चाहता हूं, इसलिए मैं इसमें और बदलाव कर सकता हूं।) क्या कोई यह जानने के लिए पर्याप्त ऐप्पलस्क्रिप्ट जानता है कि यह सच है या नहीं? – Carl

+0

यह क्या है कि आप आरटीएफ डेटा के साथ क्या करना चाहते हैं, यह मानते हुए कि डेटा प्राप्त करने का कोई तरीका है? – mcgrailm

+1

इसे HTML पर कनवर्ट करें और HTML को मार्कडाउन में कनवर्ट करें। जाहिर है, मैं बस tempfile कहीं लिख सकता था, लेकिन मैं वास्तव में दोनों प्रदर्शन कारणों और सौंदर्य कारणों के लिए नहीं करना पसंद करेंगे। ऐसा लगता है कि ऐप्पलस्क्रिप्ट को स्वयं डेटा को अन-हेक्स करने का कोई तरीका होना चाहिए। या पेस्टबोर्ड से डेटा प्राप्त करने के लिए कुछ अन्य टूल मौजूद होना चाहिए। – Carl

8

मुझे लगता है कि कम से कम ओएस एक्स 10.8 पर इस करता है, तो आप Chrome से HTML सामग्री की नकल की काम करेगा:

osascript -e 'the clipboard as "HTML"'|perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))' 
+0

+1; अभी भी 10.9 पर काम करता है। – mklement0

+0

अभी भी 10.10 पर काम करता है। –

0

यह AppleScript (10.11 एल कैप्टन में परीक्षण) के माध्यम से बहुत ही आसान है:

set the clipboard to (the clipboard as «class RTF ») 

आप स्वचालक के माध्यम से एक सेवा बना सकते हैं:

  1. खुला स्वचालक
  2. नई सेवा ("Dienst" जर्मन में)
  3. जोड़ें "पर अमल एक AppleScript" बनाने
  4. इनपुट: कुछ भी नहीं है; आउटपुट; चुनाव

की जगह स्क्रिप्ट:

-- name: convert to RTF 
on run {input, parameters} 
    set the clipboard to (the clipboard as «class RTF ») 
    return the clipboard 
end run 

हो गया। अब नई सेवा को सहेजें और इसे आज़माएं: एक टेक्स्ट का चयन करें, फिर एप्लिकेशन मेनू पर जाएं और "सेवाएं"> "आरटीएफ में कनवर्ट करें" चुनें