C1PrintDocument允许创建复杂的documents用来打印,预览或是多种格式输出。本文讨论C1PrintDocument中经常被问到的问题。
1.自定义C1PrintDocument的PageFooter
2.在C1PrintDocument里显示边框。
自定义C1PrintDocument的PageFooter
C1PrintDocument提供显示内容在每页页脚的能力,这些可以通过PageLayouts.PageFooter属性自定义。
假设我们要在非最后一页显示“Continued”文字,这里需要两步;
1.定义PageLayout对象
第一个首先要定义PageLayout,设置一个PageFooter,并且添加到C1PrintDocument的页面,代码如下:
Dim pagelayout As New PageLayout() Dim pagefooter As New RenderText() pagefooter.Text = " Continued to Next Page..." pagefooter.Style.Borders.All = LineDef.Default pagefooter.Style.FontBold = True pagefooter.Style.TextColor = Color.Maroon pagelayout.PageFooter = pagefooter C1PrintDocument1.PageLayouts.PrintFooterOnLastPage = False C1PrintDocument1.PageLayout.PageFooter = pagelayout.PageFooter C1PrintDocument1.Generate()
注意:PrintFooterOnLastPage属性要设置为False,这样子PageFooter才能不打印到document的最后一页。
2.设置PageFooter属性的条件
在定义PageFooter之后,下一步就是设置PageFooter属性为“Continued..”。而且我们需要确保如果只有一页,这个文字不会出现在页面。这样,就需要计算页数,如果仅有一页的时候,使用PrintFooterOnFirstPage属性隐藏在第一页的页脚。
代码片段如下:
If C1PrintDocument1.Pages.Count = 1 Then C1PrintDocument1.PageLayouts.PrintFooterOnFirstPage = False End If
在C1PrintDocument里显示边框
为了实现这个效果,我们需要添加一个空的RenderArea到doment的size中,然后设置Style.Borders.All属性为LineDef.Default。
Dim overlay As New RenderArea() overlay.Width = "100%" overlay.Height = "100%" overlay.Style.Borders.All = LineDef.Default C1PrintDocument1.PageLayout.Overlay = overlay
这样,边框就可以显示在RenderTable的单元格里的text rendered的周围。代码如下:
Dim rtxt As New RenderText("center me!") rtxt.Style.Borders.All = New LineDef(Color.Red) rtxt.Width = "2cm" Dim ra As New RenderArea() ra.Stacking = StackingRulesEnum.BlockLeftToRight ra.Style.FlowAlignChildren = FlowAlignEnum.Center ra.Children.Add(rtxt) rtTbl.Cells(1, 1).RenderObject = ra C1PrintDocument1.Body.Children.Add(rtTbl)
如上所述的两种效果,可以通过下面的图片展示出来:
本文的源代码如下: