« モジュールインストール(修正 リピート処理にした) | トップページ | [XML]Epub編集 »

[python3]PDFに埋め込まれているフォント名を一覧取得する

ダウンロード - pdfembeddedfontname.zip


試す場合は↑こちらをダウンロードしてセットアップしてから利用してください


あくまでも参考にしてください

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

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# ファイルをpyファイルに渡すだけの補助スクリプト
005#
006#com.cocolog-nifty.quicktimer.icefloe
007----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
008use AppleScript version "2.8"
009use framework "Foundation"
010use scripting additions
011
012property refMe : a reference to current application
013
014####スクリプトメニューから実行したら
015tell current application
016  set strName to name as text
017end tell
018if strName is "osascript" then
019  tell application "Finder"
020    activate
021  end tell
022else
023  tell current application
024    activate
025  end tell
026end if
027####UTIリスト PDFのみ
028set listUTI to {"com.adobe.pdf"}
029set aliasDefaultLocation to (path to desktop folder from user domain) as alias
030####ダイアログを出す
031set aliasFilePath to (choose file with prompt "PDFファイルを選んでください" default location (aliasDefaultLocation) of type listUTI with invisibles and showing package contents without multiple selections allowed) as alias
032####PDFのパス
033set strFilePath to POSIX path of aliasFilePath
034set ocidFilePathStr to (refMe's NSString's stringWithString:strFilePath)
035set ocidFilePath to ocidFilePathStr's stringByStandardizingPath
036set ocidFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:ocidFilePath isDirectory:false)
037set strFilePath to (ocidFilePathURL's |path|()) as text
038
039###ディレクトリ 起動時に削除されます
040set appFileManager to refMe's NSFileManager's defaultManager()
041set ocidTempDirURL to appFileManager's temporaryDirectory()
042set ocidUUID to refMe's NSUUID's alloc()'s init()
043set ocidUUIDString to ocidUUID's UUIDString
044set ocidSaveDirPathURL to ocidTempDirURL's URLByAppendingPathComponent:(ocidUUIDString) isDirectory:(true)
045#フォルダ生成
046set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
047# アクセス権777
048ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions)
049set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error| :(reference)
050#パス
051set strFileName to ("doGetFontName.py") as text
052set ocidSaveFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strFileName) isDirectory:(false)
053set ocidPythonBinPath to (ocidSaveFilePathURL's |path|())
054set strPythonBinPath to (ocidPythonBinPath) as text
055#使用するスクリプト
056set strPyScript to ("#! /usr/bin/env python3\n# coding: utf-8\nimport sys\nimport fitz\nargGetData = sys.argv\npdf_file_path = str(argGetData[1])\nlist_fontname = set()\ndoc = fitz.open(pdf_file_path)\nfor page_num in range(len(doc)):\n    num_page = doc.load_page(page_num)\n    list_fonts = num_page.get_fonts()\n    for item_font in list_fonts:\n        str_font_name = item_font[3].split(\"+\")[-1]\n        list_fontname.add(str_font_name)\nprint(\"\t\".join(map(str, list_fontname)))\nsys.exit(0)\n") as text
057set ocidPyScript to refMe's NSString's stringWithString:(strPyScript)
058#保存
059set listDone to ocidPyScript's writeToURL:(ocidSaveFilePathURL) atomically:(true) encoding:(refMe's NSUTF8StringEncoding) |error| :(reference)
060if (item 1 of listDone) is true then
061  log "保存 正常処理"
062else if (item 2 of listDone) ≠ (missing value) then
063  log (item 2 of listDone)'s code() as text
064  log (item 2 of listDone)'s localizedDescription() as text
065  return "保存 エラーしました"
066end if
067#アクセス権 755
068ocidAttrDict's setValue:(493) forKey:(refMe's NSFilePosixPermissions)
069set listDone to appFileManager's setAttributes:(ocidAttrDict) ofItemAtPath:(ocidPythonBinPath) |error| :(reference)
070if (item 1 of listDone) is true then
071  log "アクセス権 正常処理"
072else if (item 2 of listDone) ≠ (missing value) then
073  log (item 2 of listDone)'s code() as text
074  log (item 2 of listDone)'s localizedDescription() as text
075  return "アクセス権 エラーしました"
076end if
077################################
078#python3のパスチェック
079try
080  set strCmdText to ("/usr/bin/which python3") as text
081  set strBinPath to (do shell script strCmdText) as text
082on error
083log "セットアップを実行してください"
084try
085  do shell script "/usr/bin/xcode-select --install"
086end try
087  return "python3が見つかりませんでした終了します"
088end try
089
090####添付する場合binディレクトリ内を参照する場合
091(*
092tell application "Finder"
093  set aliasPathToMe to (path to me) as alias
094end tell
095#パス
096set strPathToMe to (POSIX path of aliasPathToMe) as text
097set strPathToMeStr to refMe's NSString's stringWithString:(strPathToMe)
098set ocidPathToMe to strPathToMeStr's stringByStandardizingPath()
099set ocidPathToMeURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidPathToMe) isDirectory:false)
100set ocidContainerDirURL to ocidPathToMeURL's URLByDeletingLastPathComponent()
101set ocidBinDirPathURL to ocidContainerDirURL's URLByAppendingPathComponent:("bin") isDirectory:true
102set ocidBinFilePathURL to ocidBinDirPathURL's URLByAppendingPathComponent:(strBinFileName)
103set strPythonBinPath to ocidBinFilePathURL's |path| as text
104*)
105try
106  set strCommandText to ("\"" & strPythonBinPath & "\" \"" & strFilePath & "\"") as text
107  ##  set strCommandText to ("\"" & strPythonBinPath & "\"") as text
108  set strResponse to (do shell script strCommandText) as text
109on error
110  return "コマンドでエラーしました"
111end try
112#戻り値をテキストにして
113set ocidResponse to refMe's NSString's stringWithString:(strResponse)
114#Arrayに
115set ocidFontNameArray to ocidResponse's componentsSeparatedByString:("\t")
116#ソートして
117set ocidSortedArray to ocidFontNameArray's sortedArrayUsingSelector:("localizedStandardCompare:")
118#改行テキストにする
119set ocidOutPutString to ocidSortedArray's componentsJoinedByString:("\n")
120
121##############################
122#####ダイアログ
123##############################
124tell current application
125  set strName to name as text
126end tell
127####スクリプトメニューから実行したら
128if strName is "osascript" then
129  tell application "Finder"
130    activate
131  end tell
132else
133  tell current application
134    activate
135  end tell
136end if
137set strMes to ("埋め込みフォント名です") as text
138set aliasIconPath to (POSIX file "/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/ProfileFont.icns") as alias
139try
140  set recordResult to (display dialog strMes with title "戻り値です" default answer (ocidOutPutString as text) buttons {"クリップボードにコピー", "終了", "再実行"} default button "再実行" cancel button "終了" giving up after 20 with icon aliasIconPath without hidden answer) as record
141on error
142  return "エラーしました"
143end try
144if (gave up of recordResult) is true then
145  return "時間切れです"
146end if
147##############################
148#####自分自身を再実行
149##############################
150if button returned of recordResult is "再実行" then
151  tell application "Finder"
152    set aliasPathToMe to (path to me) as alias
153  end tell
154  run script aliasPathToMe with parameters "再実行"
155end if
156##############################
157#####値のコピー
158##############################
159if button returned of recordResult is "クリップボードにコピー" then
160  try
161    set strText to text returned of recordResult as text
162    ####ペーストボード宣言
163    set appPasteboard to refMe's NSPasteboard's generalPasteboard()
164    set ocidText to (refMe's NSString's stringWithString:(strText))
165    appPasteboard's clearContents()
166    appPasteboard's setString:(ocidText) forType:(refMe's NSPasteboardTypeString)
167  on error
168    tell application "Finder"
169      set the clipboard to strText as text
170    end tell
171  end try
172end if
173
174
175return 0
AppleScriptで生成しました

|

« モジュールインストール(修正 リピート処理にした) | トップページ | [XML]Epub編集 »

AppleScript PDF」カテゴリの記事

AppleScript Fonts」カテゴリの記事