0

AppleScript で以下のシェル スクリプト コードを実行することができ、outpur が正しく生成されました。
シェルスクリプト。

do shell script "mdls 'UAT.pdf' | grep 'kMDItemPageWidth\\|kMDItemPageHeight' | awk '/ = / {for (i = 3; i <= NF; i++) printf \"%s \", $i/72; printf \"\\n\";}'"

スクリプトは基本的に、PDF ドキュメントのプロパティを読み取ります。

これを AutoIT で実行するにはどうすればよいですか。参考やアドバイスをいただければ幸いです。

4

1 に答える 1

1

今、私たちはどこかに到達しています!@ chinna_82、これは私がアドバイスすることです。つまり、これは私が行う方法です (いくつかのスクリプトを AutoIt に移植し、AutoIt を使用してインストーラーを作成しました。これは非常に優れています)。

1) これの移植性が最も低い部分は mdls コマンドです。これは unix/OSX のみであり、Windows バージョンはありませんが、Windows の代替手段がある可能性があります。それについてはもう少し....

2) grep と awk が行っているのは、出力のために mdls が返すものを解析することだけです。これは、AutoIt でコーディングするなど、さまざまな方法で実行できます。はい、これを行っていれば、 Windows バージョンまたは grep と awk の代替 (たとえば、Windows の grep と gawk) を見つけることができますが、それらは比較的単純なことを行っており、AutoIt でそれを行うだけかもしれません (AutoIt の言語を学習するため)。については、 http://www.autoitscript.com/autoit3/docs/を参照してください)。grep と awk の正確な Windows バージョンを見つけるのはおそらく価値がありません。そのためには AutoIt 独自の言語を使用してください。

とにかく、mdls はすべての pdf のメタデータを取得します。次のようなテキストです。

kMDItemAuthors                 = (
    "Flint, Herbert L. (Herbert Longley), b. 1862"
)
kMDItemContentCreationDate     = 2013-10-16 16:07:51 -0700
kMDItemContentModificationDate = 2013-10-16 16:07:52 -0700
kMDItemContentType             = "com.adobe.pdf"
kMDItemContentTypeTree         = (
    "com.adobe.pdf",
    "public.data",
    "public.item",
    "public.composite-content",
    "public.content"
)
kMDItemCreator                 = "Digitized by the Internet Archive"
kMDItemDisplayName             = "practicalinstruc00flin.pdf"
kMDItemEncodingApplications    = (
    "Recoded by LuraDocument PDF v2.53"
)
kMDItemFSContentChangeDate     = 2013-10-16 16:07:52 -0700
kMDItemFSCreationDate          = 2013-10-16 16:07:51 -0700
kMDItemFSCreatorCode           = ""
kMDItemFSFinderFlags           = 0
kMDItemFSHasCustomIcon         = 0
kMDItemFSInvisible             = 0
kMDItemFSIsExtensionHidden     = 0
kMDItemFSIsStationery          = 0
kMDItemFSLabel                 = 0
kMDItemFSName                  = "practicalinstruc00flin.pdf"
kMDItemFSNodeCount             = 0
kMDItemFSOwnerGroupID          = 20
kMDItemFSOwnerUserID           = 501
kMDItemFSSize                  = 12668272
kMDItemFSTypeCode              = ""
kMDItemKeywords                = (
    "http://archive.org/details/practicalinstruc00flin"
)
kMDItemKind                    = "PDF"
kMDItemLastUsedDate            = 2013-10-30 20:00:54 -0700
kMDItemNumberOfPages           = 210
kMDItemPageHeight              = 532
kMDItemPageWidth               = 370
kMDItemSecurityMethod          = "None"
kMDItemTitle                   = "Practical instruction in hypnotism and suggestion"
kMDItemUsedDates               = (
    "2013-10-16 00:00:00 -0700",
    "2013-10-17 00:00:00 -0700",
    "2013-10-30 00:00:00 -0700"
)
kMDItemVersion                 = "1.5"

OSX/Unix コードでは、高さと幅を含む行を返すために grep が使用されています。awk は、その出力の行をさらにフォーマットして出力しています。これはすべて、AppleScript または AutoIt で実行できます。そのために grep と awk は実際には必要ありません。http://www.autoitscript.com/autoit3/docs/functions/StringSplit.htmのような AutoIt の文字列関数を使用するだけです。

では、初期メタデータを返す方法は? たぶんこれでうまくいくでしょう(他にもあるかもしれませんが、今急いでいる必要があります):http://www.pdflabs.com/tools/pdftk-server/

于 2013-10-31T03:28:07.750 に答える