QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 10452|回复: 2
收起左侧

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名" H: k) ]9 m! r5 Q; v: o

5 `. `, |- }4 J我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开5 P! W% J, v3 ]5 i# }0 _
* h0 m1 F- g3 I+ y6 Q; q9 K6 L
代码如下,请大虾指点,谢谢& D2 [) W% m8 w

2 n# K+ R6 E" w! [5 J( |
  1.     . Y$ [! B6 s; T
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息
    $ S* g' q0 n) h: O
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer7 n0 _- r9 c4 m5 i% y
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A3
    ) X3 K  P2 L5 C+ c4 u
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    9 l" ]- ~4 s- S9 _4 T2 X
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    - t. _( h2 R$ {" `$ g- h
  7. '    RegCloseKey Result# v* y9 F) X$ J& l
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double
    9 T; e: J' W( h- N' z2 B, R9 c
  9.     Dim path11 As String; @5 p) y+ R2 m6 c4 F+ Z
  10.     path11 = "D:\123.pdf"( y$ b: `% v, ]. ?. z
  11.     Scal = 39$ a% J1 v2 y6 }
  12.     point1(0) = 0                                        '安装图1
    * H4 n1 ?  D' r. T
  13.     point1(1) = 0
    . |2 t+ @" z5 Y. |) L5 d3 ~
  14.     point2(0) = 420 * Scal
    & F% O7 U4 @% n$ y. \* y. \
  15.     point2(1) = 297 * Scal
    ' L8 H, u/ a. X
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()1 Y9 x$ \( q4 W- D' H; F, {, l
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()8 C, f+ z" n3 f5 `$ y  x9 z
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees. U5 E2 ~# s4 ?; D' D( N+ F8 m4 R% |1 {
  19.     ThisDrawing.Regen acActiveViewport" g6 j& v, P+ V  I/ U
  20.     ThisDrawing.Plot.NumberOfCopies = 1" l: n3 y7 [3 T0 i2 ]4 x( b/ P
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow& L7 e1 M9 f& ^
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit
    , @0 c& z* K* v! C. T
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True
    $ R- y& X: G( g$ o
  24.     ThisDrawing.Plot.QuietErrorMode = True5 o& f! {" [* ^( @) `) T( m: n. R, R0 k6 F
  25.    
    & z) {4 v) ]; \! Y8 a6 V2 B6 q5 H+ M
  26.    
    * C3 ^5 X& w1 ]2 i+ h5 s: e
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    2 ?9 y' A  D7 s
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    8 [/ X7 ?; _. }; b) {
  29. '    RegCloseKey Result
    0 }4 S8 \; j  L2 L
  30.     ThisDrawing.Plot.PlotToFile path113 |4 x! a: x+ M. f$ F+ h* n2 H
  31.     / R2 B/ P" u3 u+ s$ r# w. O3 P! e
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698 # I0 T4 x$ J& }1 u
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名

* f+ {! i& v6 i9 Y原因在于PDF打印机的设置.* t6 N8 ?9 }0 u: B# s
打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.
9 N* A  J! y( Q- H% t; V点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.
. E8 N, p* Y; Y! q另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件+ {3 K9 C  B( ^' {( _
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
  a9 r1 z' s% m8 D2 c# Y& z
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.% N1 ^1 ~- l0 M6 p* G6 {# \( a( K1 ?" ]$ T
对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.1 D2 e! M! E( n* Q
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 )

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