QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
# S% o8 b* s2 C' a9 b  L# U! b8 P* R6 _: ^$ U3 h( b( A* {# b2 O
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
9 {& |+ ~  t4 ^3 G' B/ J( ^" {2 K6 Q3 a; N$ x8 e& o
代码如下,请大虾指点,谢谢
$ W7 q' b. `4 Q2 N& _, t% z
+ O" i2 C8 d7 I5 J8 L
  1.     ' I' z# ~8 q$ q6 U# x" c: r& r+ `- m
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息
    0 ]* j3 x& V" F; f3 I) n: p
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer
    ) i& V# @, t# @! ~" E
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A3) x- Y7 n, C. |$ ~1 K
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    + }% |) X8 B7 l) i8 M
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    + u6 L& J8 I5 I* d4 b9 D2 G
  7. '    RegCloseKey Result
    * k% X  M) y0 w% A9 O# O& {
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double
    2 y' Z: r! o3 @; r
  9.     Dim path11 As String
    1 J; Z; \0 v: o
  10.     path11 = "D:\123.pdf"9 K; Q; {9 c( W* P2 F( t8 Z, q; y
  11.     Scal = 39
    7 B: w% a* M$ a: q1 D1 E
  12.     point1(0) = 0                                        '安装图1( B: Q' d" x* W. e1 i
  13.     point1(1) = 0. D" |' N7 z& T, {! \/ P
  14.     point2(0) = 420 * Scal
    7 }" a, ]% o% m9 K5 [
  15.     point2(1) = 297 * Scal
    ! j+ C0 o$ b$ Y$ ~" n- j2 Y- F
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()1 G& g! N; w: ^
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()$ d1 _' N& L9 _* y
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees
    $ M) ~/ A7 G) k
  19.     ThisDrawing.Regen acActiveViewport. u7 `! ?; N1 a
  20.     ThisDrawing.Plot.NumberOfCopies = 1' Z  T$ |( d% F! }  i, B1 f4 K6 j( v
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow
    + G, O8 Y4 p9 z" f% ?
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit) r" v, o( h! A- P8 A
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True; ]: q) M* \% K3 g0 T  e9 P6 R+ `
  24.     ThisDrawing.Plot.QuietErrorMode = True, c% h. t& t3 G* A" H9 j
  25.     1 @; R4 b* S* }  ~8 F+ f
  26.    
    1 ~* y; U6 y1 V/ k
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    9 y. ]$ C8 G3 @0 b3 Q' h; a
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    5 i, v0 s8 ?+ q! L" _+ P
  29. '    RegCloseKey Result
    2 g. V5 ?* B& i: o, l* T
  30.     ThisDrawing.Plot.PlotToFile path11
    ' B/ \& M4 u/ \9 s
  31.    
    3 ^! r, j5 y/ Z5 z- h# T0 w
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698
& v1 o! R& ]; Z4 h  R
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名

% _  L+ V% S. {! @  a原因在于PDF打印机的设置.$ \% |  s; v6 v) }% |% B4 s
打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.* S4 L( O$ @/ C& A, U3 o- c5 R/ E
点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.% Q4 H3 c! c7 ]7 N+ Z
另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件
" x" Z2 A8 P' h+ M) V1 a) }9 h
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
3 G: Z; `" [+ T6 X
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.
; z  h* z1 I% Z对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.' I. U7 D, p# L1 E" D
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 )

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