QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名& ?0 b4 Z" L8 y2 y% V

" y' b/ u, ~& ~4 M2 h. Q. D9 O我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
" q! t; A; A% y% w' L
( e7 Y, {! m9 G代码如下,请大虾指点,谢谢
/ [9 R9 K0 T) x6 e6 {6 l
# I9 H/ G+ p' V: ^$ z4 [
  1.     5 {5 {0 T5 N/ u( n3 ?" m
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息6 M  p! J! o+ t  J. Y; c7 K
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer
    8 s/ d2 ~5 p0 l" e
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A3
      t7 v4 j8 L# n) o: ~% t' w
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    7 [# l( u" Z) y4 Z& h2 V
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    * O% j- C: \5 O( ]9 a5 ~
  7. '    RegCloseKey Result8 y" k" t: b0 {; l" q' N7 B4 F2 `
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double
    ; U) \- ]1 ?7 g$ ^, o
  9.     Dim path11 As String1 p7 A9 b5 q! L
  10.     path11 = "D:\123.pdf": K8 a% a- ^5 O8 F6 t
  11.     Scal = 39
    8 \& Q+ [* }& K3 B8 T
  12.     point1(0) = 0                                        '安装图1
    ' m, I5 g5 Q- H
  13.     point1(1) = 0
      Z3 y8 e6 f% w, w- }
  14.     point2(0) = 420 * Scal
    5 v6 C* L8 z; R
  15.     point2(1) = 297 * Scal
    , S. M: q9 V3 |- m+ k- C
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()9 ]1 z& u9 r* M: R+ l
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()
    # W2 `) Y4 H! n
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees
    % x& k: h+ F6 w, p" |4 [" s/ B
  19.     ThisDrawing.Regen acActiveViewport$ m8 g5 _# M3 y
  20.     ThisDrawing.Plot.NumberOfCopies = 1
    ; b* g- s4 `# H' F  i% v4 Q5 v/ b% K
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow
    ) u2 @# u! i* _* l
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit
    3 f8 s0 x5 E& k& ?8 h7 h
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True: D6 K  |" U! w' k. u9 S
  24.     ThisDrawing.Plot.QuietErrorMode = True+ v7 T) h: B4 y& K1 j4 g1 Y
  25.     , _* U( _% s$ ~# n- K9 B6 U8 r4 Z
  26.    
    " ^- U6 q% T' |  D8 ?* A
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result" @$ o% B  Q- T$ l1 W& O
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    3 K0 T' k" j' `, F
  29. '    RegCloseKey Result; p( ?0 {5 r) w! G( j$ o& I9 T
  30.     ThisDrawing.Plot.PlotToFile path11& A6 Q: O* w+ A! H
  31.     . W& l1 u1 W$ K) R, C7 W
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层
1# 157787698
) L3 c, c  R5 b6 z4 I6 b* Z7 h$ k4 j
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名

" v9 D+ G# S: H* C0 b6 T+ S! h原因在于PDF打印机的设置.* j" ^9 `, |9 H+ j# C( w
打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.+ F  U' h. Q* f4 u( P7 w  `  d
点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.% S7 C6 C- g- R& o8 x
另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件7 [; ]# X! |+ D3 }; l
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
2 m. q# }5 e3 K) ^* c
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.
, v! K$ [9 z' F7 Q+ [$ E对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.
6 Z3 Q* _9 }& \, Q: n* 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 )

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