|
本帖最后由 bluesky_0 于 2020-10-27 12:15 编辑
我今天参考别人写的代码.搞定vba批量裁剪PDF的操作,我把里面的代码,函数全部注释,方便大家学习,应用.
裁剪的函数,在我上次发的的Adobe公司的API手册里面没有写.Pdf 官方API手册地址:https://www.adobe.com/content/da ... s_api_reference.pdf
我这里要赞美一下,GOOG大法好啊!!!
Sub acrobatcrop()
Dim acroRect, jso, page As Object
Dim pdf1 As Acrobat.CAcroPDDoc
Dim nameFile, s, exportCroppedPDF As String
Set acroRect = CreateObject("AcroExch.Rect")
Set pdf1 = CreateObject("AcroExch.PDDoc")
nameFile = ThisWorkbook.Path & "\" & Range("I" & 4) & ".PDF" '需要裁剪的文件名,可以做成动态的
If pdf1.Open(nameFile) Then
Set jso = pdf1.GetJSObject
Set page = pdf1.AcquirePage(pdf1.GetNumPages() - 1) '获得页面
'设置裁剪的PDF页面矩形
acroRect.Left = 0 '矩形以左边为准,向右偏移的数量
acroRect.Right = 612 '矩形的向右长度,以左边为准
acroRect.Top = 400 '矩形以顶边为准向下偏移的数量
acroRect.bottom = 0 '矩形以底边为准向上偏移的数量
page.CropPage (acroRect)
'裁剪函数:
'Object.CropPages( nStartPage, nEndPage, nEvenOrOddPagesOnly, acroRect )
'参数:
'nStartPage: 裁剪的第一页是xx(和下面的参数组成裁剪的页面范围).PDF第一页序号是0
'nEndPage: 裁剪的最后一页是xx (和上面的参数组成裁剪的页面范围)
'nEvenOrOddPagesOnly 被裁剪的页面范围:
'0 所有页面 , 默认
'1 奇数页
'2 偶数页
'acroRect 裁剪的矩形, 四个参数,四个参数如果超出合理范围,就不做裁剪操作
exportCroppedPDF = nameFile & "-1.PDF" '另存为文件,名称是 xxx-1.pdf
'创建由从当前文档提取的页面组成的新文档
s = jso.extractPages(0, pdf1.GetNumPages() - 1, exportCroppedPDF)
'创建由从当前文档提取的页面组成的新文档 函数:
'extractPages( nStart, nEnd, cPath )
'参数:
'nStart: 要从中提取的页面范围的开始位置(和下面的参数组成页面范围).PDF第一页序号是0;如果只指定了nStart,那么页面的范围就是单个页面
'nEnd: 要从中提取的页面范围的结束位置是xx (和上面的参数组成页面范围),如果只指定了nEnd,那么页面的范围是0到nEnd
'cPath (可选)用于保存新文档的与设备无关的路径。路径名可能相对于当前文档的位置
Else
Debug.Print ("Can't open the file!")
End If
pdf1.Close
Set pdf1 = Nothing
Set acroRect = Nothing
Set jso = Nothing
Set page = Nothing
End Sub
|
评分
-
7
查看全部评分
-
|