QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
系统
[系统通知] 平台第一个项目外包——项目拼多;正式上线,欢迎各单位个人有外包、设计、采购、加工需求的,在此寻找更牛的解决方案
2021-07-01
查看: 10124|回复: 2
收起左侧

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名" d5 M1 {% ^0 R6 G& K/ s

& g5 c) W! V* }; X我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
: Q- V5 G0 y% u! N* H3 a
( ^1 U: j: v: k/ {2 ]4 W9 S代码如下,请大虾指点,谢谢1 N; _: z6 m6 i
) J) J1 Q6 C* p* k6 v+ Q
  1.     . X9 C3 A" q* T$ _  c
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息
    / {3 R6 S" q! ?# H  m' K" A! c+ [9 t
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer
    " P) e$ z9 e; y6 P
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A3" b6 K* W8 Z% k" d$ A
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    # W$ `9 C! h3 w4 }: M
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    ( s  p- t: f' R3 ~6 f# m
  7. '    RegCloseKey Result
    8 Z, B  _5 x6 P! t& F( i% F! ^
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double
    . X. C8 l- W; H
  9.     Dim path11 As String
    $ ~4 M1 G8 P% r8 z
  10.     path11 = "D:\123.pdf"
    . r/ I& `% i2 o* F; A. T6 P
  11.     Scal = 39
    7 Q3 S# q& G( m/ Y# X
  12.     point1(0) = 0                                        '安装图17 T( x0 r4 \* M& |
  13.     point1(1) = 0# b/ K5 W9 S8 S9 Q+ `
  14.     point2(0) = 420 * Scal, K) Z( W- M( V0 [$ A( d
  15.     point2(1) = 297 * Scal$ b7 v4 }2 V% {8 m( J; Z8 D: v+ ^
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()+ Z# E7 F: `) a6 c# q, w
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()
    ( c" X, s6 Y! s* F/ @8 C. q; `
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees0 _3 Q- x$ U* s0 y) Q, h  v$ e
  19.     ThisDrawing.Regen acActiveViewport
    5 T& e0 m) B1 t9 r# k; r' o! o
  20.     ThisDrawing.Plot.NumberOfCopies = 17 }1 D8 }, e/ L6 p1 z0 j
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow
    0 q4 n) q  w2 M6 u1 Q
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit, h7 g: }1 V# }
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True
    4 A5 g1 t* j5 |' Y9 ^* F& S
  24.     ThisDrawing.Plot.QuietErrorMode = True
    % F8 C3 K$ g* {
  25.    
    0 @5 I7 K8 M+ p$ B% G
  26.     : ]% u& ~/ i8 M0 F: L, A0 ^
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result) i* v) O2 @! f) y7 ^
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    ' H0 f( u- v4 G
  29. '    RegCloseKey Result
    8 s+ p% }5 y" X7 t2 U1 y
  30.     ThisDrawing.Plot.PlotToFile path11
    + K/ d1 R1 Q8 `! q: V
  31.    
    " y% W" J2 W& i: D
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层
1# 157787698
& w: r9 d* Y* J3 i7 Z- s' p
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名

2 q- v# R2 z' u; b" ?原因在于PDF打印机的设置.2 b  ~* {0 ?$ K0 l
打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.
. h& l4 S5 V+ b; f: P" ?点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.  ^2 P, W0 Q! C* M
另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件
5 m' R! C: q+ a) J- X9 I2 V
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
5 t& E5 P7 U2 B  C" ?
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.
6 N* P8 B' G8 K& G. V/ C% w对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.
" \; W6 ]8 N1 P2 ~0 L7 P4 E/ T2007以上版本自带的"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 )

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