AutoIt-如何读取pdf文档属性
我正在尝试阅读PDF的页面大小例如AutoIt-如何读取pdf文档属性,pdf,properties,autoit,Pdf,Properties,Autoit,我正在尝试阅读PDF的页面大小例如身高X体重。页面大小可在中找到 File -> Properties -> Page Size 我使用以下代码获取属性值: $path = FileOpenDialog("Select a file to read attributes",@ScriptDir,"All (*.*)") $prop = _GetExtProperty($path,-1) _ArrayDisplay($prop,"Property Array") Func _Get
身高X体重。页面大小可在中找到
File -> Properties -> Page Size
我使用以下代码获取属性值:
$path = FileOpenDialog("Select a file to read attributes",@ScriptDir,"All (*.*)")
$prop = _GetExtProperty($path,-1)
_ArrayDisplay($prop,"Property Array")
Func _GetExtProperty($sPath, $iProp)
Local $iExist, $sFile, $sDir, $oShellApp, $oDir, $oFile, $aProperty, $sProperty
$iExist = FileExists($sPath)
If $iExist = 0 Then
SetError(1)
Return 0
Else
$sFile = StringTrimLeft($sPath, StringInStr($sPath, "\", 0, -1))
$sDir = StringTrimRight($sPath, (StringLen($sPath) - StringInStr($sPath, "\", 0, -1)))
$oShellApp = ObjCreate ("shell.application")
$oDir = $oShellApp.NameSpace ($sDir)
$oFile = $oDir.Parsename ($sFile)
If $iProp = -1 Then
Local $aProperty[35]
For $i = 0 To 34
$aProperty[$i] = $oDir.GetDetailsOf ($oFile, $i)
Next
Return $aProperty
Else
$sProperty = $oDir.GetDetailsOf ($oFile, $iProp)
If $sProperty = "" Then
Return 0
Else
Return $sProperty
EndIf
EndIf
EndIf
EndFunc ;==>_GetExtProperty
通过使用上述代码,我成功地获得了文件大小(MB)、创建日期、修改日期、位置等,但没有得到页面大小。非常感谢,如果有人能建议我如何获得页面大小。任何参考、建议或示例代码都将受到高度赞赏 差不多,但也许有帮助
#include <Array.au3>
;===============================================================================
; Function Name.....: _FileGetProperty
; Description.......: Returns a property or all properties for a file.
; Version...........: 1.0.2
; Change Date.......: 2008-07-28
; AutoIt Version....: 3.2.12.1
;
; Parameter(s)......: $S_PATH - String containing the file path to return the property from.
; $S_PROPERTY - [optional] String containing the name of the property to return. (default = "")
; Requirements(s)...: None
; Return Value(s)...: Success: Returns a string containing the property value.
; If $S_PROPERTY is empty, an two-dimensional array is returned:
; $av_array[0][0] = Number of properties.
; $av_array[1][0] = 1st property name.
; $as_array[1][1] = 1st property value.
; $av_array[n][0] = nth property name.
; $as_array[n][1] = nth property value.
; Failure: Returns 0 and sets @error to:
; 1 = The folder $S_PATH does not exist.
; 2 = The property $S_PROPERTY does not exist or the array could not be created.
; 3 = Unable to create the "Shell.Application" object $objShell.
;
; Author(s).........: - Simucal <Simucal@gmail.com>
; - Modified by: Sean Hart <autoit@hartmail.ca>
; - Modified by: teh_hahn <sPiTsHiT@gmx.de>
; Company...........: None
; URL...............: None
; Note(s)...........: None
;===============================================================================
Global $re = _FileGetProperty(@ScriptDir & '\1Tutorial - AutoItWiki1.pdf')
If @error Then MsgBox(16, 'ERROR', 'Error: ' & @error & @CRLF & '1 = The folder $S_PATH does not exist.' & @CRLF & _
'2 = The property $S_PROPERTY does not exist or the array could not be created.' & @CRLF & _
'3 = Unable to create the "Shell.Application" object $objShell.')
_ArrayDisplay($re)
Func _FileGetProperty(Const $S_PATH, Const $S_PROPERTY = "")
If Not FileExists($S_PATH) Then Return SetError(1, 0, 0)
Local Const $S_FILE = StringTrimLeft($S_PATH, StringInStr($S_PATH, "\", 0, -1))
Local Const $S_DIR = StringTrimRight($S_PATH, StringLen($S_FILE) + 1)
Local Const $objShell = ObjCreate("Shell.Application")
If @error Then Return SetError(3, 0, 0)
Local Const $objFolder = $objShell.NameSpace($S_DIR)
Local Const $objFolderItem = $objFolder.Parsename($S_FILE)
If $S_PROPERTY Then
For $i = 0 To 99
If $objFolder.GetDetailsOf($objFolder.Items, $i) = $S_PROPERTY Then Return $objFolder.GetDetailsOf($objFolderItem, $i)
Next
Return SetError(2, 0, 0)
EndIf
Local $av_ret[1][2] = [[1]]
For $i = 0 To 99
If $objFolder.GetDetailsOf($objFolder.Items, $i) Then
ReDim $av_ret[$av_ret[0][0] + 1][2]
$av_ret[$av_ret[0][0]][0] = $objFolder.GetDetailsOf($objFolder.Items, $i)
$av_ret[$av_ret[0][0]][1] = $objFolder.GetDetailsOf($objFolderItem, $i)
$av_ret[0][0] += 1
EndIf
Next
If Not $av_ret[1][0] Then Return SetError(2, 0, 0)
$av_ret[0][0] -= 1
Return $av_ret
EndFunc ;==>_FileGetProperty
#包括
;===============================================================================
; 函数名…:\u FileGetProperty
; 说明……:返回文件的属性或所有属性。
; 版本:1.0.2
; 变更日期:2008-07-28
; AutoIt版本:3.2.12.1
;
; 参数:$s_PATH-包含从中返回属性的文件路径的字符串。
; $S_属性-[可选]包含要返回的属性名称的字符串。(默认值=“”)
; 要求:无
; 返回值:成功:返回包含属性值的字符串。
; 如果$S_属性为空,则返回二维数组:
; $av_数组[0][0]=属性数。
; $av_数组[1][0]=第一个属性名称。
; $as_数组[1][1]=第一个属性值。
; $av_数组[n][0]=第n个属性名称。
; $as_数组[n][1]=第n个属性值。
; 失败:返回0并将@error设置为:
; 1=文件夹$S_路径不存在。
; 2=属性$S_属性不存在或无法创建数组。
; 3=无法创建“Shell.Application”对象$objShell。
;
; 作者:Simucal
; - 修改人:肖恩·哈特
; - 修改人:teh_hahn
; 公司……:无
; URL………..:无
; 注:无
;===============================================================================
全局$re=\u FileGetProperty(@ScriptDir&'\1Tutorial-AutoItWiki1.pdf')
如果@error,则MsgBox(16,'error','error:'&@error&@CRLF&'1=文件夹$S_路径不存在。&@CRLF&'_
“2=属性$S_属性不存在或无法创建数组。”&@CRLF&_
“3=无法创建“Shell.Application”对象$objShell。”)
_ArrayDisplay($re)
Func _FileGetProperty(Const$S_PATH,Const$S_PROPERTY=”“)
如果文件不存在($S_PATH),则返回SetError(1,0,0)
本地常量$S\u FILE=StringTrimLeft($S\u路径,StringInStr($S\u路径,“\”,0,-1))
本地常量$S_DIR=StringTrimRight($S_路径,StringLen($S_文件)+1)
本地常量$objShell=ObjCreate(“Shell.Application”)
如果@error,则返回SetError(3,0,0)
本地常量$objFolder=$objShell.NameSpace($S_DIR)
本地常量$objFolderItem=$objFolder.Parsename($S_文件)
如果是$S_财产,则
对于$i=0到99
如果$objFolder.GetDetailsOf($objFolder.Items,$i)=$S_属性,则返回$objFolder.GetDetailsOf($objFolderItem,$i)
下一个
Return SetError(2,0,0)
恩迪夫
本地$av_ret[1][2]=[1]]
对于$i=0到99
如果$objFolder.GetDetailsOf($objFolder.Items,$i),则
重拨$av_ret[$av_ret[0][0]+1][2]
$av_-ret[$av_-ret[0][0]][0]=$objFolder.GetDetailsOf($objFolder.Items,$i)
$av_ret[$av_ret[0][0]][1]=$objFolder.GetDetailsOf($objFolderItem,$i)
$av_ret[0][0]+=1
恩迪夫
下一个
如果不是$av_ret[1][0],则返回SetError(2,0,0)
$av_ret[0][0]=1
返回$av_ret
EndFunc;==>_FileGetProperty
几乎一样,但可能有帮助
#include <Array.au3>
;===============================================================================
; Function Name.....: _FileGetProperty
; Description.......: Returns a property or all properties for a file.
; Version...........: 1.0.2
; Change Date.......: 2008-07-28
; AutoIt Version....: 3.2.12.1
;
; Parameter(s)......: $S_PATH - String containing the file path to return the property from.
; $S_PROPERTY - [optional] String containing the name of the property to return. (default = "")
; Requirements(s)...: None
; Return Value(s)...: Success: Returns a string containing the property value.
; If $S_PROPERTY is empty, an two-dimensional array is returned:
; $av_array[0][0] = Number of properties.
; $av_array[1][0] = 1st property name.
; $as_array[1][1] = 1st property value.
; $av_array[n][0] = nth property name.
; $as_array[n][1] = nth property value.
; Failure: Returns 0 and sets @error to:
; 1 = The folder $S_PATH does not exist.
; 2 = The property $S_PROPERTY does not exist or the array could not be created.
; 3 = Unable to create the "Shell.Application" object $objShell.
;
; Author(s).........: - Simucal <Simucal@gmail.com>
; - Modified by: Sean Hart <autoit@hartmail.ca>
; - Modified by: teh_hahn <sPiTsHiT@gmx.de>
; Company...........: None
; URL...............: None
; Note(s)...........: None
;===============================================================================
Global $re = _FileGetProperty(@ScriptDir & '\1Tutorial - AutoItWiki1.pdf')
If @error Then MsgBox(16, 'ERROR', 'Error: ' & @error & @CRLF & '1 = The folder $S_PATH does not exist.' & @CRLF & _
'2 = The property $S_PROPERTY does not exist or the array could not be created.' & @CRLF & _
'3 = Unable to create the "Shell.Application" object $objShell.')
_ArrayDisplay($re)
Func _FileGetProperty(Const $S_PATH, Const $S_PROPERTY = "")
If Not FileExists($S_PATH) Then Return SetError(1, 0, 0)
Local Const $S_FILE = StringTrimLeft($S_PATH, StringInStr($S_PATH, "\", 0, -1))
Local Const $S_DIR = StringTrimRight($S_PATH, StringLen($S_FILE) + 1)
Local Const $objShell = ObjCreate("Shell.Application")
If @error Then Return SetError(3, 0, 0)
Local Const $objFolder = $objShell.NameSpace($S_DIR)
Local Const $objFolderItem = $objFolder.Parsename($S_FILE)
If $S_PROPERTY Then
For $i = 0 To 99
If $objFolder.GetDetailsOf($objFolder.Items, $i) = $S_PROPERTY Then Return $objFolder.GetDetailsOf($objFolderItem, $i)
Next
Return SetError(2, 0, 0)
EndIf
Local $av_ret[1][2] = [[1]]
For $i = 0 To 99
If $objFolder.GetDetailsOf($objFolder.Items, $i) Then
ReDim $av_ret[$av_ret[0][0] + 1][2]
$av_ret[$av_ret[0][0]][0] = $objFolder.GetDetailsOf($objFolder.Items, $i)
$av_ret[$av_ret[0][0]][1] = $objFolder.GetDetailsOf($objFolderItem, $i)
$av_ret[0][0] += 1
EndIf
Next
If Not $av_ret[1][0] Then Return SetError(2, 0, 0)
$av_ret[0][0] -= 1
Return $av_ret
EndFunc ;==>_FileGetProperty
#包括
;===============================================================================
; 函数名…:\u FileGetProperty
; 说明……:返回文件的属性或所有属性。
; 版本:1.0.2
; 变更日期:2008-07-28
; AutoIt版本:3.2.12.1
;
; 参数:$s_PATH-包含从中返回属性的文件路径的字符串。
; $S_属性-[可选]包含要返回的属性名称的字符串。(默认值=“”)
; 要求:无
; 返回值:成功:返回包含属性值的字符串。
; 如果$S_属性为空,则返回二维数组:
; $av_数组[0][0]=属性数。
; $av_数组[1][0]=第一个属性名称。
; $as_数组[1][1]=第一个属性值。
; $av_数组[n][0]=第n个属性名称。
; $as_数组[n][1]=第n个属性值。
; 失败:返回0并将@error设置为:
; 1=文件夹$S_路径不存在。
; 2=属性$S_属性不存在或无法创建数组。
; 3=无法创建“Shell.Application”对象$objShell。
;
; 作者:Simucal
; - 修改人:肖恩·哈特
; - 修改人:teh_hahn
; 公司……:无
; URL………..:无
; 注:无
;===============================================================================
全局$re=\u FileGetProperty(@ScriptDir&'\1Tutorial-AutoItWiki1.pdf')
如果@error,则MsgBox(16,'error','error:'&@error&@CRLF&'1=文件夹$S_路径不存在。&@CRLF&'_
“2=属性$S_属性不存在或无法创建数组。”&@CRLF&_
“3=无法创建“Shell.Application”对象$objShell。”)
_ArrayDisplay($re)
Func _FileGetProperty(Const$S_PATH,Const$S_PROPERTY=”“)
如果文件不存在($S_PATH),则返回SetError(1,0,0)
L