我常用的就是a0,a1,a2,a3,a4,再有一自定义的纸张,怎么会每张图纸都不一样呢?楼上的兄弟能否详细说说你的情况。
另外vba好像真的实现不了自定义纸张。 我找了一下相关文档,看哪个高手能开出来
如果您使用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> 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 vba可以设定打印机及纸张,但不能自定义纸张 我不明白为什么要自定义纸张。<BR>做为普通的纸张,也就是那么几个规格。<BR>我不相信你看了图纸的大小后自己去裁不同大小的纸张来打印。<BR>如果你要自定义的纸张也有规格,可以手工先在打印样式表中设定。大不了在交程序时把样式表一起交给客户。程序中就直接调用你的样式表也可以。<BR>如果你只是在一般尺寸的纸张上打印不同尺寸的图,你只需要设定不同的打印比例就可以,纸张也可以留些空白出来,没有必要刚好打满。 看来大家都不理解,我这里的图纸是地质图之类的东西,图幅不确定,大的有1400*800,全部使用卷筒纸打印,所以每次都要自定义纸张,我已下了一个例程,太长了,看得我头都大了。
zhang老兄,能否共享一下你下载的好东东?也许我看不懂。<BR>顺便说一下,我这边图纸大小,窄的有297*500~2000,宽的有841*1500~3000,当然都是滚筒打印机,型号有HP1050c plus,lp2020精工sii<BR> 可以实现,我最近做了一个专门批打印CAD的软件! 能否共享一下? 楼主想的这个实现了没!弄来开开眼界~~ 顺便学习一下给个思路也行
页:
1
[2]