打印标签

一个页面中会有很多个标签,标签本身按顺序排列,但是标签中的内容,是需要精确定位的。
也就是说,页面内容的排列方式,和标签内容的排列方式是不同的。
用RenderArea可以轻松实现这样的要求。

下面是演示代码,每一个RenderArea就是一个标签,请留意RenderArea的子对象是如何定位的:

Dim doc As New PrintDoc '定义一个报表
doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
'设置排列方式
For
i As integer = 1 to 100
   
Dim ra As New prt.RenderArea
    Dim
rt As prt.RenderText
    ra.Width =
53 '宽度53毫米
   
ra.Height =
24 '高度24毫米
    ra.Style.Spacing.All =
1
    ra.Style.Borders.All = New prt.Linedef(0.3, Color.Red)
'设置边框
 
   ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never '禁止水平分割
 
   ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never '禁止垂直分割
    Doc.Body.ChildRen.Add(ra) '将容器加入到报表中

    rt = New prt.RenderText
    rt.Text =
"姓名:"
    rt.X =
2
    rt.Y =
2
    ra.Children.Add(rt)
'添加到容器中

    rt = New prt.RenderText
    rt.Text =
"黄财德"
    rt.X =
15
    rt.Y =
2
    ra.Children.Add(rt)

    rt = New prt.RenderText
    rt.Text =
"职务:"
    rt.X =
2
    rt.Y =
"Prev.Bottom + 2" '垂直坐标位于迁移对象之下的2毫米
    ra.Children.Add(rt)

    rt = New prt.RenderText
    rt.Text =
"总经理"
    rt.X =
15
    rt.Y =
"Prev.Top" '垂直坐标和前一对象相同
    ra.Children.Add(rt)

    rt = New prt.RenderText
    rt.Text =
"编号:"
    rt.X =
2
    rt.Y =
"Prev.Bottom + 2"
    ra.Children.Add(rt)

    rt = New prt.RenderText
    rt.Text =
"44081919710917243"
    rt.X =
15
    rt.Y =
"Prev.Top"
    ra.Children.Add(rt)

Next

Doc.Preview()
'预览报表

执行结果:

注意一定要有下面两行代码:

ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never '禁止水平分割
ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never '禁止垂直分割

否则可能会出现一个标签被分割在两页的情况。

 


本页地址:http://www.foxtable.com/webhelp/topics/1186.htm