QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
) ^, Z) g1 K! L7 r- m' h
, d3 q4 Q$ S, c3 p2 e9 Q2 D我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开- A3 d' w* e& [) [

7 h3 [1 @0 O$ l$ ~6 T, ^) K代码如下,请大虾指点,谢谢
1 l1 u, u3 ?0 Z0 h& I( H& E& c  G7 @4 L# f( y$ l8 e
  1.    
    ! }/ o0 O' h! l1 P, m6 y; W
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息% l* X/ ^/ {4 V5 z
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer
    $ o* f6 e. N8 K
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A34 ]& `: @  k5 J6 v
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
      E. ?  u  y2 |& j. H
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    + N9 A/ G2 d4 k: \4 U! x1 N6 u
  7. '    RegCloseKey Result
    9 g( x2 C* E8 C2 P' ]
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double
      n6 Q# i  S9 }4 K+ B  g% o8 Q% J
  9.     Dim path11 As String, v; R0 J) [/ l. _8 a
  10.     path11 = "D:\123.pdf"/ _" c- n( q4 x  b/ J& W
  11.     Scal = 39+ G" {! [% \, D# J9 M
  12.     point1(0) = 0                                        '安装图1; |. m3 E( u/ |2 X5 c# e
  13.     point1(1) = 0
    2 n2 h9 C: L1 b0 q9 Q0 s- D6 E
  14.     point2(0) = 420 * Scal9 u- P' [  S4 k, M" B% l) u/ ~+ L  ?  C" a
  15.     point2(1) = 297 * Scal" p& b' {4 b) n  h
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()9 ^' @/ _. p1 b$ x# O
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()
    ' t7 W2 v' B3 M' V4 u
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees
    $ H" e; Q* L9 ?
  19.     ThisDrawing.Regen acActiveViewport
    0 {" i- q0 B+ ^4 G/ Z9 E6 F
  20.     ThisDrawing.Plot.NumberOfCopies = 1
    ! p& U& h8 }" Q' s3 u' p0 y
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow
    2 }( m; U9 c$ C6 K( a( i
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit
    " J6 \! C+ B( i* S( x
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True9 a+ O& B7 V/ w* s2 a+ N% D
  24.     ThisDrawing.Plot.QuietErrorMode = True
    . U2 f( Q- b0 B! \+ n$ u
  25.     % w! v6 r3 @" S2 c
  26.    
    " }* I7 I. C2 s$ M
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result! ]4 M$ i: Q% i: S6 Q+ _3 c1 p& I5 ^. n
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    ' }7 Y8 W5 U' `" s* F7 Q
  29. '    RegCloseKey Result
    - C5 R) g$ T* o  J9 j6 ?
  30.     ThisDrawing.Plot.PlotToFile path11
    + R4 O: f6 C! W9 U; o  R( n+ J2 ~
  31.     4 Q) q# p# j2 b6 Z3 D# D. }
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698
. b3 ~' _9 N+ Q7 F
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名

* b) }( r: j; V- l4 H原因在于PDF打印机的设置.
( x$ ^- A) I; O" a. O( `9 ~打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.
" ]! u7 k8 e) @点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.2 ?9 j9 \8 x6 B
另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件2 M! v- u. L7 s6 n
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
( D7 f% ^& S% O  ~. x
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.5 M- {" @1 h1 t8 i; N. u" H
对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.
9 m. g4 W7 Q8 s1 G+ x6 [2 o. q0 L2007以上版本自带的"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 )

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