QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
全站
goto3d 说: 在线网校新上线表哥同事(Mastercam2022)+虞为民版大(inventor2022)的最新课程,来围观吧!
2021-06-26
查看: 10127|回复: 2
收起左侧

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

[复制链接]
发表于 2011-9-2 13:48:41 | 显示全部楼层 |阅读模式

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名, l# c) c* S+ y) I" s; ~2 \
4 J5 |+ K) Q0 ?3 _, j- c3 w( |* W' b
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
$ t' h3 o8 C, M- g+ l+ c% f0 ]5 z# {2 N9 f% l
代码如下,请大虾指点,谢谢
7 A: |( R7 N8 k& S) n7 J, f- M* z4 [3 v
  1.    
    7 B4 L  I: m+ L: e* E
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息  N, w/ S  _  `# U1 A
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer4 ^% b7 t9 h) m4 X2 L- n) C
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A3' [* {* A% ^, S5 O' f1 Q: i
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result9 U& r- [( i9 v. Y& e7 t3 J
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 48 G' E0 C4 ?9 H
  7. '    RegCloseKey Result* h7 I# S0 c6 h2 M1 \
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double0 O. K. V9 T* g" @1 e: \) g/ A: l1 r
  9.     Dim path11 As String; h2 X: E. @0 E  y  k8 M/ o$ J( s
  10.     path11 = "D:\123.pdf"* \4 a+ }" n' u/ ^" X2 c
  11.     Scal = 39: D7 x# S6 W+ h! `# v  z7 F7 z
  12.     point1(0) = 0                                        '安装图1
    # [6 x' X( X' u& e2 |
  13.     point1(1) = 0
    4 T, [5 a& H+ e% |  V6 _: w6 p
  14.     point2(0) = 420 * Scal
    : R* h  p5 x5 Q! k) E( ^
  15.     point2(1) = 297 * Scal
    % B& W; f7 ~  r  q% S& e; m7 {- r" X
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()
    $ {5 @. S- e1 u
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2(); x7 M. n* s! f0 x
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees
    5 J& _0 H- u) o3 P& ?
  19.     ThisDrawing.Regen acActiveViewport8 f# v1 ?% g) b+ J6 \; w0 s* L! v
  20.     ThisDrawing.Plot.NumberOfCopies = 1* q0 d) k7 r' a+ C5 L
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow
      l- s' P, F9 @3 _5 W
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit! \$ F' G6 Z8 R' Q  O
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True
    1 d' X1 f2 W% Z( S
  24.     ThisDrawing.Plot.QuietErrorMode = True
    # b' \$ G% Y8 o  Y( \- n
  25.    
    # U/ @5 F( x! P: W! B  R# `% W
  26.     ) _9 Q: S, f8 H( q. v
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result  N. \1 k. \* r4 E4 ]* ]
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    ! \  _8 ]# H& U; l5 y# f! {
  29. '    RegCloseKey Result
    0 W6 i7 N. s* l9 F) Z2 _/ a
  30.     ThisDrawing.Plot.PlotToFile path11
    % m+ ^4 _/ b) g: x2 k
  31.    
    , P9 t( Y+ a& I) j, R- z
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层
1# 157787698
- x. Z, f& H7 m, Q/ W; L
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名

3 q# \  O' Q. g" n原因在于PDF打印机的设置.
; t2 |3 Y3 K! O5 E- c6 ~, h打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.
5 e$ ?# h5 t9 m# @点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.6 z: I: C7 ?7 l; B
另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件8 |4 Q- \9 y2 L" z- {* C" d. Q
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
6 D/ L2 x( I( n* c! x$ h
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机." t7 S9 ?' n' A7 l5 B4 e
对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.
: n0 {: S0 o. V7 O. H2007以上版本自带的"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 )

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