我使用 Windows 资源管理器以及 Directory Opus 10 和 Free Commander XT(我安装它们就是为了试用)中的“页面”功能来显示页面数,但没有成功。多种的文件夹中的 PDF。
我的所有 PDF 都可以自由编辑,即没有写保护。我不明白为什么任何 PDF 阅读器都可以显示(正确的)页码,而任何文件浏览器都不能?(在“详细信息”视图当然。)
唯一显示页数的文档是 MS Word 文档。
正如您所知,要获得此类信息,应该安装 PDF 的 Shell 扩展处理程序,但是有吗?
附注:Windows 8 中有变化吗?
初步研究:谷歌搜索失败了,我找到的唯一稍微相关的 SE 主题是“如何计算多个 PDF 文件中的页数?“。
答案1
对于非本机支持的文件类型,Windows Shell 需要 shell 扩展处理程序(一种插件)来将某些 Shell 功能扩展到这些文件类型。
在 Windows XP 或更早版本中,Shell 使用称为 Column Handler 扩展的在 Windows 资源管理器详细信息视图列中显示文件元数据。
从 Vista 开始,Shell 使用更通用的属性(或元数据)处理程序。此扩展还用于在 Windows 资源管理器详细信息窗格和文件属性详细信息选项卡上显示和编辑文件元数据,并在许多其他文件对话框(文件删除确认等)上显示元数据。还需要让 Windows Search 索引器对这些文件元数据进行索引。索引器还可以使用 IFilter 扩展来索引文件文本内容。
Windows Shell 本身不支持 PDF 文件类型(这在 Windows 8.x 和 Windows 10 中都没有改变),因此您需要安装 PDF 属性处理程序才能访问 PDF 元数据。
我开发了一个商业工具,PDF 外壳工具,它为 Windows Shell 提供了 PDF 属性处理程序。
答案2
免费实用程序PDF 属性扩展! 由 CoolSoft 提供这些列,并且还在文件属性对话框中显示信息。
该实用程序似乎已根据需要进行了相当更新,并且支持 Windows 10 等。
答案3
您可以使用此 shell 扩展根据标题、页面等对 pdf 文件进行排序和过滤德贝努
此外,这款便携式应用程序可从 pdf 文件中提取所有数据,并生成可在工作流程中使用的表格输出 pdfinfogui
答案4
每个人都想使用一个工具,获取页数,然后将其导出到 Excel。为什么不使用 Excel 进行页数统计,然后将其放入工作表中?
看着http://www.mrexcel.com/forum/excel-questions/347911-visual-basic-applications-page-count.html
这是代码并且它工作得很好:
Sub Test()
Dim MyPath As String, MyFile As String
Dim i As Long
MyPath = "C:\TestFolder"
MyFile = Dir(MyPath & Application.PathSeparator & "*.pdf", vbDirectory)
Range("A:B").ClearContents
Range("A1") = "File Name": Range("B1") = "Pages"
Range("A1:B1").Font.Bold = True
i = 1
Do While MyFile <> ""
i = i + 1
Cells(i, 1) = MyFile
Cells(i, 2) = GetPageNum(MyPath & Application.PathSeparator & MyFile)
MyFile = Dir
Loop
Columns("A:B").AutoFit
MsgBox "Total of " & i - 1 & " PDF files have been found" & vbCrLf _
& " File names and corresponding count of pages have been written on " _
& ActiveSheet.Name, vbInformation, "Report..."
End Sub
'
Function GetPageNum(PDF_File As String)
'Haluk 19/10/2008
Dim FileNum As Long
Dim strRetVal As String
Dim RegExp
Set RegExp = CreateObject("VBscript.RegExp")
RegExp.Global = True
RegExp.Pattern = "/Type\s*/Page[^s]"
FileNum = FreeFile
Open PDF_File For Binary As #FileNum
strRetVal = Space(LOF(FileNum))
Get #FileNum, , strRetVal
Close #FileNum
GetPageNum = RegExp.Execute(strRetVal).Count
End Function