画像データをクリップボードにPDF形式で入れる
AppleScript サンプルコード
行番号 | ソース |
---|---|
001 | #! /usr/bin/env osascript |
002 | ----+----1----+----2----+-----3----+----4----+----5----+----6----+----7 |
003 | # |
004 | # com.cocolog-nifty.quicktimer.icefloe |
005 | ----+----1----+----2----+-----3----+----4----+----5----+----6----+----7 |
006 | use AppleScript version "2.8" |
007 | use framework "Foundation" |
008 | use framework "AppKit" |
009 | use framework "PDFKit" |
010 | use scripting additions |
011 | |
012 | property refMe : a reference to current application |
013 | |
014 | ################################ |
015 | #ダイアログ |
016 | set strName to (name of current application) as text |
017 | if strName is "osascript" then |
018 | tell application "Finder" to activate |
019 | else |
020 | tell current application to activate |
021 | end if |
022 | |
023 | set appFileManager to refMe's NSFileManager's defaultManager() |
024 | set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask)) |
025 | set ocidDesktopDirPathURL to ocidURLsArray's firstObject() |
026 | set aliasDesktopDirPath to (ocidDesktopDirPathURL's absoluteURL()) as alias |
027 | set listUTI to {"public.image"} |
028 | set strMes to ("ファイルを選んでください") as text |
029 | set strPrompt to ("ファイルを選んでください") as text |
030 | try |
031 | ### ファイル選択時 |
032 | set aliasFilePath to (choose file strMes with prompt strPrompt default location (aliasDesktopDirPath) of type listUTI with invisibles and showing package contents without multiple selections allowed) as alias |
033 | on error |
034 | log "エラーしました" |
035 | return "エラーしました" |
036 | end try |
037 | |
038 | ################################ |
039 | #入力パス |
040 | set strFilePath to (POSIX path of aliasFilePath) as text |
041 | set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath) |
042 | set ocidFilePath to ocidFilePathStr's stringByStandardizingPath() |
043 | set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false) |
044 | |
045 | ################################ |
046 | #NSData's |
047 | set ocidOption to (refMe's NSDataReadingMappedIfSafe) |
048 | set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidFilePathURL) options:(ocidOption) |error| :(reference) |
049 | if (item 2 of listResponse) = (missing value) then |
050 | log "正常処理" |
051 | set ocidReadData to (item 1 of listResponse) |
052 | else if (item 2 of listResponse) ≠ (missing value) then |
053 | set strErrorNO to (item 2 of listDone)'s code() as text |
054 | set strErrorMes to (item 2 of listDone)'s localizedDescription() as text |
055 | refMe's NSLog("■:" & strErrorNO & strErrorMes) |
056 | return "エラーしました" & strErrorNO & strErrorMes |
057 | end if |
058 | ################################ |
059 | #NSImage's |
060 | set ocidReadImage to refMe's NSImage's alloc()'s initWithData:(ocidReadData) |
061 | |
062 | ################################ |
063 | #PDFPage's |
064 | set ocidPDFPage to refMe's PDFPage's alloc()'s initWithImage:(ocidReadImage) |
065 | |
066 | ################################ |
067 | #PDFDocument's |
068 | set ocidPDFDoc to refMe's PDFDocument's alloc()'s init() |
069 | ocidPDFDoc's insertPage:(ocidPDFPage) atIndex:(0) |
070 | |
071 | ################################ |
072 | #NSData |
073 | set ocidPDFData to ocidPDFDoc's dataRepresentation() |
074 | |
075 | ################################ |
076 | #ペーストボード宣言 |
077 | set appPasteboard to refMe's NSPasteboard's generalPasteboard() |
078 | appPasteboard's clearContents() |
079 | #基本はPDF |
080 | appPasteboard's setData:(ocidPDFData) forType:(refMe's NSPasteboardTypePDF) |
081 | #アノテーション形式で入れれば大丈夫か?と思ったがダメだった |
082 | #appPasteboard's setData:(ocidPDFData) forType:("com.apple.AnnotationKit.AnnotationItem") |
083 | #基本系 |
084 | #appPasteboard's setData:(ocidPDFData) forType:("Apple PDF pasteboard type") |
085 | #PDFのUTI指定 |
086 | #appPasteboard's setData:(ocidPDFData) forType:("com.adobe.pdf") |
087 | #QTのクリップボードデータ(FoxIt) |
088 | #appPasteboard's setData:(ocidPDFData) forType:("com.trolltech.anymime.FPMDATA") |
089 | #Acrobatのスタンプデータ |
090 | #appPasteboard's setData:(ocidPDFData) forType:("ASEL") |
091 | |
AppleScriptで生成しました |
| 固定リンク
「NSPasteboard」カテゴリの記事
- クリップボード内のテキストに改行を<br />に変更して戻す 修正(2024.11.15)
- ペーストボードの内容の種類の確認(2024.10.06)
- [NSPasteboard]ペーストボードからテキストの取り出し(修正)(2024.07.02)
- 画像データをクリップボードにPDF形式で入れる(2024.06.28)
- クリップボードの中身で保存可能なものをファイルに保存する(2024.06.23)