QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
6天前
查看: 10422|回复: 2
收起左侧

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名5 I, q! S* n& G8 G
7 z1 _% o* s) P* X7 A
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开8 M! ~$ P! z5 T: ?
1 d: k5 ]) b& B: k- i  S0 Y( i- ?
代码如下,请大虾指点,谢谢
* x- D6 x; @' C! j# V9 f* z1 z( H3 S! B
  1.     $ ]+ g0 e. |/ M! W0 j! h0 o
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息) `8 ?8 C' |/ j) l
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer
    + ], z* A3 a2 V* [
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A3
      F* {9 g9 U/ A# K  M4 a9 ]+ [
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result/ U; b( l/ h9 \( L- `0 v. m- S8 _
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    / I+ C7 F8 |* X
  7. '    RegCloseKey Result
    % R/ @5 [0 {$ Z' I3 }
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double0 s1 k$ t% `4 F4 N/ T
  9.     Dim path11 As String
    ; R3 V  r! x' y: p: U. u$ `
  10.     path11 = "D:\123.pdf": [7 \$ E! A+ {* i
  11.     Scal = 39
    5 |% O( q7 y* R: ]0 w% j, x- K
  12.     point1(0) = 0                                        '安装图1
    3 Y7 v# l: G7 G- H+ A; z$ s
  13.     point1(1) = 0
    % p/ V! l$ k$ R3 O
  14.     point2(0) = 420 * Scal  L$ A; H' S# X9 `$ u- P
  15.     point2(1) = 297 * Scal
    - ^" d' d0 S4 @5 B" _
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()' D: R( c' O! A- ^
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()
    6 c0 M2 X. }. \8 @/ u" N
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees1 I0 h" |. r, E, ]# b2 w1 K
  19.     ThisDrawing.Regen acActiveViewport
    ) M7 l; d+ S, m* T$ O
  20.     ThisDrawing.Plot.NumberOfCopies = 1
    5 e0 Q( n1 C7 ]7 N2 f
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow( y# [2 J1 ^2 s# D
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit3 j5 y1 B7 @& d; a3 m; x3 T
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True
    & a; V6 x% o8 |. N
  24.     ThisDrawing.Plot.QuietErrorMode = True% T5 l* n! U" U1 \
  25.    
    2 y& Z( @% \6 e5 K* C  M5 ^
  26.     : `! o$ j4 U! \4 ~$ J
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result/ B) a* y8 N8 Q; |( e: n& k" W
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
      B2 z" s2 V# l8 a( u3 t
  29. '    RegCloseKey Result
    ; {3 O2 D$ b# y6 G! `2 E& I
  30.     ThisDrawing.Plot.PlotToFile path117 O, T( k8 m" C& |; [  r1 Q
  31.    
    & ]: h6 s) V* N% {' [+ M6 J, X+ [+ I- M
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698 ) a% C5 K7 G$ V
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
. T3 g$ A# F' {5 K  P. K3 ?
原因在于PDF打印机的设置.
3 @2 D6 Y5 S6 q4 W5 P3 {打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.
7 N  f2 d& ]" N( X点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.
2 P! [6 o$ @0 b另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件# v- E# z  E: S0 O/ u0 B# m
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
. v8 X5 ~! \+ o6 z
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机., @9 k- p9 i5 ~) Q
对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.
' l+ d* u# m3 J$ n/ X2007以上版本自带的"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 )

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