C1PrintDocument component allows you to create complex documents that can be printed, previewed or exported to a number of external formats. In this blog, I would like to discuss a couple of frequently asked questions for C1PrintDocument, that is :
C1PrintDocument offers the ability to display a footer on each page for a summarized view. These can be customized using PageLayout.PageFooter property. For demonstration, lets consider a scenario where user wants to display 'Continued' text in the document except the last page. This is a two step process :
Step1 : Define the PageLayout Object The first step is to define a PageLayout that can be used to assign a PageFooter to the pages in the C1PrintDocument as shown in the code below:
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()
Notice that the PrintFooterOnLastPage property has been set to false in order to indicate that the PageFooter should not be printed on the last page of the document. Step 2 : Set PageFooter Property Conditionally After defining the PageLayout, the next step is to set the PageFooter property to "Continued.." conditionallly. Also, we need to make sure that the message does not appear when there is only one page in the document. To do this, count the total number of pages and hide the PageFooter on the first page using PrintFooterOnFirstPage property if there is only one page in the document. Here is the code snippet for accomplishing the above :
If C1PrintDocument1.Pages.Count = 1 Then C1PrintDocument1.PageLayouts.PrintFooterOnFirstPage = False End If
To display borders in C1PrintDocument, we need to add an empty RenderArea to the size of the document and set the Style.Borders.All property to LineDef.Default.
Dim overlay As New RenderArea() overlay.Width = "100%" overlay.Height = "100%" overlay.Style.Borders.All = LineDef.Default C1PrintDocument1.PageLayout.Overlay = overlay
However, the borders can also be displayed around the text rendered in the cells of a RenderTable.
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)