23

manのページによるとpbpaste

   -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 rtfRTF データがペーストボードに存在する場合でも、RTF データを放棄することは決してありません。貼り付ける準備ができているものの RTF テキストを取得する他の簡単な方法はありますか?

AppleScript を試してみましたが、16 進数でエンコードされた craposascript -e 'the clipboard as «class RTF »'の応答トンが返されます。AppleScript は、この hexdata を私が扱えるテキストに変換できますか?«data RTF 7B7D»

4

5 に答える 5

17

AppleScript の内部からそれを行う方法はわかりませんが、とにかくシェルで作業しているので、後処理するだけです。「16 進数でエンコードされたがらくた」は、必要な RTF データです。私が考えることができる最も簡単なスクリプトは

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

説明:ビットとビットsubstr($_,11,-3)を取り除きます (各ギレメットは 2 バイトです)。16 進数でエンコードされたデータをバイトストリームにパックします。バイトストリームを文字値の配列にアンパックします。配列内の各整数を対応する文字に変換して出力します。オプションは、各行に指定されたスクリプトを評価し、その行は暗黙的に に格納されます。(そのスクリプトを独自のファイルに入れたい場合は、シバン行が であることを確認してください。)次に、実行中«data RTF»\npack("H*", ...)unpack("C*", ...)print chr foreach ...-ne$_#!/usr/bin/perl -ne

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

生のRTF出力が得られます。

于 2010-03-30T20:23:06.713 に答える
0

簡単なグーグル検索でこれについての会話を見つけました

于 2010-03-30T14:03:29.133 に答える