QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 10328|回复: 2
收起左侧

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名8 M7 M, [9 ?: @2 r9 n
8 k/ x6 S' \3 c7 s7 X
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
# Q$ M3 P9 ~' |; b% W: i5 e4 }6 }. O8 J! @. Z& F0 B4 T
代码如下,请大虾指点,谢谢
+ N( T! i# |8 W. N  Q; u3 l1 p' K; j
  1.    
    / [5 f8 X. M' c5 K; c+ X3 W
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息/ p2 H5 b# F) x; _3 @
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer
    / d5 l/ t- k+ b
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A37 o8 B" @; Q; a8 W& N
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    ; B: V6 R1 }2 s: I
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    ( X! o" X7 W5 i6 _7 {  v
  7. '    RegCloseKey Result- H7 g# `2 i2 u; ?* D# {
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double/ L/ T4 Z  m7 U, A7 |
  9.     Dim path11 As String
    + G& K& `+ x$ G# M
  10.     path11 = "D:\123.pdf"
    $ u! M+ K1 R! J' Q
  11.     Scal = 39
    9 @* V' u8 Y% f) Y
  12.     point1(0) = 0                                        '安装图1
    9 i& g6 g( u, V% e3 x0 A
  13.     point1(1) = 0
    9 s5 R! [; G; ~1 q
  14.     point2(0) = 420 * Scal. O3 i; C$ ^1 Y9 ^+ [* F
  15.     point2(1) = 297 * Scal) ]3 c+ @4 I. z# l- {3 M3 o
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2(), a6 b3 K7 D! Q9 s
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()
    " d8 i' B1 R5 J: w9 ?; p
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees
    1 L# l7 O% j* M" e. ]8 `
  19.     ThisDrawing.Regen acActiveViewport
    ( x0 Y! X( X' T9 x3 f1 n
  20.     ThisDrawing.Plot.NumberOfCopies = 1
    , N1 u1 B, c$ y. P8 M% |2 o
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow
    * Y' E$ ~- {& g: _% t
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit
    + f7 J: D* j: j( Z2 W5 a
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True: D9 ^* f: s) w6 g& H. Q
  24.     ThisDrawing.Plot.QuietErrorMode = True% t. M; @' i0 J$ G* V4 ~
  25.     $ z8 ]2 Q" M: j* ^' s0 j
  26.    
    ' j: L) n, Q$ H- j8 C8 |
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    , N7 i9 |/ V: i) I8 @0 n0 e
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4. u# ?7 u+ @$ r4 U8 f0 ?" j
  29. '    RegCloseKey Result
    : O$ r: S) s/ ~. X' }* Q
  30.     ThisDrawing.Plot.PlotToFile path11
    3 `6 Y) r% k5 p( I! d/ r9 m# J; w
  31.     & U+ ]3 `$ }  m3 V/ T% I
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698
; m5 R2 Z1 W) ]  }# _: y9 G
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
( u' L  y! c- X+ P4 {. s8 \9 m+ h( ^
原因在于PDF打印机的设置.# H5 f2 M  \) [" Q" M4 i( I
打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.
" z0 T. T5 b0 S* a点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.4 d& S; f% A( W6 z0 X
另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件
+ U0 B" [* E( l9 Q
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
$ v5 V( _7 g; S. I8 d1 o1 b$ P$ C
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.3 [3 J0 B2 s4 p9 R
对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.
$ `" d- ]0 G4 V6 a$ Q! V/ ?8 |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 )

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