QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名
! `0 Q% G- m! s
% G1 H' X+ ]$ c我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开
3 g+ I$ e% \/ z) f$ l% r; z0 A" O+ S: K) z$ q
代码如下,请大虾指点,谢谢1 |, Z$ U+ ~, a1 m* A' `2 c

" C3 Q$ m1 E2 @  |* F% l8 I
  1.     + K) T% w( y  j# c0 L6 U
  2.     ThisDrawing.ModelSpace.Layout.RefreshPlotDeviceInfo   '刷新打印设备信息
      [, w) b/ B! P2 |0 A$ E
  3.     ThisDrawing.ModelSpace.Layout.ConfigName = "Adobe PDF"    '设置打印机为虚拟打印机 Microsoft Office Document Image Writer! V% ~1 K% _0 M( u. L
  4.     ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"    '设置纸型为A30 E+ H' P+ a8 P! b1 h
  5. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    & e  a+ t& n1 S1 ?, s
  6. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    ( ~1 U0 u  }" S7 ?# H2 M4 \9 @  c! s! i
  7. '    RegCloseKey Result
    " |; x& `8 J: J& H; E/ L
  8.     Dim point1(0 To 1) As Double, point2(0 To 1) As Double
    + `3 N7 j0 n# @6 ]+ Z" z
  9.     Dim path11 As String2 m! D8 E; e0 X4 i" r8 B+ @6 b
  10.     path11 = "D:\123.pdf". E0 N" ?& k; @
  11.     Scal = 39
    $ K) x, t* n+ F9 ^: \& [
  12.     point1(0) = 0                                        '安装图1+ \4 w6 Z% b; w: q
  13.     point1(1) = 07 y- O5 x1 X& N* ~% v3 D3 W
  14.     point2(0) = 420 * Scal
    9 G: F  v4 }/ g2 e# ^3 R
  15.     point2(1) = 297 * Scal
    ' i8 o( G! f. e7 c1 h
  16.     ThisDrawing.ActiveLayout.SetWindowToPlot point1(), point2()
    + H; T1 ~7 S+ A& C4 e; j
  17.     ThisDrawing.ActiveLayout.GetWindowToPlot point1(), point2()
    # B+ m. @( {  U9 H
  18.     ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees* E" v1 D: D% s1 o/ E
  19.     ThisDrawing.Regen acActiveViewport) `9 e8 Q" s) U7 [$ a/ ^
  20.     ThisDrawing.Plot.NumberOfCopies = 1" a, S8 n: R, c' O& E3 f# `
  21.     ThisDrawing.ModelSpace.Layout.PlotType = acWindow
    + m4 u' @0 [+ p! |" N
  22.     ThisDrawing.ModelSpace.Layout.StandardScale = acVpScaleToFit
    / A. L0 {& E/ |' z2 B# U4 s! C
  23.     ThisDrawing.ModelSpace.Layout.CenterPlot = True6 q3 k& `0 u: U" F
  24.     ThisDrawing.Plot.QuietErrorMode = True
    2 K/ @* k( |) ?1 k. K) N; \
  25.     ' j  t! e) H* x( f- p2 {0 q
  26.    
    7 c# d$ H' O$ j: L  c$ [
  27. '    RegOpenKeyEx HKEY_CURRENT_USER, regpath, 0, KEY_ALL_ACCESS, Result
    # ?0 I( ~7 P  ?; o
  28. '    RegSetValueEx Result, "OpenInMODI", 0, reg_dword, 0, 4
    1 E6 v' \1 H, H) Z7 ]
  29. '    RegCloseKey Result6 j  R7 U' q6 c# C0 B( U
  30.     ThisDrawing.Plot.PlotToFile path11
    * s$ |" h# t9 G
  31.    
    ! D+ {) F/ s9 ~# r2 C' M7 r5 a
复制代码
发表于 2011-9-2 21:24:33 | 显示全部楼层 来自: 中国辽宁
1# 157787698
1 }$ m) w+ B, h
下面代码中,如果使用PLOTTODEVICE方法,是可以打印成功的,但是需要手动输入文件名

0 _1 B3 L3 H  G( p% ~原因在于PDF打印机的设置.
, z7 K" N5 W8 y4 q  h; s# H打开它的"打印首选项"对话框,在"Adobe PDF 设置"选项卡下有四个下拉列表框,其中第三个是"Adobe PDF 输出文件夹",你的PDF打印机的该列表框中现在应该显示的是"提示 Adobe PDF 文件名",这就是你每次都要手动输入文件名的原因.3 B1 K3 I- B9 L, P
点击该列表框右面的"浏览"按钮,为它赋予一个默认路径,打印时它就会以布局名称为文件名自动保存在默认目录下.3 Y8 |- h, \9 [% ]( ]
另外,在其下面还有几个复选框,第一个是"查看 Adobe PDF 结果",如果选中了该复选框,每次PDF打印机创建了新文件后都会自动打开.不选中该复选框则不会打开创建的PDF文件
# O$ e' Y4 S9 G, y# z
我想让程序中自动输出文件名,所以使用了plottofile方法,结果却无法正确输出了,输出的PDF文件打不开

- S& u& d! `/ P# N不是所有的打印机都能打印到文件.这其中就有 Adobe PDF 打印机.
  k& l& r8 }$ N1 T' c, C  l对该打印机使用plottofile方法,实际输出的是"*.plt"文件(尽管它老老实实地按你程序中的设置把文件的扩展名写成了pdf),用记事本打开生成的所谓PDF文件就可以看到.
4 E9 l" ~; B, n: }- j( ?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 )

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