如何从元数据中找到 PDF 的标题?

问题描述

在拥有 renamed 文件本身后,如何获得 PDF 文件标题

PSPath              : Microsoft.PowerShell.Core\FileSystem::/home/nicholas/to/99.pdf
PSParentPath        : Microsoft.PowerShell.Core\FileSystem::/home/nicholas/to
PSChildName         : 99.pdf
PSDrive             : /
PSProvider          : Microsoft.PowerShell.Core\FileSystem
PSIsContainer       : False
Mode                : -----
ModeWithoutHardLink : -----
VersionInfo         : File:             /home/nicholas/to/99.pdf
                      InternalName:     
                      OriginalFilename: 
                      FiLeversion:      
                      FileDescription:  
                      Product:          
                      ProductVersion:   
                      Debug:            False
                      Patched:          False
                      PreRelease:       False
                      PrivateBuild:     False
                      SpecialBuild:     False
                      Language:         
                      
BaseName            : 99
Target              : 
LinkType            : 
Length              : 592483
DirectoryName       : /home/nicholas/to
Directory           : /home/nicholas/to
IsReadOnly          : False
FullName            : /home/nicholas/to/99.pdf
Extension           : .pdf
Name                : 99.pdf
Exists              : True
CreationTime        : 2/19/2021 11:45:18 PM
CreationTimeUtc     : 2/20/2021 7:45:18 AM
LastAccesstime      : 2/20/2021 2:02:36 AM
LastAccesstimeUtc   : 2/20/2021 10:02:36 AM
LastWriteTime       : 2/19/2021 11:45:18 PM
LastWriteTimeUtc    : 2/20/2021 7:45:18 AM
Attributes          : normal


PS /home/nicholas/to> 
PS /home/nicholas/to> Get-ChildItem -Path ./ –File | Select-Object -Property *

这是将 PDF 文件批量导入到 calibre 中,值得注意的是,它似乎可以识别重复项,甚至显示一些标题。它是解析 PDF 文件本身,还是从 meta-data 中收集?

解决方法

为此,您可以使用 pdfinfo.exe,您可以在免费的 Xpdf command line tools 中找到它。

下载并解压 zip 文件后,将 pdfinfo.exe 复制到某个目录并确保通过 right-click 或使用 PowerShell 解除阻止

Unblock-File -Path 'Where\Ever\You\Have\Copied\It\To\pdfinfo.exe'

使用它,要获取存储在 pdf 中的原始标题,您可以

$title = ((& 'D:\Test\pdfinfo.exe' 'D:\Test\test.pdf' | 
    Where-Object { $_ -match '^Title:' }) -split ':',2)[-1].Trim()