tiger8888 发表于 2004-12-23 18:18:00

真的不明白,怎么会每一张图用的纸张都不一样呢?


我常用的就是a0,a1,a2,a3,a4,再有一自定义的纸张,怎么会每张图纸都不一样呢?楼上的兄弟能否详细说说你的情况。


另外vba好像真的实现不了自定义纸张。

zhang007 发表于 2004-12-24 11:28:00

我找了一下相关文档,看哪个高手能开出来


如果您使用Win98/me系统,您可以设置VB的 printer object的Width和Height属性或Papersize属性调整打印的纸张大小。


  相关信息请参考:


   PaperSize Property


   <A href="http://msdn.microsoft.com/library/en-us/vb98/html/vbproPaperSize.asp" target="_blank" >http://msdn.microsoft.com/library/en-us/vb98/html/vbproPaperSize.asp</A>


   Height, Width Properties


   <A href="http://msdn.microsoft.com/library/en-us/vb98/html/vbproheight.asp" target="_blank" >http://msdn.microsoft.com/library/en-us/vb98/html/vbproheight.asp</A>


  如果您使用Win2000/NT系统,纸张的大小由DevMode结构的四个属性决定:


   dmPaperSize As Integer


   dmPaperLength As Integer


   dmPaperWidth As Integer


   dmFormName As String * CCHFORMNAME


  其中dmFormName用于NT系统中指定打印纸张大小为预定义的某个纸张(Form),但是VB的 printer object不支持FormName属性,您可以通过API函数DocumentProperties修改DevMode结构的dmFormName属性实现自定义打印。


  分两步做:


  1. 先在打印机目录下,从File菜单下进入Server Properties对话框,在这里您可以手工添加自定义纸张,您也可以用API函数AddForm在程序中添加自定义纸张。


  2. 在您的程序中,用API函数DocumentProperties获得当前打印机的设置并修改dmFormName为前面添加的自定义纸张。


  关于DevMode结构和DocumentProperties的使用可参考下面的例子。


  Q282474 HOWTO: Print Using Custom Page Sizes on Windows NT/2000<BR>  <A href="http://support.microsoft.com/support/kb/articles/q282/4/74.asp" target="_blank" >http://support.microsoft.com/support/kb/articles/q282/4/74.asp</A><BR>  Q180645 FIX: Cannot Change Page Settings During Print Job<BR>  <A href="http://support.microsoft.com/support/kb/articles/q180/6/45.asp" target="_blank" >http://support.microsoft.com/support/kb/articles/q180/6/45.asp</A><BR> <BR>  API函数的相关信息请参考:


  AddForm


  <A href="http://msdn.microsoft.com/library/en-us/gdi/prntspol_0prh.asp" target="_blank" >http://msdn.microsoft.com/library/en-us/gdi/prntspol_0prh.asp</A>


  DocumentProperties


  <A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/prntspol_7k1f.asp" target="_blank" >http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/prntspol_7k1f.asp</A> <BR>

CLARKLEE 发表于 2004-12-24 17:29:00

vba可以设定打印机及纸张大小(只要打印机支持就行),但是如果想你所说的每张图纸出土的大小都不一样,能实现又能么杨么


送你一段设定打印机的代码吧,希望对你又帮助,这是我变得批量打印程序的一段


'===================================<BR>                       '===================================<BR>                       '========如果有打印任务=============<BR>                       '===================================<BR>                       '===================================<BR>                       <BR>                       DoEvents<BR>                       If Check4.Value = 1 Then<BR>                       cadmessage.Label7.Caption = "正在设置打印机。。。。。。"<BR>                       '6,设置打印设备<BR>                       dwgfile.ActiveLayout.ConfigName = Combo2.Text<BR>                       '7,设置打印模式<BR>                       dwgfile.ActiveLayout.StyleSheet = Combo3.Text<BR>                       '1,图纸尺寸与单位<BR>                       dwgfile.ActiveLayout.CanonicalMediaName = Combo4.Text<BR>                       dwgfile.ActiveLayout.PaperUnits = acMillimeters<BR>                       '2,调整打印原点<BR>                       Dim BASEPIONT As Variant<BR>                       BASEPIONT = dwgfile.ActiveLayout.PlotOrigin<BR>                       dwgfile.ActiveLayout.CenterPlot = True<BR>                       <BR>                       '3,设置打印区域<BR>                       dwgfile.ActiveLayout.PlotType = acExtents<BR>                       '4,设置打印比例<BR>                       dwgfile.ActiveLayout.StandardScale = acScaleToFit<BR>                       <BR>                       '5,设置线宽比例<BR>                       dwgfile.ActiveLayout.ScaleLineweights = False '建议不要设置线宽缩放<BR>                       dwgfile.ActiveLayout.PlotRotation = ac90degrees<BR>                       '打印机已选择<BR>                       cadmessage.Label7.Caption = "正在打印。。。。。。"<BR>                       dwgfile.Plot.PlotToDevice<BR>                       '开始打印<BR>                       <BR>                       End If

tiger8888 发表于 2004-12-24 19:50:00

vba可以设定打印机及纸张,但不能自定义纸张

mccad 发表于 2004-12-24 22:43:00

我不明白为什么要自定义纸张。<BR>做为普通的纸张,也就是那么几个规格。<BR>我不相信你看了图纸的大小后自己去裁不同大小的纸张来打印。<BR>如果你要自定义的纸张也有规格,可以手工先在打印样式表中设定。大不了在交程序时把样式表一起交给客户。程序中就直接调用你的样式表也可以。<BR>如果你只是在一般尺寸的纸张上打印不同尺寸的图,你只需要设定不同的打印比例就可以,纸张也可以留些空白出来,没有必要刚好打满。

zhang007 发表于 2004-12-25 12:07:00

看来大家都不理解,我这里的图纸是地质图之类的东西,图幅不确定,大的有1400*800,全部使用卷筒纸打印,所以每次都要自定义纸张,我已下了一个例程,太长了,看得我头都大了。

asahix 发表于 2004-12-27 11:05:00




zhang老兄,能否共享一下你下载的好东东?也许我看不懂。<BR>顺便说一下,我这边图纸大小,窄的有297*500~2000,宽的有841*1500~3000,当然都是滚筒打印机,型号有HP1050c plus,lp2020精工sii<BR>

291118 发表于 2005-1-12 10:43:00

可以实现,我最近做了一个专门批打印CAD的软件!

asahix 发表于 2005-1-12 15:40:00

能否共享一下?

328302216 发表于 2013-3-20 13:13:56

楼主想的这个实现了没!弄来开开眼界~~ 顺便学习一下给个思路也行
页: 1 [2]
查看完整版本: 大量的打印,图纸大小不一。我该怎么办呢?