QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
1小时前
查看: 10455|回复: 2
收起左侧

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名# t2 c8 Q4 j6 W/ \4 ^& P1 f9 U
  F# H. L5 H: r" u0 D. L
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开6 z) ?& x0 l7 K: U6 ^1 r. I  _: @
* b3 G3 K; Y+ Q
代码如下,请大虾指点,谢谢
) J( l  {! A1 _5 t: ]
, Q1 {( u& k3 y6 {$ G/ i
  1.    
    8 s2 |, O1 P" [% h
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息3 k2 _0 g6 Z5 p& K5 w1 j5 }
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer& j/ f' v) ^1 \8 O* N$ m  w
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A3
    4 `: H2 q; d* N. T
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result# [) g7 [& k  Y! t. H, B- z
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    2 A/ D2 S, c- `$ T+ b
  7. '    RegCloseKey Result
    ) z0 d5 n, o- o4 T, F
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double2 \% x% ~# h7 f* b
  9.     Dim path11 As String* R6 Q9 U( e, z) Z% @: J
  10.     path11 = "D:\123.pdf"7 U' V. w' c" ~; S" W1 J2 S
  11.     Scal = 39
    1 f+ ^( n1 Y4 [& s+ F
  12.     point1(0) = 0                                        '安装图1$ U: o7 M8 `7 h
  13.     point1(1) = 0
    2 g- o0 J9 N, n' K% Y1 ~; R9 D
  14.     point2(0) = 420 * Scal
    " w7 s% m4 M2 ?6 R' D
  15.     point2(1) = 297 * Scal
    , F# |( X& _( c" L3 y% v
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()) {8 Z! |9 g: F1 m
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()6 x" N/ }9 I& K3 b
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees4 c7 x; t9 K% A+ V7 ^8 a
  19.     ThisDrawing.Regen acActiveViewport
    7 P: O: b0 V# v1 g0 P
  20.     ThisDrawing.Plot.NumberOfCopies = 1! G3 G7 s  ?% b7 ?
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow
    * E& K  I! g+ P% x  Q
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit5 J: ^( K* h# x; j5 C, v' m
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True0 `( P9 u& }' R1 e$ h
  24.     ThisDrawing.Plot.QuietErrorMode = True
    * e9 `6 G* f2 E4 k8 ?3 q9 G& t1 j
  25.     * q* Q) W: v* r! ~) c( S3 I
  26.    
    & `6 {0 V0 ]$ F) B" d9 v' N" x! b
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
      g" w; V- g! n$ X- A
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 48 Y; x1 h; l3 _: |
  29. '    RegCloseKey Result2 d5 _8 l+ |+ a" p' Y! u
  30.     ThisDrawing.Plot.PlotToFile path11
    1 x9 a+ L5 Z: H0 X# B
  31.     / t1 _+ h+ x8 m, R+ O
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698
% |# z2 x7 N1 R
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名

+ E: |& D% |6 t" s$ {" R' R原因在于PDF打印机的设置.
4 K: |+ Z; Q% b( B; _4 m打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.( M1 _0 p; _$ z
点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.
, h! ~4 A' N$ H- H' c& y9 ^+ ?另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件
5 M8 F9 U- A: ?
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
3 t7 J' M3 b( W
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.
# A* O7 a4 D( d  {; m8 L0 ?对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.2 s- f" e1 p$ S, V6 @) y$ n: u
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 )

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