0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

macrubyでクリップボードからHTMLとしてテキストを取り出す

Last updated at Posted at 2013-05-20

背景

ブラウザで選択したテキストをHTMLとして、取り出したく作ってみました。
が、ブラウザでそもそもそういうことが出来たりしてる気も。。。

何はなくともCocoaフレームワークの指定

framework 'Cocoa'

ペーストボードを取得

OSXではペーストボードと呼んでる臭い

p = NSPasteboard.generalPasteboard;

HTML形式で格納されているデータを取り出すには

data = p.dataForType(NSHTMLPboardType);
if( data )
attrString = NSString.alloc.initWithData(data,encoding:NSUTF8StringEncoding);
puts attrString;
end

リッチテキスト形式で格納されているかも

OSXで動くブラウザによってはHTML形式ではなく、リッチテキスト形式で格納されているものもあった。

HTML形式には簡単?に以下の様にNSAttributeStringを介して変換出来た。

data = p.dataForType(NSRTFPboardType);
if( data )
attrString = NSAttributedString.alloc.initWithRTF(data,documentAttributes:nil)
attributeDict = {NSDocumentTypeDocumentAttribute=>NSHTMLTextDocumentType}
htmlData = attrString.dataFromRange(NSMakeRange(0, attrString.length()),documentAttributes:attributeDict,error:nil)
htmlString = NSString.alloc.initWithData(htmlData,encoding:NSUTF8StringEncoding)
puts htmlString
end

プレインテキストで格納されている場合

この場合、HTMLとしては取り出せませんが、、、

data = p.dataForType(NSStringPboardType);
if( data )
puts data
end

どうやら、上記は10.5以前の古い定数を利用していた模様

NSHTMLPboardType,NSRTFPboardTypeは、
10.6以降は NSPasteboardTypeHTML,NSPasteboardTypeRTF
を使う模様。

参考リンク

関連記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?