[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(DTPtechNote:1558) [AS_InDesign CS3]check_fonts
InDesign CS3発売記念
(*
check_fonts
(c)2007 www.seuzo.jp
ドラッグ&ドロップで使用フォント一覧を書き出します。
ver.0.1 2007.06.22 InDesign CS3発売記念
*)
on open of theFiles
set return to ASCII character 10 --LF改行
set my_fonts to "" as Unicode text --使用フォントテキスト
set ind_ver to (("▼InDesignバージョン" & return) as Unicode text) & my ver() & return & return
set my_docs to (("▼検査ドキュメント" & return) as Unicode text) & return
set h to ("▼使用フォント一覧" & return & "フォント名 PS名 タイプ バージョン" & return) as Unicode text
--ファイルのフィルタリング
set my_files to my file_kind({"ind", "indd"}, {"IDd5"}, theFiles)
--ファイル保存ダイアログ
if length of my_files > 0 then
set my_file to (choose file name with prompt "出力ファイルを保存します" default name "font_report.txt")
end if
--ファイルを開いて処理の開始
repeat with i in my_files
tell application "Adobe InDesign CS3"
set user interaction level of script preferences to never interact --ユーザー操作を禁止します
try
open i
set my_docs to (my_docs & (full name of document 1) as Unicode text) & return
on error errMsg number errNum
set user interaction level of script preferences to interact with all --ユーザー操作の再開
my my_error("ファイルを開く際に誤りが起きました;" & i & return & "処理を中断しますか?" & return & errMsg & return & errNum, false)
end try
set my_fonts to my_fonts & my use_fonts() --使用フォントの収集
close document 1 saving no --ファイルを閉じる
set user interaction level of script preferences to interact with all --ユーザー操作の再開
end tell
end repeat
--書き出しテキストの整形
set my_fonts to do shell script "echo " & quoted form of my_fonts & "| sort -u" --ソートして重複行を削除
set my_fonts to ((current date) as Unicode text) & return & return & ind_ver & return & my_docs & return & h & my_fonts
my write_file(my_fonts, my_file) --ファイルの書き出し
--終了の合図
say "Work was finished. " & (length of my_files) & " files were processed."
end open
on run
my doc_exists()
set return to ASCII character 10 --LF改行
set my_fonts to "" as Unicode text --使用フォントテキスト
set ind_ver to (("▼InDesignバージョン" & return) as Unicode text) & my ver() & return & return
set my_docs to (("▼検査ドキュメント" & return) as Unicode text) & return
set h to ("▼使用フォント一覧" & return & "フォント名 PS名 タイプ バージョン" & return) as Unicode text
set my_file to (choose file name with prompt "出力ファイルを保存します" default name "font_report.txt")
--処理の開始
tell application "Adobe InDesign CS3"
set my_docs to (my_docs & (full name of document 1) as Unicode text) & return
set my_fonts to my_fonts & my use_fonts() --使用フォントの収集
end tell
--書き出しテキストの整形
set my_fonts to do shell script "echo " & quoted form of my_fonts & "| sort -u" --ソートして重複行を削除
set my_fonts to ((current date) as Unicode text) & return & return & ind_ver & return & my_docs & return & h & my_fonts
my write_file(my_fonts, my_file) --ファイルの書き出し
end run
--------------------------------------------------------●InDesignバージョン確認ルーチン
to ver()
tell application "Adobe InDesign CS3"
set my_version to (version of script preferences) as real
if my_version < 5 or my_version > 5.9 then
activate
my my_error("このプログラムはInDesign CS3以外では動作しません", true)
end if
return version --アプリケーションバージョンを返す
end tell
end ver
--------------------------------------------------------●ドキュメントが開かれているかどうか
to doc_exists()
tell application "Adobe InDesign CS3"
if not (exists document 1) then
activate
my my_error("ドキュメントが開かれていません", true)
end if
end tell
end doc_exists
----------------------------------------------●必要なファイルだけをフィルタして返します
to file_kind(extention_list, type_list, theFiles)
set my_files to {}
set extention_list to my conv_unicode(extention_list)
set type_list to my conv_unicode(type_list)
ignoring case
tell application "Finder"
repeat with i in theFiles
if extention_list contains ((name extension of i) as Unicode text) then
set end of my_files to contents of i
else if (kind of i) is "フォルダ" as Unicode text then
activate
display dialog "フォルダ「" & (name of i) & "」の中の全ファイルを処理します" buttons {"キャンセル", "OK"} default button 2 with icon 0
set my_files to my_files & my file_kind(extention_list, type_list, every file in folder i)
else if type_list contains ((file type of i) as Unicode text) then
set end of my_files to contents of i
else
activate
display dialog "ファイル「" & (name of i) & "」は処理ファイルとして不適当です" buttons {"キャンセル", "OK"} default button 2 with icon 0
end if
end repeat
end tell
end ignoring
return my_files
end file_kind
----------------------------------●リストの項目をunicode textにする
to conv_unicode(tmp_list)
repeat with i in tmp_list
set contents of i to (contents of i) as Unicode text
end repeat
return tmp_list
end conv_unicode
--------------------------------------------------------●使用フォント一覧を返す
to use_fonts()
set tmp_str to "" as Unicode text
tell application "Adobe InDesign CS3"
tell document 1
repeat with i in every font
set i to object reference of i
set full_name to (full name native of i) as Unicode text
set ps_name to (PostScript name of i) as Unicode text
set font_type to font type of i
if font_type = OpenType CID then --フォントタイプがテキストに変換できないことがある(バグくさい)
set font_type to "OpenType CID"
else if font_type = TrueType then
set font_type to "TrueType"
else if font_type = type 1 then
set font_type to "type 1"
else if font_type = CID then
set font_type to "CID"
else if font_type = ATC then
set font_type to "ATC"
else if font_type = bitmap then
set font_type to "bitmap"
else if font_type = OCF then
set font_type to "OCF"
else if font_type = OpenType CFF then
set font_type to "OpenType CFF"
else if font_type = OpenType TT then
set font_type to "OpenType TT"
else
set font_type to font_type as Unicode text
end if
set v to (version of i) as Unicode text
set tmp_str to tmp_str & full_name & tab & ps_name & tab & font_type & tab & v & return
end repeat
end tell
end tell
return tmp_str
end use_fonts
------------------------------------------★ファイル書き出し
to write_file(str, my_file)
tell application "Finder"
set FH to open for access my_file with write permission
try
set eof FH to 0
write ((ASCII character 254) & (ASCII character 255)) to FH --BOMを書き込む
write str to FH as Unicode text
--write str to FH
on error errMsg number errNo
close access FH
my my_error("書き込み時のエラーです" & return & errMsg & errNo, true)
end try
close access FH
--update my_file
end tell
end write_file
----------------------------------●エラー処理
to my_error(err_str, my_stop)
set err_str to err_str as Unicode text
if my_stop then
set my_stop to {"中止"}
else
set my_stop to {"中止", "続行"}
end if
tell application "Adobe InDesign CS3"
activate
beep
set ANS to button returned of (display dialog err_str buttons my_stop) --警告ダイアログ出してストップ
if ANS is "中止" then error number -128
end tell
end my_error