QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
" @9 @. x( e" G/ l) H6 r5 ]) _: p/ B7 q" P- i( I4 P5 y% H
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开; Q8 N" @9 r- ~
: L2 E% @% v1 E0 M* d4 ?- ?
代码如下,请大虾指点,谢谢
( P! _7 e& g! J; y" T& h: q+ u) y, Q6 S/ @, S, P) B
  1.     7 {* X- B- X" Z+ t" z! B4 R
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息
    : C3 z  b6 h( z+ x) J* H
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer
    ) n; P7 H2 A. F9 |/ s/ F. K
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A3
    7 j9 \9 q. F' c$ }- b9 s
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    " \  ?( z9 S& O. m* _- A( Q0 U
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    8 \9 ^7 i$ V  [. X2 z
  7. '    RegCloseKey Result' Z5 L# R9 W3 t3 g- q0 R5 v& l
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double
    % `% S& A/ h3 A1 M8 a9 O
  9.     Dim path11 As String
      d. m+ D+ {: A+ _+ N9 I, @
  10.     path11 = "D:\123.pdf"3 i/ d* |8 x* H( T$ b' }
  11.     Scal = 39
    ) |% V; ^+ \! Q) Q& M
  12.     point1(0) = 0                                        '安装图10 |+ P: s' q/ x+ N7 F$ D7 f
  13.     point1(1) = 0$ z4 H. N1 \0 w# A5 N. {  G' L
  14.     point2(0) = 420 * Scal% H9 ?* q( g5 @- T% X5 U
  15.     point2(1) = 297 * Scal# Q0 ~% l9 M  P7 P) K' g7 F7 a, E! w
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()
    1 H: N7 h* B; B8 L8 G7 K
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()
    + D3 g5 r2 F& Z" ]
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees
    8 P  I2 i2 C0 O
  19.     ThisDrawing.Regen acActiveViewport
    6 E) q! A6 q- L9 c1 j: l* K
  20.     ThisDrawing.Plot.NumberOfCopies = 1
    9 K4 f% I* h% f: l7 D+ T
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow
    $ {  c) k! u. H) N# A0 h. O7 Y
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit
    " e' Z. Z! Q/ I; k' a7 F/ _0 A
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True8 A* k6 W$ N9 M& u9 |: R6 |3 o+ ?
  24.     ThisDrawing.Plot.QuietErrorMode = True' z4 B! ^+ T: r) N9 ~4 y% q& h4 N- G2 I
  25.     + O) z2 [6 v" V5 D! i& c! ]* \3 n$ e
  26.    
    * q1 }* Z% v1 L+ ]/ h
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    ) Y: A6 s( i1 \
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 47 n& @8 x' E& T. h  Z
  29. '    RegCloseKey Result* |5 S  H1 `9 `6 v% J5 L
  30.     ThisDrawing.Plot.PlotToFile path114 |8 J" Z% o9 H1 d0 P* f/ S$ r+ t
  31.     1 X: N, [- c+ C
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698
( v: y. a7 y- j& Y4 ~
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
4 t5 E% y# J# F6 r
原因在于PDF打印机的设置.
3 l# v( F3 K- L5 d/ i6 B8 K, Y打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.$ f3 O1 y2 C5 G& v
点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下./ h6 A. h( J: a; q+ W; A5 z
另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件
( t6 r. s8 i+ C, K; e; j1 ~
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
+ H. ^) P6 O# T
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.
* t# }7 t+ N' g/ n% X; N1 _* D对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.
0 L0 o/ S1 \: T4 ^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 )

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