AppleScript PDFnUP

[pypdf]PDF8UP

ダウンロード - pdfPDF8UP回転考慮.zip

|

[pypdf]PDF3UP

ダウンロード PDF3UP回転考慮.zip

|

[pypdf]単ページPDFを3in1 3upに集約する(回転は考慮しない 左から右へ)

ダウンロード - pdf3upl2r.zip


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

#!/usr/bin/env python3
import sys
import math
from pypdf import PdfReader
from pypdf import PdfWriter
from pypdf import PageObject
from pypdf import Transformation
from pypdf.generic import RectangleObject

#########################################入力パスを受け取る
argGetData = sys.argv
strFilePath = str(argGetData[1])
#テスト用
# strFilePath = "/path/to/some/pdf/file.pdf"

strOutputPDFDocPath = strFilePath + ".3in1.pdf"
try:
  with open(strFilePath, 'rb') as objInputData:
#########################################ライター初期化
    objReader = PdfReader(objInputData)
    objWriter = PdfWriter()
#########################################ページ数調べる
    objAllPages = objReader.pages
    numAllPage = int(len(objAllPages))
    print(numAllPage)
#########################################奇数偶数判定使わないけど
    if numAllPage % 2 == 0:
      print("偶数")
    else:
      print("奇数")
    numRepeatTImes = math.ceil(numAllPage / 3 )
    print(numRepeatTImes)
#########################################ページ数➗2回数繰り返し
    numCntInPage = int(0)
    for numTimes in range(numRepeatTImes):
#########################################右側ページ
      objPageR = objReader.pages[numCntInPage]
      numWR = objPageR.mediabox.right
      numHR = objPageR.mediabox.top
      print("R :" , numWR , "x" , numHR)
#########################################センターページ
      if numCntInPage == (numAllPage - 1):
objPageC = PageObject.create_blank_page(width=numWR, height=numHR)
numWC = objPageR.mediabox.right
numHC = objPageR.mediabox.top
      else:
numCntInPage = numCntInPage + 1
objPageC = objReader.pages[numCntInPage]
numWC = objPageC.mediabox.right
numHC = objPageC.mediabox.top
print("C :" , numWC , "x" , numHC)
numCntInPage = numCntInPage + 1
#########################################左ページ
      if numCntInPage == numAllPage:
objPageL = PageObject.create_blank_page(width=numWR, height=numHR)
numWL = objPageR.mediabox.right
numHL = objPageR.mediabox.top
      else:
objPageL = objReader.pages[numCntInPage]
numWL = objPageL.mediabox.right
numHL = objPageL.mediabox.top
print("L :" , numWL , "x" , numHL)
numCntInPage = numCntInPage + 1
#########################################新規ページの高さは最大値
      if numHR >= numHL:
numNewH = numHR
      else:
numNewH = numHL
#########################################新規ページの幅
      numNewW = numWL + numWL + numWC
#########################################3Wサイズで新規ページ
      print("3W:" , numNewW , "x" , numNewH)
      objNewPage = PageObject.create_blank_page(None,numNewW,numNewH)
#########################################左側ページを新規ページに
      objOption = Transformation().translate(tx=(numWL + numWC))
      objPageL.add_transformation(objOption,True)
      objPageL.mediabox = RectangleObject((0,0,numNewW,numNewH))
      objPageL.cropbox = RectangleObject((0,0,numNewW,numNewH))
      objPageL.trimbox = RectangleObject((0,0,numNewW,numNewH))
      objPageL.bleedbox = RectangleObject((0,0,numNewW,numNewH))
      objPageL.artbox = RectangleObject((0,0,numNewW,numNewH))
      objNewPage.merge_page(objPageL,False)
#########################################中央ページを新規ページに
      objOption = Transformation().translate(tx=numWL)
      objPageC.add_transformation(objOption,True)
      objPageC.mediabox = RectangleObject((0,0,numNewW,numNewH))
      objPageC.cropbox = RectangleObject((0,0,numNewW,numNewH))
      objPageC.trimbox = RectangleObject((0,0,numNewW,numNewH))
      objPageC.bleedbox = RectangleObject((0,0,numNewW,numNewH))
      objPageC.artbox = RectangleObject((0,0,numNewW,numNewH))
      objNewPage.merge_page(objPageC,False)
#########################################右側ページのリサイズ
      objOption = Transformation().translate(tx=0)
      objPageR.add_transformation(objOption,True)
      objPageR.mediabox = RectangleObject((0,0,numNewW,numNewH))
      objPageR.cropbox = RectangleObject((0,0,numNewW,numNewH))
      objPageR.trimbox = RectangleObject((0,0,numNewW,numNewH))
      objPageR.bleedbox = RectangleObject((0,0,numNewW,numNewH))
      objPageR.artbox = RectangleObject((0,0,numNewW,numNewH))
      objNewPage.merge_page(objPageR,True)
#########################################新規ページのサイズ
      objNewPage.mediabox = RectangleObject((0,0,numNewW,numNewH))
      objNewPage.cropbox = RectangleObject((0,0,numNewW,numNewH))
      objNewPage.trimbox = RectangleObject((0,0,numNewW,numNewH))
      objNewPage.bleedbox = RectangleObject((0,0,numNewW,numNewH))
      objNewPage.artbox = RectangleObject((0,0,numNewW,numNewH))
      objWriter.add_page(objNewPage)
except FileNotFoundError:
  print("ファイルのオープンに失敗しました")
  sys.exit(0)
try:
#########################################
  with open(strOutputPDFDocPath, 'wb') as objOutPutData:
    objWriter.write(objOutPutData)
except FileNotFoundError:
    print("ファイルの保存に失敗しました")

sys.exit(0)



|

[pypdf]単ページPDFを3in1 3upに集約する(回転は考慮しない 右から左へ)

ダウンロード - pdf3upr2l.zip


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

#!/usr/bin/env python3
import sys
import math
from pypdf import PdfReader
from pypdf import PdfWriter
from pypdf import PageObject
from pypdf import Transformation
from pypdf.generic import RectangleObject

#########################################入力パスを受け取る
argGetData = sys.argv
strFilePath = str(argGetData[1])
#テスト用
# strFilePath = "/path/to/pdf/some.pdf"

strOutputPDFDocPath = strFilePath + ".3in1.pdf"
try:
  with open(strFilePath, 'rb') as objInputData:
#########################################ライター初期化
    objReader = PdfReader(objInputData)
    objWriter = PdfWriter()
#########################################ページ数調べる
    objAllPages = objReader.pages
    numAllPage = int(len(objAllPages))
    print(numAllPage)
#########################################奇数偶数判定使わないけど
    if numAllPage % 2 == 0:
      print("偶数")
    else:
      print("奇数")
    numRepeatTImes = math.ceil(numAllPage / 3 )
    print(numRepeatTImes)
#########################################ページ数➗2回数繰り返し
    numCntInPage = int(0)
    for numTimes in range(numRepeatTImes):
#########################################右側ページ
      objPageR = objReader.pages[numCntInPage]
      numWR = objPageR.mediabox.right
      numHR = objPageR.mediabox.top
      print("R :" , numWR , "x" , numHR)
#########################################センターページ
      if numCntInPage == (numAllPage - 1):
objPageC = PageObject.create_blank_page(width=numWR, height=numHR)
numWC = objPageR.mediabox.right
numHC = objPageR.mediabox.top
      else:
numCntInPage = numCntInPage + 1
objPageC = objReader.pages[numCntInPage]
numWC = objPageC.mediabox.right
numHC = objPageC.mediabox.top
print("C :" , numWC , "x" , numHC)
numCntInPage = numCntInPage + 1
#########################################左ページ
      if numCntInPage == numAllPage:
objPageL = PageObject.create_blank_page(width=numWR, height=numHR)
numWL = objPageR.mediabox.right
numHL = objPageR.mediabox.top
      else:
objPageL = objReader.pages[numCntInPage]
numWL = objPageL.mediabox.right
numHL = objPageL.mediabox.top
print("L :" , numWL , "x" , numHL)
numCntInPage = numCntInPage + 1
#########################################新規ページの高さは最大値
      if numHR >= numHL:
numNewH = numHR
      else:
numNewH = numHL
#########################################新規ページの幅
      numNewW = numWL + numWL + numWC
#########################################3Wサイズで新規ページ
      print("3W:" , numNewW , "x" , numNewH)
      objNewPage = PageObject.create_blank_page(None,numNewW,numNewH)
#########################################左側ページを新規ページに
      objOption = Transformation().translate(tx=0)
      objPageL.add_transformation(objOption,True)
      objPageL.mediabox = RectangleObject((0,0,numNewW,numNewH))
      objPageL.cropbox = RectangleObject((0,0,numNewW,numNewH))
      objPageL.trimbox = RectangleObject((0,0,numNewW,numNewH))
      objPageL.bleedbox = RectangleObject((0,0,numNewW,numNewH))
      objPageL.artbox = RectangleObject((0,0,numNewW,numNewH))
      objNewPage.merge_page(objPageL,False)
#########################################中央ページを新規ページに
      objOption = Transformation().translate(tx=numWL)
      objPageC.add_transformation(objOption,True)
      objPageC.mediabox = RectangleObject((0,0,numNewW,numNewH))
      objPageC.cropbox = RectangleObject((0,0,numNewW,numNewH))
      objPageC.trimbox = RectangleObject((0,0,numNewW,numNewH))
      objPageC.bleedbox = RectangleObject((0,0,numNewW,numNewH))
      objPageC.artbox = RectangleObject((0,0,numNewW,numNewH))
      objNewPage.merge_page(objPageC,False)
#########################################右側ページのリサイズ
      objOption = Transformation().translate(tx=(numWL + numWC))
      objPageR.add_transformation(objOption,True)
      objPageR.mediabox = RectangleObject((0,0,numNewW,numNewH))
      objPageR.cropbox = RectangleObject((0,0,numNewW,numNewH))
      objPageR.trimbox = RectangleObject((0,0,numNewW,numNewH))
      objPageR.bleedbox = RectangleObject((0,0,numNewW,numNewH))
      objPageR.artbox = RectangleObject((0,0,numNewW,numNewH))
      objNewPage.merge_page(objPageR,True)
#########################################新規ページのサイズ
      objNewPage.mediabox = RectangleObject((0,0,numNewW,numNewH))
      objNewPage.cropbox = RectangleObject((0,0,numNewW,numNewH))
      objNewPage.trimbox = RectangleObject((0,0,numNewW,numNewH))
      objNewPage.bleedbox = RectangleObject((0,0,numNewW,numNewH))
      objNewPage.artbox = RectangleObject((0,0,numNewW,numNewH))
      objWriter.add_page(objNewPage)
except FileNotFoundError:
  print("ファイルのオープンに失敗しました")
  sys.exit(0)
try:
#########################################
  with open(strOutputPDFDocPath, 'wb') as objOutPutData:
    objWriter.write(objOutPutData)
except FileNotFoundError:
    print("ファイルの保存に失敗しました")

sys.exit(0)



|

[Foxit PDF Reader]集約PDF(Nup)を作成する

1:ファイル>>印刷
2:プロパティ
3:詳細画面
4:レイアウト
5:希望の面付け設定を選ぶ
6:PDFとして保存を選択
7:保存先とファイル名を選択(上書き注意)
8:保存(自動で閉じます)
9:プリントボタンを押す
10:指定先に集約PDFが作成されます



_20220819_22_16_21

_20220819_22_16_32

_20220819_22_16_38

_20220819_22_16_47

_20220819_22_16_56

_20220819_22_17_02
_20220819_22_17_36

_20220819_22_17_44

|

[Preview]PDFを集約(pdfNup3.py)

ダウンロード - pdfe99b86e7b484nuppreview.zip

#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#Preview
#
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7

use AppleScript version "2.8"
use framework "Foundation"
use scripting additions


####集約リスト
set listNup to {2, 4, 8, 9, 16, 18} as list

####ダイアログ
try
set objResponse to (choose from list listNup with title "選んでください" with prompt "1ページにNページ集約するか?" default items (item 1 of listNup) OK button name "OK" cancel button name "キャンセル" with multiple selections allowed without empty selection allowed)
on error
log "エラーしました"
return
end try
if objResponse is false then
return
end if
####戻り値確定
set numNup to (objResponse) as text

####集約向きリスト
set listDirs to {"LU", "LD", "RU", "RD"} as list
###ダイアログ
try
set objResponse to (choose from list listDirs with title "選んでください" with prompt "LU右下->右上\nLD右上->右下※\nRU左下->左上\nRD左上->左下※\n通常上から下です" default items (item 2 of listDirs) OK button name "OK" cancel button name "キャンセル" with multiple selections allowed without empty selection allowed)
on error
log "エラーしました"
return
end try
if objResponse is false then
return
end if
####戻り値確定
set strDirs to (objResponse) as text

####パス取得
tell application "Finder"
set aliasPathToMe to (container of (path to me)) as alias
set thePathToMe to (POSIX path of aliasPathToMe) as Unicode text
end tell
###コマンドへのパス
set strPyPath to ("" & thePathToMe & "bin/pdfNup.py")
####パスを取得
tell application "Preview"
tell window 1
properties
tell document 1
set strFilePath to path
set strFileName to name
end tell
end tell
end tell
###ファイル名とパス
set strDistName to doReplace(strFileName, ".pdf", "") as text
set strDistFileName to ("" & strDistName & "-" & numNup & "up.pdf") as text
####保存先パス
set aliasFilePath to (POSIX file strFilePath) as alias
set theFileDir to (POSIX path of aliasFilePath) as Unicode text
####ファイルの上書き警告と停止
tell application "Finder"
set aliasDistDir to (container of aliasFilePath) as alias
set boolFileExists to exists (file strDistFileName of folder aliasDistDir)
if boolFileExists is true then
display alert "エラー:ファイルがすでにあります移動してください" buttons {"OK", "キャンセル"} default button "OK" as informational giving up after 10
return
end if
end tell
###パス確定
set strFilePath to POSIX path of aliasFilePath as text
####コマンド整形
set strCommandText to ("python3 \"" & strPyPath & "\" \"" & strFilePath & "\" " & numNup & " " & strDirs & "") as text
###ログ
log strCommandText
###コマンド実行
do shell script strCommandText

delay 3
###ファイルがあれば開く
tell application "Finder"
set aliasDistDir to (container of aliasFilePath) as alias
set boolFileExists to exists (file strDistFileName of folder aliasDistDir)
if boolFileExists is true then
set aliasDistFile to (file strDistFileName of folder aliasDistDir) as alias
tell application "Preview"
open aliasDistFile
end tell
end if
end tell



###置き換えのサブ
to doReplace(theText, orgStr, newStr)
set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to orgStr
set tmpList to every text item of theText
set AppleScript's text item delimiters to newStr
set tmpStr to tmpList as text
set AppleScript's text item delimiters to oldDelim
return tmpStr
end doReplace


#!/usr/bin/env python3

# coding: utf-8

##from datetime import datetime

##import os

import sys

import urllib.parse

######

from pdfnup import generateNup

## 

##generateNup("test-legal-p.pdf", 8, verbose=True)



argGetData = sys.argv

strFilePath = str(argGetData[1])

numNup = int(argGetData[2])

strDirs = str(argGetData[3])



##generateNup(strFilePath, 2,  verbose=True)


##右ページ->左ページの読み順

##下から上に

##generateNup(strFilePath, 2, dirs="RU", verbose=True)

##上から下に

##generateNup(strFilePath, 2, dirs="RD", verbose=True)


##左ページ-->右ページ 

##下から上に

##generateNup(strFilePath, 4, dirs="LU", verbose=True)

##上から下に

##generateNup(strFilePath, 4, dirs="LD", verbose=True)


print(strFilePath)

print(numNup)

print(strDirs)


if strDirs == "RU":

    generateNup( strFilePath , numNup , dirs="RU", verbose=True)

elif strDirs == "RD":

    generateNup( strFilePath , numNup , dirs="RD", verbose=True)

elif strDirs == "LU":

    generateNup( strFilePath , numNup , dirs="LU", verbose=True)

elif strDirs == "LD":

    generateNup( strFilePath , numNup , dirs="LD", verbose=True)



##generateNup( strFilePath , numNup , dirs="'strDirs'" , verbose=True)


##

|

[python]PDFを集約(pdfNup3.py)

ダウンロード - pdfe99b86e7b484nup.zip



#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#
#
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7

use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

####選んでもらうリスト
set listNup to {2, 4, 8, 9, 16, 18} as list
###ダイアログ
try
set objResponse to (choose from list listNup with title "選んでください" with prompt "1ページにNページ集約するか?" default items (item 1 of listNup) OK button name "OK" cancel button name "キャンセル" with multiple selections allowed without empty selection allowed)
on error
log "エラーしました"
return
end try
if objResponse is false then
return
end if
####戻り値確定
set numNup to (objResponse) as text


####選んでもらうリスト
set listDirs to {"LU", "LD", "RU", "RD"} as list
####ダイアログ
try
set objResponse to (choose from list listDirs with title "選んでください" with prompt "LU右下->右上\nLD右上->右下※\nRU左下->左上\nRD左上->左下※\n通常上から下です" default items (item 2 of listDirs) OK button name "OK" cancel button name "キャンセル" with multiple selections allowed without empty selection allowed)
on error
log "エラーしました"
return
end try
if objResponse is false then
return
end if
####戻り値確定
set strDirs to (objResponse) as text

####パス整形
tell application "Finder"
set aliasPathToMe to (container of (path to me)) as alias
set thePathToMe to (POSIX path of aliasPathToMe) as Unicode text
end tell
####コマンドへのパス
set strPyPath to ("" & thePathToMe & "bin/pdfNup.py")
#####ページ数があればファイルを開いている
tell application "Adobe Acrobat"
activate
tell active doc
tell PDF Window 1
####ページ数
try
set numAllPages to count of every page
on error
display alert "エラー:pdfを開いていません" buttons {"OK", "キャンセル"} default button "OK" as informational giving up after 10
return
end try
end tell
create thumbs
end tell
end tell
############
#####開いているファイルのパスを取得する
tell application "Adobe Acrobat"
activate
tell active doc
set aliasFilePath to file alias as alias
set strFileName to name as text
end tell
end tell
#####保存先のパスを設定して
set strDistName to doReplace(strFileName, ".pdf", "") as text
set strDistFileName to ("" & strDistName & "-" & numNup & "up.pdf") as text
set theFileDir to (POSIX path of aliasFilePath) as Unicode text
#####同名ファイルがある場合は中止
tell application "Finder"
set aliasDistDir to (container of aliasFilePath) as alias
set boolFileExists to exists (file strDistFileName of folder aliasDistDir)
if boolFileExists is true then
display alert "エラー:ファイルがすでにあります移動してください" buttons {"OK", "キャンセル"} default button "OK" as informational giving up after 10
return
end if
end tell
#####ファイルパス確定
set strFilePath to POSIX path of aliasFilePath as text
#####コマンドライン整形
set strCommandText to ("python3 \"" & strPyPath & "\" \"" & strFilePath & "\" " & numNup & " " & strDirs & "") as text
log strCommandText
#####コマンド実行
do shell script strCommandText
####出来上がったファイルを開く
tell application "Finder"
set aliasDistDir to (container of aliasFilePath) as alias
set boolFileExists to exists (file strDistFileName of folder aliasDistDir)
if boolFileExists is true then
set aliasDistFile to (file strDistFileName of folder aliasDistDir) as alias
tell application "Adobe Acrobat"
activate
open aliasDistFile
end tell
end if
end tell
######集約完了



####拡張子おきかえで使うサブ
to doReplace(theText, orgStr, newStr)
set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to orgStr
set tmpList to every text item of theText
set AppleScript's text item delimiters to newStr
set tmpStr to tmpList as text
set AppleScript's text item delimiters to oldDelim
return tmpStr
end doReplace


#!/usr/bin/env python3

# coding: utf-8

##from datetime import datetime

##import os

import sys

import urllib.parse

######

from pdfnup import generateNup

## 

##generateNup("test-legal-p.pdf", 8, verbose=True)


argGetData = sys.argv

strFilePath = str(argGetData[1])

numNup = int(argGetData[2])

strDirs = str(argGetData[3])


##generateNup(strFilePath, 2,  verbose=True)


##右ページ->左ページの読み順

##下から上に

##generateNup(strFilePath, 2, dirs="RU", verbose=True)

##上から下に

##generateNup(strFilePath, 2, dirs="RD", verbose=True)


##左ページ-->右ページ 

##下から上に

##generateNup(strFilePath, 4, dirs="LU", verbose=True)

##上から下に

##generateNup(strFilePath, 4, dirs="LD", verbose=True)


print(strFilePath)

print(numNup)

print(strDirs)



if strDirs == "RU":

    generateNup( strFilePath , numNup , dirs="RU", verbose=True)

elif strDirs == "RD":

    generateNup( strFilePath , numNup , dirs="RD", verbose=True)

elif strDirs == "LU":

    generateNup( strFilePath , numNup , dirs="LU", verbose=True)

elif strDirs == "LD":

    generateNup( strFilePath , numNup , dirs="LD", verbose=True)


##

|

[python]8UP(8in1)PDFを作成する(how to make 8in1 PDF)その2

pdfnup3
https://pypi.org/project/pdfnup3/
こちらを利用する事でサクッと作成します



ダウンロード - 8in1acrobat.zip

ダウンロード - 8in1preview.zip


#!/usr/bin/env osascript
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
#
#8upPDF右から左
#
#
# com.cocolog-nifty.quicktimer.icefloe
----+----1----+----2----+-----3----+----4----+----5----+----6----+----7

use AppleScript version "2.8"
use framework "Foundation"
use scripting additions

tell application "Finder"

####開いたスクリプトまでのパスのディレクトリ
set aliasPathToMe to (container of (path to me)) as alias

####そのパス
set thePathToMe to (POSIX path of aliasPathToMe) as Unicode text
end tell

####pyファイルまでのパス
set strPyPath to ("" & thePathToMe & "bin/pdfnup3r.py")


############ここまで定型

tell application "Preview"

tell window 1
properties
tell document 1
####プレビューで開いているファイルパス
set strFilePath to path
####ファイル名
set strFileName to name
end tell
end tell
end tell

####出来上がり時のファイル名
set strDistName to doReplace(strFileName, ".pdf", "") as text
set strDistFileName to ("" & strDistName & "-8up.pdf") as text


####すでにファイルがある場合は止める
tell application "Finder"
set aliasFilePath to (POSIX file strFilePath) as alias
set aliasDistDir to (container of aliasFilePath) as alias
set boolFileExists to exists (file strDistFileName of folder aliasDistDir)
if boolFileExists is true then
display alert "エラー:ファイルがすでにあります移動してください" buttons {"OK", "キャンセル"} default button "OK" as informational giving up after 10
return
end if

end tell

####ファイルのパス
set strFilePath to POSIX path of aliasFilePath as text

####コマンド実行
set strCommandText to ("python3 \"" & strPyPath & "\" \"" & strFilePath & "\"") as text
do shell script strCommandText





to doReplace(theText, orgStr, newStr)
set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to orgStr
set tmpList to every text item of theText
set AppleScript's text item delimiters to newStr
set tmpStr to tmpList as text
set AppleScript's text item delimiters to oldDelim
return tmpStr
end doReplace

|

その他のカテゴリー

Acrobat Acrobat Annotation Acrobat Dialog Acrobat Form Acrobat JS Acrobat Open Acrobat Plugin Acrobat python Acrobat Reader Acrobat Sequ Acrobat Stamps Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin System Information Admin Tools Admin Users Admin Volumes Adobe Apple AppleScript AppleScript Guide AppleScript Accessibility AppleScript AppKit AppleScript Applications AppleScript AppStore AppleScript Archive AppleScript Attributes AppleScript Automator AppleScript AVAsset AppleScript AVconvert AppleScript AVFoundation AppleScript AVURLAsset AppleScript BackUp AppleScript Barcode AppleScript Bash AppleScript Basic AppleScript Basic Path AppleScript Bluetooth AppleScript BOX AppleScript Browser AppleScript Calendar AppleScript CD/DVD AppleScript Choose AppleScript Chrome AppleScript CIImage AppleScript CloudStorage AppleScript Color AppleScript com.apple.LaunchServices.OpenWith AppleScript Console AppleScript Contacts AppleScript CotEditor AppleScript CURL AppleScript current application AppleScript Date&Time AppleScript delimiters AppleScript Desktop AppleScript Device AppleScript Disk AppleScript do shell script AppleScript Dock AppleScript DropBox AppleScript eMail AppleScript Encode Decode AppleScript Error AppleScript EXIFData AppleScript ffmpeg AppleScript File AppleScript Finder AppleScript Firefox AppleScript Folder AppleScript Fonts AppleScript GIF AppleScript HTML AppleScript Icon AppleScript Illustrator AppleScript Image Events AppleScript Image2PDF AppleScript ImageOptim Applescript iWork AppleScript Javascript AppleScript Jedit AppleScript Json AppleScript Label AppleScript List AppleScript locationd AppleScript LRC AppleScript LSSharedFileList AppleScript m3u8 AppleScript MakePDF AppleScript Map AppleScript Math AppleScript Microsoft AppleScript Microsoft Edge AppleScript Microsoft Excel AppleScript Mobileconfig AppleScript Mouse AppleScript Movie AppleScript Music AppleScript NetWork AppleScript Notes AppleScript NSArray AppleScript NSBitmapImageRep AppleScript NSBundle AppleScript NSCFBoolean AppleScript NSCharacterSet AppleScript NSColor AppleScript NSColorList AppleScript NSData AppleScript NSDictionary AppleScript NSError AppleScript NSEvent AppleScript NSFileAttributes AppleScript NSFileManager AppleScript NSFont AppleScript NSFontManager AppleScript NSImage AppleScript NSIndex AppleScript NSKeyedArchiver AppleScript NSKeyedUnarchiver AppleScript NSLocale AppleScript NSMutableArray AppleScript NSMutableDictionary AppleScript NSMutableString AppleScript NSNotFound AppleScript NSNumber AppleScript NSOpenPanel AppleScript NSPasteboard AppleScript NSPDFImageRep AppleScript NSpoint AppleScript NSPredicate AppleScript NSRange AppleScript NSRegularExpression AppleScript NSRunningApplication AppleScript NSScreen AppleScript NSSize AppleScript NSString AppleScript NSStringCompareOptions AppleScript NSTask AppleScript NSTimeZone AppleScript NSURL AppleScript NSURL File AppleScript NSURLBookmark AppleScript NSURLComponents AppleScript NSURLResourceKey AppleScript NSUserDefaults AppleScript NSUUID AppleScript NSView AppleScript NSWorkspace AppleScript Numbers AppleScript OAuth AppleScript ObjC AppleScript OneDrive AppleScript Osax AppleScript PDF AppleScript PDFAnnotationWidget AppleScript PDFContext AppleScript PDFDisplayBox AppleScript PDFDocumentPermissions AppleScript PDFKit AppleScript PDFnUP AppleScript PDFOutline AppleScript Photos AppleScript Photoshop AppleScript Plist System Events AppleScript PostScript AppleScript prefPane AppleScript Preview AppleScript Python AppleScript QR AppleScript QR Decode AppleScript QuickLook AppleScript QuickTime AppleScript record AppleScript Regular Expression AppleScript Reminders AppleScript ReName AppleScript Repeat AppleScript RTF AppleScript Safari AppleScript SaveFile AppleScript ScreenCapture AppleScript ScreenSaver AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript Sort AppleScript Sound AppleScript Spotlight AppleScript SRT AppleScript StandardAdditions AppleScript stringByApplyingTransform AppleScript System Events AppleScript System Settings AppleScript TemporaryItems AppleScript Terminal AppleScript Text AppleScript Text CSV AppleScript Text TSV AppleScript TextEdit AppleScript Translate AppleScript Trash AppleScript Twitter AppleScript UI AppleScript Unit Conversion AppleScript UTType AppleScript valueForKeyPath AppleScript Video AppleScript VisionKit AppleScript Visual Studio Code AppleScript webarchive AppleScript webp AppleScript Wifi AppleScript XML AppleScript XML EPUB AppleScript XML OPML AppleScript XML Plist AppleScript XML RSS AppleScript XML SVG AppleScript XML TTML AppleScript XML webloc AppleScript YouTube AppleScript Zero Suppress Applications Barcode OnLine Tools CityCode Design iPhone List Logs lsappinfo Memo Music perl PlistBuddy pluginkit postalcode ReadMe SF Symbols character id SF Symbols Entity sips Skype Slack sqlite TCC Tools Typography Video Wacom zoom