翔羽 发表于 2007-9-1 23:31:00

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

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

alin 发表于 2007-10-2 09:36:00

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

beaker400 发表于 2020-4-27 21:13:04

alin 发表于 2007-10-11 11:43
Acrobat Prof. 6 should be OK. The type library file is acrobat.tlb which comes with the full version ...

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

alin 发表于 2007-9-2 20:52:00

<p>不用一个个文件插入吧,我们用的是adobe acrobat 8.0 Professional. 在pdf输出目录了选择要合并的文件,右键弹出菜单里有“合并”选择文件的选项。当然如果能在批量出图时即生成合并的文件是最好的,我也想有这样的功能。</p>

Mrqq18 发表于 2007-9-12 15:50:00

还是自己编写吧,不过,在VB中对arobat编程十分烦人,尤其是用惯了VB的人。给你提个小建议,可以用excelvba来写。<br/>

翔羽 发表于 2007-9-15 22:17:00

<p>to <strong><font face="Verdana" color="#61b713">Mrqq18:</font></strong></p><p><font face="Verdana" color="#61b713"><strong>你的意思是:通过</strong><font color="#000000">excel vba对arobat编程?</font></font></p><p><font face="Verdana">能否给个例子学习啊!!谢谢!!</font></p>

翔羽 发表于 2007-9-29 22:25:00

顶一下!!

翔羽 发表于 2007-10-9 21:12:00

<p><font face="Verdana" color="#da2549"><strong>谢谢alin 版主:</strong></font></p><p><font face="Verdana" color="#da2549"><strong>你的这个</strong><font color="#000000">AppendPDFs函数是在vb环境下运行还是在autocad ide的vba环境下运行?另外“Dim AcroApp As CAcroApp”中的CAcroApp引用的是什么库?此外,该函数具体怎么调用,能给个示例吗?</font></font></p><p>另外我发帖的意思是:一张cad图纸中有很多a3大小的图纸(<font color="#ff0000">按照第一页,第二页,...已经排好序</font>),现在我已经将这些图纸分别打印为pdf文件,文件名依次为1,2,3...,本人想把它们组合成一个pdf文件(<font color="#ff0000">此pdf文件的第一页为已经打印好的cad图纸中的</font><font color="#ff0000">第一页,依次按照顺序合并</font>),而不是随机合并,本人想通过编程达到这个依次目的,不知道能否实现?谢谢各位高手!!</p>

alin 发表于 2007-10-10 11:53:00

<p>我的机器安装了 Acrobat Prof. 8.0, 引用如下图</p><p></p><p></p><p>你的想法应该可以实现。我是在AutoCAD VBA IDE中运行的,VB应该也可以。至于对象的属性方法等我也是按F2查看。</p>

翔羽 发表于 2007-10-10 21:49:00

<strong><font face="Verdana" color="#da2549">alin 版主:是不是机器一定要安装Acrobat Prof. 8.0才行,我机器上装的是adobe acrobat 6.0 Prof.,这个版本行不?另外假如我用vba对Acrobat Prof. 8.0进行编程,别人的机器是不是一定要安装Acrobat Prof. 8.0才能运行这个vba程序?假如是的话,那岂不这个vba程序的运行还要受adobe acrobat 版本的限制?有没有好的解决办法?谢谢!</font></strong>

alin 发表于 2007-10-11 11:43:00

<p>Acrobat Prof. 6 should be OK. The type library file is <strong>acrobat.tlb</strong> which comes with the full version of Acrobat only. The free reader does <strong>not</strong> expose the COM interfaces. And I don't think you can packed the acrobat.tlb into your program. Somebody have tried and returned an error when it&nbsp;was trying to create the object.</p>
页: [1] 2
查看完整版本: 请问高手:在VB或者VBA中,能否对adobe acrobat进行对象编程?