QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
7 X& O& W2 S; k* G& V& P* B& D# ]4 A+ {1 y0 m
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开; t9 _, A8 t# x- U3 r% L

' ?! j6 Q8 q* a( k1 l0 w/ t代码如下,请大虾指点,谢谢, o  u. o( A2 Q$ x
4 F+ Q9 C$ \6 t" }1 b. g5 z
  1.    
    4 f& M/ `% {5 w; c
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息
    ' J  M5 J+ S, l3 ?$ v: I1 Z5 W' ~
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer+ L) E* J6 h& i& @" p" N
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A31 v8 v1 Z7 J/ s, j$ q* P
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    ; _0 Q5 U- o5 m
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4- X% b; z$ I% X
  7. '    RegCloseKey Result
    $ j$ C: b. B  {7 u$ J
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double( Y( D3 ]( F. Q9 [) Y: v  ?2 H
  9.     Dim path11 As String6 ?4 R6 }1 x0 h* E
  10.     path11 = "D:\123.pdf"
    1 u3 w  [. W8 R' w: ~$ {
  11.     Scal = 39# b" i$ W& N4 [8 M
  12.     point1(0) = 0                                        '安装图1( M0 D  N, A8 ]# {+ D
  13.     point1(1) = 0
    . v0 C9 H; f0 U. V( P) R
  14.     point2(0) = 420 * Scal$ ]% c6 ^8 e1 J. G2 G' _
  15.     point2(1) = 297 * Scal; w! K3 ?* t2 }; t+ I* E, \! _
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()) o# A/ ~3 _9 v4 T- t: ?2 ^' z
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()% o) c9 l% e) K1 ^3 G) P% B
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees+ M1 A# w, T* t. ^
  19.     ThisDrawing.Regen acActiveViewport7 }% u- [3 ^9 G( A) s5 Q
  20.     ThisDrawing.Plot.NumberOfCopies = 1
    + I& T7 U: W) }1 ?3 b. N! j% ^
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow. s* a  w4 {( n8 t  b  @- H
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit
    - }, g7 T& o' {" _# J0 ]+ t
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True
    : W2 s; p; _5 u6 Q
  24.     ThisDrawing.Plot.QuietErrorMode = True3 W: {. J# R3 k1 J
  25.    
    - W9 m0 j$ a# }
  26.    
    0 u- s, B1 r  o& t9 o
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    7 |) V* g3 ~5 J2 `+ l
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4  R( B  [4 h( w. I/ L$ V* J
  29. '    RegCloseKey Result6 n2 i3 ^2 Z! t, `
  30.     ThisDrawing.Plot.PlotToFile path116 D3 j& K9 q8 r5 D' W* u
  31.    
    * }) k* I& l) _7 c$ W
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698
6 y; b# t; \$ o% v
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
& D4 D* w" D3 n, Q" P
原因在于PDF打印机的设置.0 n9 X  B) e; s( x$ V: L
打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因." |+ ?- Z* V0 d
点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.& R+ N8 D7 ?* u' L3 Z
另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件; C, C" F- o1 Y7 M; ?
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开

; r* X- g4 q8 `8 Z# V& r不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.0 m$ U# b0 D" Z
对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.
$ b1 \0 X% s1 t% T2007以上版本自带的"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 )

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