QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 10449|回复: 2
收起左侧

[已答复] VBA:如何打印到Adobe PDF并自动输出?

[复制链接]
发表于 2011-9-2 13:48:41 | 显示全部楼层 |阅读模式 来自: 中国浙江杭州

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名/ y3 n: T: G8 i# c

4 ^" }9 n+ i( x5 s. L5 |, o+ R我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开' T! l+ t  n/ b7 |& T: {6 O! N) i
5 U; A9 H, p. x. d
代码如下,请大虾指点,谢谢
! ]6 x) Q& ^- z1 ^& h/ ?6 l3 J% k+ r  F
  1.     8 y6 r$ p! W6 V1 m- @: @- a( s
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息
    $ H/ w( C. C$ I
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer! K$ R& O7 N, D) i
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A3
    . f9 w% t1 t3 ]' B
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    5 K* X- R7 N8 u& i$ J
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4- i& E) h! R. r: v' v7 c
  7. '    RegCloseKey Result
    6 G6 Z( {/ j! q4 J0 F* v. j
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double9 P0 ~. }  m  e% ~2 X! \- U5 C  F9 h
  9.     Dim path11 As String7 \1 f2 I3 O4 s% Y
  10.     path11 = "D:\123.pdf"% k. s4 u0 T7 U4 l
  11.     Scal = 39$ {3 u# \- y4 Y' y8 z6 }/ o
  12.     point1(0) = 0                                        '安装图1- e4 }% E  z" D+ b8 w' o; j
  13.     point1(1) = 0
    2 X$ [) h! n$ F0 X. p- K+ |
  14.     point2(0) = 420 * Scal
    , [7 T- W, P/ s
  15.     point2(1) = 297 * Scal: D, K  G3 `( V6 j3 |
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()
    " |1 E; N1 i/ `4 z$ \* t
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()
    # K9 r! g3 C1 a- N, V
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees
    " J& Y  |& M& Z4 L) B
  19.     ThisDrawing.Regen acActiveViewport3 N2 z( I' y: ^
  20.     ThisDrawing.Plot.NumberOfCopies = 14 f9 R( x" q/ [0 [' l; }1 x
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow! v5 Z- L; K2 `4 l5 I
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit
    # S7 W2 |9 e) F6 {5 z; c! l% n) ~
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True
    2 ?' G& B! q! t1 t: G) P/ x
  24.     ThisDrawing.Plot.QuietErrorMode = True
    1 P$ f' ^: T7 m+ E+ P
  25.    
    4 k/ j& q2 R9 n# h% S. t1 C
  26.    
    ) `+ b1 K1 b' h" `, `/ g& [4 o# _
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result( d0 s/ C0 d+ k) k% i$ @" K* i- j
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    ; N+ ]' J/ {5 Y( @8 }
  29. '    RegCloseKey Result
    7 h0 x2 \7 b3 L1 n; e
  30.     ThisDrawing.Plot.PlotToFile path11, Y( I1 q; l" Z; t; L1 ~2 u
  31.     ; @& j) P9 o4 N; _5 O
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698
+ [1 N+ G, X0 s, p9 D& P
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名

4 _) ^& w# `% F$ b4 Z/ @原因在于PDF打印机的设置.3 w* I6 k9 |. ]. E  E
打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.- k' B7 O! L4 ?9 f5 q+ |3 Q- J/ h
点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.6 w% s+ G+ e% ]0 p- i4 z0 D- P
另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件
4 T! Q. A" E. }* y% w
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
) P2 a! e3 v' S. n/ G- M9 f  ?) \
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.% S3 k- r! Y# d0 E4 W. R
对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.3 t( Z' |& }9 y) N7 @
2007以上版本自带的"DWG To PDF.pc3"可以打印到文件.
 楼主| 发表于 2011-9-15 10:11:50 | 显示全部楼层 来自: 中国浙江杭州
为什么用"DWG To PDF.pc3"打印,边框那么大
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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