Archive for the 'Gapplin' Category

2014/01/29 SVGビューワーGapplin v1.2がAppleScriptに対応

SVG(Scalable Vector Graphic)の画像ビューワー「Gapplin」がバージョン1.2でAppleScriptに対応しました。

gapplin.png

SVGはテキスト(XML)ベースのグラフィックデータ形式であり、テキスト処理によりスケーラブルな(拡大縮小自在な)ベクターグラフィックを生成できるフォーマットとして、標準化され(ひそかに)普及しています。メジャーなアプリケーションでは、Adobe IllustratorがSVGの読み書きに対応しています。また、主要なWebブラウザはSVGの表示に対応しています。

このSVGのビューワー(編集はテキストエディットなどで別途行う)であるGapplinがAppleScriptに対応したので、ダウンロードして初見でいろいろいじくってみました。SVGについても、西暦2000年前後に「そういうものが出てきた」という情報を仕入れて以来、久しくさわっていません。

GapplinはWebKitを用いてSVGのプレビューを行っており、同じくWebkitを用いているOS X 10.9.1上のSafari 7.0.x上では、SVG v1.1に準拠しているようです(確認したら、Color Profile以外はだいたいサポートされている雰囲気)。GapplinもOS X 10.9上ではSVG v1.1に対応していることが期待されます。

スクリプト名:Gapplinのアプリケーションの情報を取得
tell application “Gapplin”
  properties
  
–> {frontmost:false, class:application, name:”Gapplin”, version:”1.2″}
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

スクリプト名:GapplinでdocumnetとWindowの情報を取得
tell application “Gapplin”
  –オープン中のdocumentオブジェクトの調査
  
set dCount to count every document
  
repeat with i from 1 to dCount
    tell document i
      properties
      
–> {modified:false, source:”
      
–ドキュメントのプロパティを取得すると、SVGのソースが取得できることがわかった
      
    end tell
  end repeat
  
  
–オープン中のWindowオブジェクトの調査
  
set wCount to count every window –見えないWindowまでカウントできてしまうので注意
  
repeat with i from 1 to wCount
    tell window i
      properties
      
–> {zoomable:true, scale:1.0, dark mode:false, zoomed:false, closeable:true, class:window, index:1, visible:true, name:”TestSampleAlpha002.svg”, miniaturizable:true, id:954, miniaturized:false, resizable:true, bounds:{32, 37, 452, 548}, document:document “TestSampleAlpha002.svg”}
    end tell
  end repeat
  
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

SVGとSVGZのファイル形式変換

本アプリのネイティブフォーマットとしてSVGとSVGZ(圧縮SVG画像)を扱えるようです。SVG画像をオープンしてSVGZに変換する機能(あるいはその反対)がGUI側に存在しています。

AppleScript側でSVG/SVGZの変換を行うには、saveコマンドを用いて「as SVG」か「as SVGZ」を指定することでそれぞれの形式を指定したファイルの作成を行えばよいようです(オープン中のSVG画像をSVGZ画像に変換するコマンドはAppleScript用語辞書の中には存在せず)。

……各オブジェクトのプロパティを調査してみたら、documentオブジェクトのcompressed属性がr/o表示になっていません。おもむろに、同属性をfalseからtrueに変更したら、SVGからSVGZに変換されました。保存時に形式を変更するよりも簡単そうです。

SVG書類が存在しているフォルダ内に同名のSVGZ書類が存在する場合には……GUI側から操作するとエラー表示されますが、AppleScript側から操作すると、同名のファイルを削除してからごていねいに変換を行ってくれます(ちょっと驚きました)。

スクリプト名:GapplinでSVGからSVGZへの変換
tell application “Gapplin”
  tell document 1
    set compressed to true –SVGからSVGZへの変換
  end tell
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

スクリプト名:GapplinでSVGZからSVGへの変換
tell application “Gapplin”
  tell document 1
    set compressed to false –SVGZからSVGへの変換
  end tell
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に

他のファイル形式への変換

SVG/SVGZ形式のファイルをPNG、TIFF、PDFに変換して書き出すことが可能です。
PNG/TIFFについては、原寸からどの程度大きさを変えるかをexportコマンドのscaleオプションで指定可能です。

……が、私の環境ではファイルパスを(拡張子まで)指定してexportさせてみましたが、AppleScriptの実行はエラーも出さずに終了するのですが、ファイル自体が実際には書き出されませんでした。GUIからは「書き出し」を行えるものの、AppleScriptからexportコマンドを実行してもダメでした。

exportコマンドが正常に動作するようになれば、大量のSVGファイルの一括変換をGapplinを用いて行うことができるようになるでしょう。いま一歩といったところです。

スクリプト名:選択したSVG書類をオープンしてTIFF形式で書き出し
tell application “Gapplin”
  close every document saving no –ねんのため、オープン中の書類をすべてクローズ
end tell

set aFile to choose file of type {“public.svg-image”} –オープンするSVG書類を選択

set newDocPath to choose file name –変換後のファイル名
set newDocPath to newDocPath as string

tell application “Gapplin”
  open aFile
  
  
tell window 1
    set dark mode to false
  end tell
  
  
tell document 1
    export to file newDocPath as TIFF
  end tell
  
end tell

▼新規書類に ▼カーソル位置に ▼ドキュメント末尾に