« [CUPS]CUPSのWEBインターフェイスを有効にしてWEBLOCファイルを生成して開く | トップページ | [pypdf]単ページPDFを3in1 3upに集約する(回転は考慮しない 右から左へ) »

[PostScript]PsファイルをPDFに変換する(少し改良)


【スクリプトエディタで開く】|

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#
#
#com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
##自分環境がos12なので2.8にしているだけです
use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

property refMe : a reference to current application

set appFileManager to refMe's NSFileManager's defaultManager()

#############################
###AcrobatPPDの有無を確認
#############################
set ocidUserPathArray to (appFileManager's URLsForDirectory:(refMe's NSUserDirectory) inDomains:(refMe's NSLocalDomainMask))
set ocidUserPathURL to ocidUserPathArray's objectAtIndex:0
set ocidPPDFilePathURL to ocidUserPathURL's URLByAppendingPathComponent:"Shared/Library/Printers/PPDs/Contents/Resources/Acrobat/ADPDF9J.PPD" isDirectory:true
set boolFileExists to (appFileManager's fileExistsAtPath:(ocidPPDFilePathURL's |path|()) isDirectory:false)

############PPDファイルの有無チェック
if boolFileExists is true then
  log "PPDはインストール済み"
  set strPPDsFilePath to ocidPPDFilePathURL's |path|() as text
else
  ########################
  ###無い場合はダウンロード
  set ocidSaveDirPathURL to ocidUserPathURL's URLByAppendingPathComponent:"Shared/Library/Printers/PPDs/Contents/Resources/Acrobat" isDirectory:true
  set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
ocidAttrDict's setValue:511 forKey:(refMe's NSFilePosixPermissions)
  set listResults to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error|:(reference)
  #### ダウンロード
  set strZipFileURL to "https://quicktimer.cocolog-nifty.com/icefloe/files/acrobat.zip"
  set ocidZipFilePath to (refMe's NSString's stringWithString:(strZipFileURL))
  set ocidZipFilePathURL to refMe's NSURL's alloc()'s initWithString:(ocidZipFilePath)
  set ocidZipData to refMe's NSData's dataWithContentsOfURL:(ocidZipFilePathURL)
  ##保存
  set ocidTempDirPathURL to appFileManager's temporaryDirectory()
  set ocidSaveZipFilePathURL to ocidTempDirPathURL's URLByAppendingPathComponent:"acrobatppds.zip" isDirectory:false
  set boolResults to ocidZipData's writeToURL:(ocidSaveZipFilePathURL) atomically:true
  
  if boolResults is false then
return "ダウンロードに失敗しました"
  end if
  #### 解凍
  set strZipFilePathURL to ocidSaveZipFilePathURL's |path|() as text
  set strSaveDirPathURL to (ocidSaveDirPathURL's URLByDeletingLastPathComponent())'s |path|() as text
  try
    set theComandText to ("/usr/bin/ditto -xk \"" & strZipFilePathURL & "\"   \"" & strSaveDirPathURL & "\"") as text
    do shell script theComandText
  end try
end if
#############################
#####ファイル選択ダイアログ
#############################
###ダイアログを前面に出す
tell current application
  set strName to name as text
end tell
####スクリプトメニューから実行したら
if strName is "osascript" then
  tell application "Finder"
    activate
  end tell
else
  tell current application
    activate
  end tell
end if
###ダイアログのデフォルト
set ocidUserDesktopPath to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
set aliasDefaultLocation to ocidUserDesktopPath as alias
tell application "Finder"
  
end tell
set listChooseFileUTI to {"com.adobe.postscript"}
set strPromptText to "ファイルを選んでください" as text
set listAliasFilePath to (choose file with prompt strPromptText default location (aliasDefaultLocation) of type listChooseFileUTI with invisibles and multiple selections allowed without showing package contents) as list



repeat with itemAliasFilePath in listAliasFilePath
  ###エイリアス
  set aliasFilePath to itemAliasFilePath as alias
  ###パステキスト
  set strFilePath to (POSIX path of aliasFilePath) as text
  ####入力ファイルパス確定
  set strInputFilePath to strFilePath as text
  ###パス
  set ocidFilePath to (refMe's NSString's stringWithString:strFilePath)
  ###NSURL
  set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:ocidFilePath)
  ###ファイル名
  set ocidFileName to ocidFilePathURL's lastPathComponent()
  ###拡張子を取ったベースファイル名
  set strBaseFileName to ocidFileName's stringByDeletingPathExtension() as text
  ####入力ファイルの1階層上のフォルダURL
  set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent()
  ####ディレクトリのURLコンポーネント
  set strContainerDirPath to ocidContainerDirPathURL's |path|() as text
  
  ####出力ファイル名
  set strNewFileName to (strBaseFileName & ".pdf") as text
  ####ディレクトリのURLコンポーネント
  set ocidNewFilePathURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:strNewFileName)
  ####ファイルの有無チェック
  set boolFileExist to (ocidNewFilePathURL's checkResourceIsReachableAndReturnError:(missing value)) as boolean
  ###すでに同名ファイルがある場合は日付時間入りのファイル名
  if boolFileExist is true then
    ####日付情報の取得
    set ocidDate to refMe's NSDate's |date|()
    ###日付のフォーマットを定義
    set ocidNSDateFormatter to refMe's NSDateFormatter's alloc()'s init()
(ocidNSDateFormatter's setDateFormat:"yyyyMMdd-hhmm")
    set ocidDateAndTime to (ocidNSDateFormatter's stringFromDate:ocidDate)
    set strDateAndTime to ocidDateAndTime as text
    ####ファイル名に日付を入れる
    set strNewFilePath to (strContainerDirPath & "/" & strBaseFileName & "." & strDateAndTime & ".pdf") as text
  else
    ####出力ファイルパス
    set strNewFilePath to (strContainerDirPath & "/" & strNewFileName & "") as text
  end if
  ################################################
  ####コマンドパス
  set strBinPath to "/usr/sbin/cupsfilter"
  #####コマンド整形
  set strCommandText to ("\"" & strBinPath & "\" -f \"" & strInputFilePath & "\" -m \"application/pdf\" -p \"" & strPPDsFilePath & "\" -e -t \"" & strBaseFileName & "\" > \"" & strNewFilePath & "\"")
  ####ターミナルで開く
  tell application "Terminal"
    launch
    activate
    set objWindowID to (do script "\n\n")
    delay 1
do script strCommandText in objWindowID
  end tell
end repeat




|

« [CUPS]CUPSのWEBインターフェイスを有効にしてWEBLOCファイルを生成して開く | トップページ | [pypdf]単ページPDFを3in1 3upに集約する(回転は考慮しない 右から左へ) »

AppleScript PostScript」カテゴリの記事