QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名3 w9 O7 i! K3 Q& Z5 I9 t+ d' o7 f

& k8 S9 {: G, ~5 q) |) a: Z+ `我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开- \" [5 H! C9 _1 ~4 B  O, _
9 ]% P4 y1 m! X& \+ P" s) u3 C" N6 }( Z
代码如下,请大虾指点,谢谢2 B5 G0 N+ {; r+ Q9 q4 d+ k/ p7 P

, Y; v! @/ K. U$ b" e8 c
  1.     ) b- e7 r/ Z5 j. v- b; ?8 v- u- m0 \6 U
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息) t- a3 q- n7 h' y! k: B# V9 {4 j
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer
    7 }# R9 z) @& e* N  k
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A3
    - b# B+ D) O+ m; ?3 k
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result, J7 g) B/ m/ N% `9 }6 N
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4: H# Y7 }/ E+ ^  Y# T
  7. '    RegCloseKey Result
    * h" L7 }' t( M, Q
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double
    + C  S6 {- O& f% g6 C2 h
  9.     Dim path11 As String
    ; K, y# {4 v; }
  10.     path11 = "D:\123.pdf"
    7 n9 E% w/ U9 n) \* i& p
  11.     Scal = 39' x0 C; E$ n2 h& i: ?
  12.     point1(0) = 0                                        '安装图1
    * w' W; h5 ?% v" R+ n/ ]( O
  13.     point1(1) = 0
    3 b, D( }/ J5 ~+ l2 q$ e. Z
  14.     point2(0) = 420 * Scal
    & o. i8 Y+ F, s& u1 y
  15.     point2(1) = 297 * Scal
    + j2 u! L7 e0 Z1 X' ]
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()
    6 F2 z+ p* Y+ _- m( H* b2 Z
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()
    . Z0 v" o4 y+ w8 D! t& F6 H' Z
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees
      `* m' K5 e1 V% `
  19.     ThisDrawing.Regen acActiveViewport
    6 [1 i3 t5 _: B9 |
  20.     ThisDrawing.Plot.NumberOfCopies = 1
    + }  M  R7 g: Y9 h/ t/ w
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow& O0 o9 O; e: l9 a: H8 S1 ]& q! x/ l
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit
    - J) g. N2 w/ y0 U7 u
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True
    ! V/ G4 b* ?! v+ \* P
  24.     ThisDrawing.Plot.QuietErrorMode = True! v; u: _3 d, X7 i* {4 ]( C) v4 n7 u/ C
  25.    
    . A: W  z* O6 @0 s4 Z, M" h
  26.     4 R5 R$ e/ n9 V- k( k0 X
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result+ c- l* T* c0 P- E4 e
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4' {% C2 g/ s% I
  29. '    RegCloseKey Result6 ^* t3 I( m: M8 I" f( _1 `3 u
  30.     ThisDrawing.Plot.PlotToFile path11% C& V8 y& s1 ~6 q# o" V7 K* e
  31.    
    8 t$ }. E, T# f$ ^9 }
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698
! S0 A0 j- e- p0 m# e
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名

5 J) S* A9 y1 G% V原因在于PDF打印机的设置.
/ K  M* w  d8 T# Y$ O; g2 L2 A  t4 a打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.- s' o3 v- q- S" P
点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.
3 k0 P3 i& e; X8 v$ n' _) T$ z另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件
% a" m6 ?' `% Y3 T3 A, F
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开

6 A8 t- r: }4 P; Q不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.3 y, f! G, Z' ]' f
对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.9 M# o2 y2 s6 Z9 H* f
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 )

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