QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名3 ~, k1 i* J' Y( W. q+ E

; K; b5 @+ Y- l  O) B$ R我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开# Y/ X/ ~) }7 [8 ^9 O' c

8 ?$ T) O- d  ^/ U3 @2 C代码如下,请大虾指点,谢谢/ ?, w2 e5 x% @' h
; c8 E0 I( L- g
  1.     5 R7 o0 |; N0 c& _
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息
    8 T$ N0 i' e6 r1 J% Z& W9 [% H1 z
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer. _2 x! ~) }4 }* v
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A3: t1 t+ J7 h0 U. J+ I4 O3 g
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    / Q# |- x9 K% n$ }0 v: ^
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4, m  _: `3 e3 e/ u
  7. '    RegCloseKey Result
    9 ^; w( l7 A  V4 z0 ~1 P! L8 t
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double
    & v3 M1 V% i& {& p6 u
  9.     Dim path11 As String; C0 j' E; `- U
  10.     path11 = "D:\123.pdf"3 \6 \" r! o; O* K. l9 y& ^
  11.     Scal = 39
    8 Y/ M6 P+ {/ T6 a" N
  12.     point1(0) = 0                                        '安装图1
    # E! F; r) K: p" i. J
  13.     point1(1) = 0
    - A, R- ^+ f6 G7 q
  14.     point2(0) = 420 * Scal
    ; P& Q7 D0 [. r/ a
  15.     point2(1) = 297 * Scal) @  I3 V& a& p8 G1 ?* h/ v
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()% u8 e6 f0 z; I9 z, o
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()
    + c* H/ j9 n  |2 G0 q8 m! b
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees
    " X* k$ |7 h  ]1 x& Z! M/ h
  19.     ThisDrawing.Regen acActiveViewport
    4 S' D6 q: F7 s$ ^6 N
  20.     ThisDrawing.Plot.NumberOfCopies = 1
      x! t% J8 g$ R' Y, A/ b9 H$ h% p
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow
    5 b# Z$ V$ a$ ?% L2 X
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit$ @6 J/ z# ^1 z6 I7 m
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True
    " p/ M# o# y# ?( R4 j
  24.     ThisDrawing.Plot.QuietErrorMode = True
    / i. ?( @: W: ^  g
  25.    
      k' |) Q/ R) O% ?
  26.     ) b& h$ Z9 ~8 u  t6 q
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result: x( s# R6 ?) G: M$ x8 t* C
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4- k1 k. D$ F; q/ C
  29. '    RegCloseKey Result1 d) K: a0 b+ Y9 O# x
  30.     ThisDrawing.Plot.PlotToFile path11
    ( n# ~" ]% c+ P0 a9 p" |4 Y
  31.    
    $ w- m& l9 K7 W' z0 J
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698
& W, G# d& X+ @. _$ x, t0 B/ |
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
8 l. J% W3 ^3 S$ ?- i* ^) g
原因在于PDF打印机的设置.
( ~# N3 Z1 {" C打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.- W0 C, z# S0 G& J- I
点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.
( k8 |* S( v4 l* G1 G另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件
; ^) L. E5 y4 Y; d
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开

1 ]7 Z' i) U; Q9 E不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.
, k# M! K3 M! \$ N( h6 [+ W9 `# @对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.
0 H4 ]1 i5 r4 q. f6 n0 |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 )

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