0

我设法在applescript中的shell脚本代码下运行并且正确生成了输出。
外壳脚本。

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 来做这件事。您只需要使用 AutoIt 的字符串函数,例如http://www.autoitscript.com/autoit3/docs/functions/StringSplit.htm

那么,如何返回初始元数据呢?也许这会起作用(可能还有其他人,但我现在需要赶时间):http ://www.pdflabs.com/tools/pdftk-server/

于 2013-10-31T03:28:07.750 回答