QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 10335|回复: 2
收起左侧

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名3 j3 W2 l9 a/ C0 V; B" [$ T" n. J- j% a

7 r6 k% n1 h2 ~$ {) a; z; N& T1 \" X我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开2 N( ^& g0 D. l+ d
: z: o9 a$ y5 g& u5 m# b
代码如下,请大虾指点,谢谢
& d7 b; N/ I$ J0 _  k) {% U) C& d; q; K7 M. |0 N8 ]
  1.    
    8 z# }& E3 V; M  h) S
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息
    $ y3 B& [9 i1 m6 j$ U3 Q) d/ a
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer
    ( c, ], Y/ }2 S2 [4 c  s
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A36 h# I* r  z" K! V- W
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result# E7 ]- ]) H+ W: Y: U3 x; E6 ~* `0 |
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    0 B/ y* G! r- p( M5 {
  7. '    RegCloseKey Result3 p8 m: p4 g; z) u4 P2 `% L3 y! G
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double8 [" K0 B4 Z$ U, Y
  9.     Dim path11 As String' |9 |$ i  t4 T+ G$ X) P; {
  10.     path11 = "D:\123.pdf"0 C0 f  D9 q3 p- ?
  11.     Scal = 39
    $ s+ \: p' H! I
  12.     point1(0) = 0                                        '安装图14 Q, I) Y$ @0 v9 v8 s" i, A! m
  13.     point1(1) = 0
    ; d3 f! I! m2 B
  14.     point2(0) = 420 * Scal
    1 t2 A3 a6 J) l4 ?* b9 ?+ f
  15.     point2(1) = 297 * Scal
    # r" J/ ?' J* V
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()
    8 S; |' r$ J, J1 x* V  Q! S
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()
    3 n$ T3 U2 v3 k+ C: J! ~' n
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees
    3 R& z5 R8 s( i7 C8 }6 Q
  19.     ThisDrawing.Regen acActiveViewport
    & I3 S  a1 T+ ?/ \- U3 S
  20.     ThisDrawing.Plot.NumberOfCopies = 1& U. y1 ]) \( U' b% R
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow8 J( {3 q, t0 u3 z! V  g
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit
    5 V: u8 `& O% B! a; H; l
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True8 A) D+ C1 }- I' b& w3 K5 D
  24.     ThisDrawing.Plot.QuietErrorMode = True" @+ V4 o6 D6 u  v5 S$ X/ a, ^  O
  25.     ! a( R8 E: f' H6 E- O* C
  26.     / `' a6 F3 m' n
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    7 T1 s3 f, f( z$ @' u: r: Q. N# f
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4+ w8 U3 {! a" p, W! S/ g3 Y
  29. '    RegCloseKey Result
      U# y( Q# V" T9 Y
  30.     ThisDrawing.Plot.PlotToFile path119 h$ T  q- Q* P3 j) Y0 k
  31.     % g) }% h2 _' e% w
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698 2 h6 o0 g, |: b$ M2 ^" c# J8 B* R$ I
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
& [7 |( T1 V" L, O' [! g; w
原因在于PDF打印机的设置.) q, _; Y) H& ~
打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.  r/ j2 Y' {9 s2 h
点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.3 Q' T; G$ G# t9 L
另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件
/ _" X  }) n- k! Q
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
& ]) n( G+ E4 r+ n
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.0 v, H* D0 p. a) Z( `4 g" v. f4 W
对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.- i0 {/ K# q) B
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 )

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