QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名  y& d, z5 D% \' l* z, L; P

0 t, i( G9 Q6 p: w# \9 }我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
/ e' O+ M* i. l" ~- S
7 ?: ]4 ?& c- H' w代码如下,请大虾指点,谢谢
9 x# s, }9 ?- \4 p5 Q
1 m! j  q: I- `0 X+ A5 x
  1.    
    & {4 f+ E, A' d
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息2 j# P& m4 M. y
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer
    " u  T$ e1 R- h0 F: J
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A3
    - _' Q6 ~1 B: E$ A4 |1 a9 G! k
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result' V" s( ~# m$ a: _1 M' o# b; n
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    $ }$ W; L7 ^3 Y" D7 X
  7. '    RegCloseKey Result' }) x$ i. e" `: p& z- Q5 V4 r3 D
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double
      b7 _: r) M' W1 M3 @
  9.     Dim path11 As String# t* L# m% P5 F/ y. n* I  z
  10.     path11 = "D:\123.pdf"
    ) u) l9 X. Q8 Z; O
  11.     Scal = 39
    : N/ \1 s: m3 ], h( H6 b
  12.     point1(0) = 0                                        '安装图1
    3 s/ ^$ d* a3 D2 `( e3 `8 P% `
  13.     point1(1) = 0$ [9 W. [  d5 R" v& |* J* D; u
  14.     point2(0) = 420 * Scal/ b* d& X) }  v3 q6 ]
  15.     point2(1) = 297 * Scal
    7 Y: N+ L( y0 r/ B% e" A
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()
    8 }1 f" d0 ?4 H7 \
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()# w3 G( H) v7 P6 f5 m5 j9 H' e
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees$ ?2 e' [7 C/ f0 C5 z5 s+ _
  19.     ThisDrawing.Regen acActiveViewport
    * O0 T# X  \7 x( z/ k. E( N- c1 x; q
  20.     ThisDrawing.Plot.NumberOfCopies = 1
    % Z" o: h  J0 p
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow5 e) e4 P$ U) e9 s- i# @$ F* T
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit
    3 c9 M! n7 k5 o, _; p
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True
    ( F" u6 M8 z7 X! O6 B# W
  24.     ThisDrawing.Plot.QuietErrorMode = True
    6 _7 y0 F, t" h# z2 J+ l
  25.    
    * `7 Q5 I3 ~4 P+ {* t+ j
  26.    
      F* @( ~* {8 F7 Q
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    # z( K" S3 |' ^# e9 e
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 46 Y' B/ w' ]! s/ H7 T% s9 B8 V  F
  29. '    RegCloseKey Result
    , r7 G/ m1 H5 g% v7 ]3 X9 m5 D2 ^
  30.     ThisDrawing.Plot.PlotToFile path11% S  a: w2 P  O% J. k8 A
  31.     . C) T/ k" U( ~, k, P5 S
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698 ( A; |$ h8 W5 c1 o* ^7 d# ?
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
+ a8 e$ l0 R- i
原因在于PDF打印机的设置.) f7 q! e( g- c8 s7 z1 }& g/ M
打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.
* D( G( K" f# t8 Z1 a7 z, y% d7 L点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.3 K% {6 }: W' F; M, j  w
另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件
* b5 f; ]  o, C7 C& B  {4 u3 U
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
: [' r/ n! P6 B: f5 k2 y" M  L
不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.
0 }" I2 e$ h9 l* |; b9 J4 _对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.
  X3 f* s6 p; C  z6 K- j2007以上版本自带的"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 )

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