ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 8089|回复: 53

[分享] 用EXCELvba对PDF文件进行批量裁剪操作

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2020-10-27 12:12 | 显示全部楼层 |阅读模式
本帖最后由 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

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-7 16:36 | 显示全部楼层
这么好的东西,居然没有回复。我为了解决vba操作PDF文件,苦恼很久。国内网上关于vba PDF 方面的资料很少。我GOOGLE国外的论坛找到的资料学习,研究几个月搞定的。

TA的精华主题

TA的得分主题

发表于 2022-5-7 17:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
虽然看不懂,但是感觉很厉害,给你点赞

TA的精华主题

TA的得分主题

发表于 2022-5-7 19:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-5-7 20:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个怎么会事,要安装adobe pdf软件吗?
2022-05-07_200540.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-5-8 21:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
gwjkkkkk 发表于 2022-5-7 20:06
这个怎么会事,要安装adobe pdf软件吗?

要安装Adobe PDF 专业版;还要引用PDF的插件

TA的精华主题

TA的得分主题

发表于 2022-5-8 22:22 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-6-27 09:15 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-6-27 09:29 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-11-14 11:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请问删除指定页,怎么操作
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-30 22:05 , Processed in 0.036254 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表