AutoIt-如何读取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

我正在尝试阅读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 _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