caiye2530 发表于 2006-7-20 08:07:00

[求助]VBA如何设置多布局打印成一个PDF文件?

<P>请大家帮帮忙,提供点思路吧</P>
<P>本人对CAD工具也不熟悉,但客户有要求要打印CAD文件成PDF,现在我已经可以做到,但是一个布局对应一个PDF,多个布局就有多PDF文件,我想让它一次打印成一份PDF就好了.</P>
<P>我用到ThisDrawing.Plot.PlotToDevice "Adobe PDF"</P>
<P>跟上设备名字,但是打印文件名又不能自定义,始终是"文件名 布局名称 (1).pdf",</P>
<P>怎么设置打印到设备时的文件名</P>
<P>如果不能一次打印成一份PDF文件,那么有谁知道PDF文件如何用VBA整合?</P>
<P>-----------------------</P>
<P>以上是我的问题......是挺多的....希望有高手能指点一二,实在是开发急用,又对工具不熟悉,大家帮帮忙吧,在这里谢过了</P>

<P>我把我在这里找的代码修改了贴出来,请帮忙看看</P>
<P>&nbsp;'--------------------------------------------------<BR>&nbsp;'AutoCAD文件<BR>&nbsp;<BR>&nbsp;Dim CADApp As Variant&nbsp;<BR>&nbsp;<BR>&nbsp;Set CADApp = CreateObject("AutoCAD.Application")&nbsp;<BR>&nbsp;<BR>&nbsp;CADApp.Application.Visible =False<BR>&nbsp;Msgbox "CAD创建成功"<BR>&nbsp;<BR>&nbsp;CADApp.Documents.open str_FilePath<BR>&nbsp;Set ThisDrawing = CADApp.ActiveDocument<BR>&nbsp;Set Plot = ThisDrawing.Plot<BR>&nbsp;<BR>&nbsp;Msgbox "------------开始布局打印"<BR>&nbsp;<BR>&nbsp;Dim AddedLayouts() As String<BR>&nbsp;Dim LayoutList As Variant<BR>&nbsp;Dim ArraySize As Integer, BatchCount As Integer&nbsp;<BR>&nbsp;ArraySize=0<BR>&nbsp;Forall Layout In ThisDrawing.Layouts<BR>&nbsp;&nbsp;Msgbox "布局名称:"+Layout.name &nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;ArraySize = ArraySize + 1<BR>&nbsp;&nbsp;Redim AddedLayouts(1 To ArraySize)<BR>&nbsp;&nbsp;AddedLayouts(ArraySize) = Layout.name&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;Plot.SetLayoutsToPlot AddedLayouts<BR>&nbsp;&nbsp;Plot.PlotToDevice "Adobe PDF"<BR>&nbsp;End Forall<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;'ThisDrawing.Plot.PlotToDevice "Adobe PDF"<BR>&nbsp;<BR>&nbsp;Msgbox "--------------------------布局打印完毕"<BR>&nbsp;CADApp.Documents.close<BR>&nbsp;CADApp.Quit</P>

dcount107 发表于 2006-7-20 20:32:00

<P>使用虚拟打印机(我用PDF_FACTORY)!</P>
<P>遍历你的Layout,将Layout.ConfigName 设置为虚拟打印机,打印完毕后就可以生成一个PDF文件!</P>
<P>&nbsp;</P>

caiye2530 发表于 2006-7-21 08:36:00

<P>不太明白啊........能不能说的详细一些,非常感谢!</P>
<P>PDF_FACTORY与Adobe PDF应该没有什么区别吧.</P>设置虚拟打印机该怎么弄,我是从客户端发出请求的,所有动作都只能在请求过程中自动转换的,最大的问题是我不懂CAD.....
<P>&nbsp;</P>

iceberg2509 发表于 2006-8-7 16:42:00

本帖最后由 作者 于 2006-8-8 8:21:27 编辑 <br /><br /> <P>采用autoCAD 2007,里面有自带的DWG To PDF.pc3打印设备,这个是打印到文件的,所以可以在程序中决定文件名,比如ThisDrawing.Plot.PlotToFile "H:\Temp\test0.pdf",其他的打印机通通都不可以指定,不知道楼上几位是怎么弄出来的。pdfFactory Pro也做不到的在程序中指定文件名的。</P>
<P>其实如果在打印对话框中选择打印设备时,如果打印到文件那一项是置灰而且是勾选的话,那就表示是可以再编程中指定文件名的。</P>

caiye2530 发表于 2006-8-10 17:01:00

<P>谢谢<A name=24489><FONT color=#000066><B>dcount107</B></FONT></A>和<A name=27031><FONT color=#000066><B>iceberg2509</B></FONT></A>,现在我知道pdfFactory Pro是一种可以将多页面打印为一个PDF文件的虚拟打印机.程序文件名我不能指定,所以只能判断其可能打印的文件名称,然后拷贝成另一份文件.目前我是这样做的.</P>
<P>&nbsp;</P>
页: [1]
查看完整版本: [求助]VBA如何设置多布局打印成一个PDF文件?