QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
6天前
查看: 10421|回复: 2
收起左侧

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名" x6 j+ h; A6 ^6 X  j' S0 y' y9 ]

5 P6 G3 I( v9 m8 ?; A2 ^0 p$ ]我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
+ t5 d1 ^0 T7 E; O# N
% w3 E( p/ I) q, P  ?代码如下,请大虾指点,谢谢, y4 N' Q5 x6 {' d* k% k

# G+ a) e& V9 M  l+ c! y" w# h
  1.    
    3 `; o) r0 b# D( P% b  G) o# a! T! k
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息9 A$ ?' R- h" F4 \
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer/ V+ H+ `0 [; Q( Z, a
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A3
    ( t' Y" z+ _, C! u5 U# s& |, p' e
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    - P  T- U' N* Q4 S' B
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    $ g. z- @# H% ^0 L/ J
  7. '    RegCloseKey Result+ a2 E1 h* h; {) u1 R- L5 ]
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double7 s; U3 ?* O( o1 R: x# T6 O
  9.     Dim path11 As String
    : u$ q/ X" @! L- c& n  P: q, v
  10.     path11 = "D:\123.pdf"
    ! ]; S5 [: u' h) |% q
  11.     Scal = 39
    + I* f6 g' {% b# A5 ]
  12.     point1(0) = 0                                        '安装图1
    3 [7 n: e. x; d& g9 |; W& j% u6 w
  13.     point1(1) = 07 K: H; K% K- J" U$ i- X) j
  14.     point2(0) = 420 * Scal
    # Q0 @$ p1 |3 M9 @) b9 O
  15.     point2(1) = 297 * Scal+ d0 R/ `& }; ~% \4 H6 r- M
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2(), B0 w  |8 f5 J* t- V' X& K/ d" o
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()
    4 J- R( A5 Z1 j; |# v( Y1 `
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees
    ) a8 a; x5 V6 n
  19.     ThisDrawing.Regen acActiveViewport$ D6 ^4 u  _2 N
  20.     ThisDrawing.Plot.NumberOfCopies = 1
    9 H$ F2 O$ V% Q: w# Q
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow7 P# ]: M+ |6 H; |) N* I
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit- O+ ~, Q$ K, _) v
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True! n  y9 a/ ?6 ~2 O7 H& V
  24.     ThisDrawing.Plot.QuietErrorMode = True  ]  B; Q! D' R# R# V: m
  25.     0 ^) }1 z6 `# y/ o1 g
  26.    
    + a& O* K& D7 a/ Z& q1 p
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result7 x3 r6 |; s% ~) U2 |
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4- n3 @  H. O0 G/ P5 V3 u4 E
  29. '    RegCloseKey Result
    * j( Q0 M/ H/ D( Y- U* S* D. X
  30.     ThisDrawing.Plot.PlotToFile path11
    0 e) ]( d  F4 G& j, _7 \
  31.    
    9 h0 }" \, N% k7 D+ C! A/ v6 j
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698 1 W+ I7 _# |  t! Q* K
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
' A  v5 r2 {4 s7 {8 f
原因在于PDF打印机的设置., ^3 ?/ _& K$ X/ }
打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.2 b5 j% q# ?% g, \, ^" m3 L, i
点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.( e7 l$ W) c, Q+ h# M1 j$ `
另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件9 n' ]% R. Y: I. r, `0 q7 w
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
# }5 G/ {1 j4 q' y# H  X; t! @
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.
# {& P/ l4 A5 P0 u7 E' M对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.
* _2 D7 N9 b9 E: u. J, ^% J2007以上版本自带的"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 )

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