QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 10331|回复: 2
收起左侧

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名% m0 a3 I8 d2 ^6 G
: G7 O1 y8 ^. r$ P* M$ O
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
+ D0 U" B- l% w  ~; t2 p1 m, S# g5 h, l: p/ @
代码如下,请大虾指点,谢谢
2 [# a7 x* S& |, `
7 O* t0 J$ @  u/ t5 w2 E: A
  1.     9 ~+ p1 ~3 A" v0 r8 S# v, L4 C8 x* W
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息1 M; q! w% o  o! l
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer: U: q: \- v  Y
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A32 ?! s& i& V! J$ m. ?- |2 \
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    % ^9 D2 ?6 Z. Y& K
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 47 P; Q* n$ y; \4 F2 Y
  7. '    RegCloseKey Result
    : D# k& C) o6 @: z4 b9 j% w* p
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double
    # n% Z3 k! N) d8 h0 I3 ^, _
  9.     Dim path11 As String
    2 X& C5 t+ W1 A+ S! O  X
  10.     path11 = "D:\123.pdf", A1 Y2 M$ _/ D+ }4 A% v' T
  11.     Scal = 39
    , h& Y! C9 G% h: T
  12.     point1(0) = 0                                        '安装图1
    : I2 H' b5 H# ^9 Q. h
  13.     point1(1) = 0
    6 o/ @; U% [3 r
  14.     point2(0) = 420 * Scal
    6 U4 X+ ~- Y4 _1 z$ A& x
  15.     point2(1) = 297 * Scal
    0 U) {: |' g0 s/ C5 n
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()
    . ?5 F4 y; y0 z
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2(), Q6 R$ o- g/ B+ I+ v) ]
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees# Z. M, m) X; t& N8 I
  19.     ThisDrawing.Regen acActiveViewport. P/ \: E1 ?' {. G1 K7 n
  20.     ThisDrawing.Plot.NumberOfCopies = 1
    , \$ x) O2 u' K, E9 P
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow
    5 r  F+ G+ z" Q, M) N( T
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit9 \0 Q+ ?% ]" A' Y/ E  t) b
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True: L: ?) n, a! Y  z; D% R
  24.     ThisDrawing.Plot.QuietErrorMode = True9 u( N0 o; T' V  s1 F. X3 E( h
  25.    
    ' X6 }! X' o6 x3 R: w1 F3 {
  26.    
    ) ~  L  U7 ~+ S# q8 }& o
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result+ D9 X) |( y8 j5 t' C) d
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 40 k) r; A" f9 \2 V5 c- v
  29. '    RegCloseKey Result
    9 ?& X; L2 a4 P
  30.     ThisDrawing.Plot.PlotToFile path11# T1 v2 s4 b# l$ p  B
  31.    
    % U" b+ A7 j) k7 W7 m
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698
- A4 f  M. v7 G5 Y0 V
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
: Y" f3 g/ U+ g. g
原因在于PDF打印机的设置.2 A' Z$ a- i+ R; t! z) W
打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.
" ?5 l1 C# T3 S/ {3 l, Y; [+ h点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.
5 n) |' C' I" Y另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件
# {. X/ W5 W0 }8 X/ J/ f, d
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
+ O; x% y$ ?9 {5 W* ], i3 ~8 U
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.4 p5 T4 T+ r" Z  [, P' t4 x
对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.4 @% T* s- I, b" F, p
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 )

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