Archive for the 'NSPrinter' Category

2014/11/27 10.10でプリンタの情報を取得する

ASOCでCocoaの機能を呼び出してプリンタの情報を取得するAppleScriptです。

NSPrinterのドキュメントをながめつつ、いろいろ突っついてみていますが・・・Deprecatedだと書かれている機能がまだ呼び出せるようで、プリンターがカラーかどうか、紙排出時に逆方向に(裏面?)出せるかなど調べられるようです。

AppleScript名:10.10でプリンタの情報を取得する
– Created 2014-11-27 by Takaaki Naganoya
– 2014 Piyomaru Software
use AppleScript version “2.4″
use scripting additions
use framework “Foundation”
use framework “ASObjCExtras”
use framework “AppKit”

–Get Printer Names
set pArray to current application’s NSPrinter’s printerNames
set pList to (pArray’s ASify()) as list
–> {”KING JIM TEPRA PRO SR3700P”, “NEC MultiWriter 5750C @ MBA13″, “PDFwriter”, “PM-T960-1″}

–Get Printer Type (Driver Name?)
set tArray to current application’s NSPrinter’s printerTypes
set tList to (tArray’s ASify()) as list
–> {”TEPRA PRO SR3700P”, “NEC MultiWriter 5750C v2.4″, “Lisanet PDFwriter”, “EPSON PM-T960″}

set colorPinterList to {}

repeat with i in pList
  set j to contents of i
  
  
–Is it a Printer?
  
set aPrinter to (current application’s NSPrinter’s printerWithName:j)
  
set aDesc to aPrinter’s deviceDescription
  
set aRec to aDesc’s ASify() as record
  
–> {NSDeviceIsPrinter:”YES”}
  
  
  
–Is it a Color Printer?
  
set aColor to (aPrinter’s isColor()) as boolean –isColor() deprecated? It works
  
if aColor = true then
    set the end of colorPinterList to j
  end if
  
end repeat

colorPinterList
–> {”NEC MultiWriter 5750C @ MBA13″, “PDFwriter”, “PM-T960-1″}

★Click Here to Open This Script 

2014/11/27 10.10でプリンタを選択して印刷

ASOCで、現在Macに接続されているプリンターの名称一覧を取得して、印刷を行うサンプルです。

一般的なアプリケーションでの印刷を意図しており、InDesignなどのAdobe系アプリケーションを意図しているものではありません(仕組みや機能が全然別物)。

LAN上で共有されているプリンター(”NEC MultiWriter 5750C @ MBA13”)を指定してみたところ、問題なく印刷できました。

プリンタ名称については、lpstatコマンドで取得した名称一覧とは返ってくる文字列が違う(”NEC_MultiWriter_5750C___MBA13”)のですが、、、どちらでも問題ありませんでした。

AppleScript名:10.10でプリンタを選択して印刷
– Created 2014-11-27 by Takaaki Naganoya
– 2014 Piyomaru Software
use AppleScript version “2.4″
use scripting additions
use framework “Foundation”
use framework “ASObjCExtras”
use framework “AppKit”

set pArray to current application’s NSPrinter’s printerNames
set pList to (pArray’s ASify()) as list
–> {”KING JIM TEPRA PRO SR3700P”, “NEC MultiWriter 5750C @ MBA13″, “PDFwriter”, “PM-T960-1″}

set aPrinter to first item of (choose from list pList with prompt “出力先のプリンタを選択してください”)

tell application “Safari”
  tell front document
    set aPrintSetting to {copies:1, starting page:1, ending page:9999, target printer:aPrinter}
    
print with properties aPrintSetting without print dialog
  end tell
end tell

★Click Here to Open This Script