我目前在vb.net工作。我的公司正在无纸化,我想节省纸张的成本节约分析。目前,我们将所有PDF文件保存到服务器上。文件路径是这样的"服务器> Folder1> Folder2> Folder3> Folder4> PDF文件。"文件夹1和2始终用于导航。文件夹3是部门列表,文件夹4是每个作业。每个文件夹4都有多个pdf文件。简而言之,文件夹1和文件夹2的名称是静态的,而文件夹3和4是动态的。为了使事情变得更加困难,位于文件夹4之后的所有PDF文件都有不同的名称。我有下面的代码来检测pdf有多少页而不必打开它,但它需要文件路径。考虑到有数百个,如果不是超过一千个pdf文件,我想以编程方式循环遍历所有这些文件,检测文件是否是pdf文件,然后对找到的所有页面求和。然后,我可以使用该数字来计算无纸化成本。
Grid
另一个想法是以某种方式将所有文件合并到一个PDF文件中,这样就可以像打开文件一样简单,看看有多少页面。
答案 0 :(得分:0)
这是一个VBA解决方案。在Excel中运行代码。
Sub Test()
Dim MyPath As String, MyFile As String
Dim i As Long
MyPath = "C:\your_path_here\"
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
这是另一种做同样事情的方法。
if (mOrientationChangeCallback != null) {
mOrientationChangeCallback.disable();
}
if (mVirtualDisplay != null) {
mVirtualDisplay.release();
}
if (mMediaProjection != null) {
mMediaProjection.stop();
}
if (mImageReader != null) {
mImageReader.setOnImageAvailableListener(null, null);
mImageReader.close();
}