乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 217|回复: 10

请问高手:在VB或者VBA中,能否对adobe acrobat进行对象编程?

[复制链接]

61

主题

163

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
407
发表于 2007-9-1 23:31:00 | 显示全部楼层 |阅读模式
这个问题困扰我很长时间了。
是这样的:一张cad图纸中有很多a3大小的图纸,现在我已经将这些图纸分别打印为pdf文件,想把它们组合成一个文件,死办法就是打开adobe acrobat程序,然后依次对这些pdf文件进行插入操作,最终组合成一个pdf文件,本人觉得这办法效率不高,想通过编程达到这个目的。我在vb中的引用库中找到了关于adobe acrobat的库,用对象浏览器察看了其成员及方法,但是上面的提示过于简单,无法操作。请问有没有高手通过VB或者VBA对adobe acrobat进行对象编程,请大家给出操作示例,本人借此学习学习,谢谢各位高手!!
回复

使用道具 举报

16

主题

909

帖子

8

银币

中流砥柱

Rank: 25

铜币
973
发表于 2007-10-2 09:36:00 | 显示全部楼层

下面是一个追加pdf的函数, 合并也一样的
' Append PDF files to a single PDF file
' Alvin 2/10/2007
'Thanks for the idea of johnsonm
Public Function AppendPDFs(arrPdfFiles() As String, strFileName As String) As Boolean
Dim AcroApp As CAcroApp
Dim avCodeFile As CAcroAVDoc
Dim PDDoc1 As CAcroPDDoc
Dim PDDoc2 As CAcroPDDoc
Dim i As Long
Dim lngPage As Long
Dim lngPageNum1 As Long
Dim lngPageNum2 As Long
Dim lngPageNum3 As Long
lngPageNum1 = 0
lngPageNum2 = 0
lngPageNum3 = 0
'Start Acrobat in the background
Set AcroApp = CreateObject("AcroExch.App")
AcroApp.Hide
Set avCodeFile = CreateObject("AcroExch.AVDoc")
avCodeFile.Open strFileName, strFileName
Set PDDoc1 = avCodeFile.GetPDDoc
lngPageNum1 = PDDoc1.GetNumPages
lngPageNum3 = 0
For i = LBound(arrPdfFiles) To UBound(arrPdfFiles)
Set PDDoc1 = avCodeFile.GetPDDoc
Set PDDoc2 = CreateObject("AcroExch.PDDoc")
PDDoc2.Open arrPdfFiles(i)
lngPage = PDDoc1.GetNumPages - 1
If lngPage
PDDoc1.InsertPages lngPage, PDDoc2, 0, PDDoc2.GetNumPages, 0
lngPageNum3 = lngPageNum3 + PDDoc2.GetNumPages
Next i
PDDoc1.Save 1, strFileName
lngPageNum2 = PDDoc1.GetNumPages
PDDoc1.Close
PDDoc2.Close
avCodeFile.Close 0
'Exit Acrobat
AcroApp.Exit
Set AcroApp = Nothing
Set avCodeFile = Nothing
Set PDDoc1 = Nothing
Set PDDoc2 = Nothing
If lngPageNum2 - lngPageNum1 = lngPageNum3 Then
    AppendPDFs = True
    Else
    AppendPDFs = False
End If
End Function
回复

使用道具 举报

0

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
2
发表于 2020-4-27 21:13:00 | 显示全部楼层

AcroExch对象需要基于一个拥有授权的Acrobat才能创建
回复

使用道具 举报

16

主题

909

帖子

8

银币

中流砥柱

Rank: 25

铜币
973
发表于 2007-9-2 20:52:00 | 显示全部楼层
不用一个个文件插入吧,我们用的是adobe acrobat 8.0 Professional. 在pdf输出目录了选择要合并的文件,右键弹出菜单里有“合并”选择文件的选项。当然如果能在批量出图时即生成合并的文件是最好的,我也想有这样的功能。
回复

使用道具 举报

17

主题

38

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
106
发表于 2007-9-12 15:50:00 | 显示全部楼层
还是自己编写吧,不过,在VB中对arobat编程十分烦人,尤其是用惯了VB的人。给你提个小建议,可以用excel  vba来写。
回复

使用道具 举报

61

主题

163

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
407
发表于 2007-9-15 22:17:00 | 显示全部楼层
to Mrqq18:
你的意思是:通过excel vba对arobat编程?
能否给个例子学习啊!!谢谢!!
回复

使用道具 举报

61

主题

163

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
407
发表于 2007-9-29 22:25:00 | 显示全部楼层
顶一下!!
回复

使用道具 举报

61

主题

163

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
407
发表于 2007-10-9 21:12:00 | 显示全部楼层
谢谢alin 版主:
你的这个AppendPDFs函数是在vb环境下运行还是在autocad ide的vba环境下运行?另外“Dim AcroApp As CAcroApp”中的CAcroApp引用的是什么库?此外,该函数具体怎么调用,能给个示例吗?
另外我发帖的意思是:一张cad图纸中有很多a3大小的图纸(按照第一页,第二页,...已经排好序),现在我已经将这些图纸分别打印为pdf文件,文件名依次为1,2,3...,本人想把它们组合成一个pdf文件(此pdf文件的第一页为已经打印好的cad图纸中的第一页,依次按照顺序合并),而不是随机合并,本人想通过编程达到这个依次目的,不知道能否实现?谢谢各位高手!!
回复

使用道具 举报

16

主题

909

帖子

8

银币

中流砥柱

Rank: 25

铜币
973
发表于 2007-10-10 11:53:00 | 显示全部楼层
我的机器安装了 Acrobat Prof. 8.0, 引用如下图

vvae51tp0hz.jpg

vvae51tp0hz.jpg


你的想法应该可以实现。我是在AutoCAD VBA IDE中运行的,VB应该也可以。至于对象的属性方法等我也是按F2查看。
回复

使用道具 举报

61

主题

163

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
407
发表于 2007-10-10 21:49:00 | 显示全部楼层
alin 版主:是不是机器一定要安装Acrobat Prof. 8.0才行,我机器上装的是adobe acrobat 6.0 Prof.,这个版本行不?另外假如我用vba对Acrobat Prof. 8.0进行编程,别人的机器是不是一定要安装Acrobat Prof. 8.0才能运行这个vba程序?假如是的话,那岂不这个vba程序的运行还要受adobe acrobat 版本的限制?有没有好的解决办法?谢谢!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 01:23 , Processed in 0.311371 second(s), 75 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表