QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名2 L0 A& q& c4 c- ~. E/ k! Y

# V9 _  W, r! K: p" ]6 S我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
/ B" @7 ^* A! i2 W2 u! p/ p% g5 t) U0 ]
代码如下,请大虾指点,谢谢
4 I! R; D# z' T) ~5 V& h3 L, l& }9 Z% V/ I' T& T
  1.    
      A* M  |  O! D- Z# S& J  B/ G& R
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息+ z% i  a8 `. V" L- V. F1 {0 v
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer9 |3 m1 l' m" k7 P7 b5 z
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A3
    3 D8 X2 V3 @% {7 H+ d, S
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result+ E6 g" W4 c- J( v& e) x- Y, g9 q
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    - c1 b$ F: O6 Q
  7. '    RegCloseKey Result$ `1 C3 R. b. ^- U1 {8 u" K( l  D
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double% w( S- E# L; k2 B2 n3 L
  9.     Dim path11 As String6 \2 l+ b1 i$ f
  10.     path11 = "D:\123.pdf"
    8 k+ w; B! A2 w) {
  11.     Scal = 39& W& t) W) a7 e; P7 P/ r- _6 H2 Y
  12.     point1(0) = 0                                        '安装图1
      u. J- v0 y/ Y) _% W( D9 g7 K
  13.     point1(1) = 04 a2 X6 R+ F5 L( y
  14.     point2(0) = 420 * Scal
    ( ]9 K0 M+ D5 w  f$ h. }
  15.     point2(1) = 297 * Scal
    9 ^. W& d# x' ~. V; l- E6 R. ]
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()( t" c! @% H6 o5 ^
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()
    & l+ S: i; o  r2 `9 |% S1 P
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees
    + e! L8 c; U6 _8 j  }
  19.     ThisDrawing.Regen acActiveViewport& u$ |/ Z7 k2 |( y
  20.     ThisDrawing.Plot.NumberOfCopies = 1
    2 H' u# i0 _2 s' d$ B: R
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow
    $ ?8 J" n5 i6 x# Q, x" f9 L
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit% B; f; f4 k4 M9 }( ^
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True2 m4 @& a4 k( p: f4 p: M
  24.     ThisDrawing.Plot.QuietErrorMode = True1 y& A5 x" A3 [
  25.    
    ; |8 h3 e& i! g. b
  26.    
    * f" e6 s/ `/ [
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result& P3 O/ E% X; n3 ?3 Z$ K2 l
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 41 O' x! T) b0 L9 I& U! s% @
  29. '    RegCloseKey Result
    1 R9 ?5 b; D: P! N; w+ U6 {
  30.     ThisDrawing.Plot.PlotToFile path11# V. A4 z8 R! j+ u( c
  31.     * l- L1 h3 c  p# J) K
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698 6 E; S% j" Q+ d% W$ E- ?% v, z
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
# r  o9 \4 B- f2 R! G5 O" z3 |
原因在于PDF打印机的设置.7 q) n, P2 u4 K" n( j/ w; |
打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.
6 G# X* z* G4 `. g点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.
1 }( c2 @$ w) Z5 Y" j另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件4 h& L$ d4 Z" W6 r9 m5 A
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
$ C6 s7 q9 g, G0 _9 Z
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.
3 Q8 S' W3 Q( A* s对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.
# D7 m; X* s2 g: R2007以上版本自带的"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 )

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