我设法在applescript中运行shell脚本代码,并正确生成outpur 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中运行它。任何参考或建议都非常感谢。
答案 0 :(得分: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/)。可能不值得找到确切的Windows版本的grep和awk - 只需使用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/