c# pdf viewer itextsharp : Reorder pages in pdf file SDK software API .net windows azure sharepoint winforms.reportdesigner16-part1626

155 
Working with C1Report 
You can use C1Report in many different scenarios, on the desktop and on the Web. The main sequence of steps is 
always the same: 
1.
You start by creating a report using the C1ReportDesigner application to create report definitions; report 
definitions are saved in XML files, and can be designed from scratch or imported from existing Microsoft 
Access reports. You can then modify the basic report using C1ReportDesigner.  
2.
The C1Report component reads the report definitions and renders the reports using data from any 
standard .NET data source.  
3.
The report definitions can be loaded at design time, and embedded in your application, or they can be read 
and modified at run time. (You can even create report definitions from scratch, using the C1Report object 
model.) 
4.
Reports can be rendered directly to a printer, into a C1PrintPreview control, or into HTML and PDF files 
that can be published on the Web. 
The following diagram shows the relationship between the components in the ComponentOne Reports for 
WinForms package: 
Note: Boxes with a bold border represent code components (controls and applications). Boxes with a thin border 
represent files containing information (report definitions, data, and finished reports).  
The following numbers refer to the numbered arrows in the image, indicating relationships between the 
components: 
1.
Use the C1ReportDesigner application to create, edit, and save XML report definition files. 
2.
The C1Report component loads report definitions from the XML files created with the Designer. This can 
be done at design time (in this case the XML file is persisted with the control and not needed at run time) 
or at run time using the Load method. 
Reorder pages in pdf file - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
change page order pdf; move pages in pdf acrobat
Reorder pages in pdf file - VB.NET PDF Page Move Library: re-order PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sort PDF Document Pages Using VB.NET Demo Code
pdf reverse page order online; how to reorder pdf pages in
156  
3.
The C1Report component loads data from the data source specified in the report definition file. 
Alternatively, you can provide your own custom data source. 
4.
The C1Report component formats the data according to the report definition and renders reports to a (a) 
printer, (b) to one of several file formats, or (c) to a print preview control. 
5.
Custom applications can communicate with the C1Report component using a rich object model, so you 
can easily customize your reports or generate entirely new ones. C1ReportDesigner is a good example of 
such an application. 
Object Model Summary 
The object model for the C1Report component is largely based on the Microsoft Access model, except that Access 
has different types of controls (label control, textbox control, line control, and so on), while C1Report has a single 
Field object with properties that can make it look like a label, textbox, line, picture, subreport, and so on. 
The following table lists all objects, along with their main properties and methods (note that C1Report uses twips 
for all measurements. One twip is 1/20 point, so 72 points = 1440 twips = 1 inch): 
C1Report Object: the main component 
ReportName, GetReportInfo, Load, Save, Clear, Render, RenderToFile, RenderToStream, 
PageImages, Document, DoEvents, IsBusy, Cancel, Page, MaxPages, Font, OnOpen, OnClose, 
OnNoData, OnPage, OnError, Evaluate, Execute 
Layout Object: determines how the report will be rendered on the page 
Width, MarginLeft, MarginTop, MarginRight, MarginBottom, PaperSize, Orientation, Columns, 
ColumnLayout, PageHeader, PageFooter, Picture, PictureAlign, PictureShow 
DataSource Object: manages the data source 
ConnectionString, RecordSource, Filter, MaxRecords, Recordset 
Groups Collection: a report may have many groups 
Group Object: controls data sorting and grouping 
Name, GroupBy, Sort, KeepTogether, SectionHeader, SectionFooter, Move 
Sections Collection: all reports have at least 5 sections 
Section Object: contains Field objects (also known as "report band") 
Name, Type, Visible, BackColor, OnFormat, OnPrint, Height, CanGrow, CanShrink, Repeat, 
KeepTogether, ForcePageBreak 
Fields Collection: a report usually has many Fields 
Field Object: a rectangular area within a section where information is displayed 
Name, Section, Text, TextDirection, Calculated, Value, Format, Align, WordWrap, Visible, Left, 
Top, Width, Height, CanGrow, CanShrink, Font, BackColor, ForeColor, BorderColor, BorderStyle, 
LineSlant, LineWidth, MarginLeft, MarginRight, MarginTop, MarginBottom, LineSpacing, 
ForcePageBreak, HideDuplicates, RunningSum, Picture, PictureAlign, Subreport, CheckBox, RTF 
Sections of a Report 
Every report has at least the following five sections: 
Section 
Description 
C# TIFF: How to Reorder, Rearrange & Sort TIFF Pages Using C# Code
C# TIFF - Sort TIFF File Pages Order in C#.NET. Reorder, Rearrange and Sort TIFF Document Pages in C#.NET Application. C# TIFF Page Sorting Overview.
pdf rearrange pages online; reorder pages in pdf file
C# PDF Page Rotate Library: rotate PDF page permanently in C#.net
C# .NET, add new PDF page, delete certain PDF page, reorder existing PDF pages and split may choose to only rotate a single page of PDF file or all
move pdf pages; how to reorder pdf pages
157 
Detail 
The Detail section contains fields that are rendered once for each record in the 
source recordset. 
Header 
The Report Header section is rendered at the beginning of the report. 
Footer 
The Report Footer section is rendered at the end of the report. 
Page Header 
The Page Header section is rendered at the top of every page (except optionally 
for pages that contain the Report Header). 
Page Footer 
The Page Footer section is rendered at the bottom of every page (except optionally 
for pages that contain the Report Footer). 
In addition to these five sections, there are two additional sections for each group: a Group Header and a Group 
Footer Section. For example, a report with 3 grouping levels will have 11 sections. 
Note that sections can be made invisible, but they cannot be added or removed, except by adding or removing 
groups. 
The following diagram shows how each section is rendered on a typical report: 
Report Header 
The first section rendered is the Report Header. This section usually contains information that identifies the report. 
Page Header 
After the Report Header comes the Page Header. If the report has no groups, this section usually contains labels 
that describe the fields in the Detail Section. 
Group Headers and Group Footers 
The next sections are the Group Headers, Detail, and Group Footers. These are the sections that contain the actual 
report data. Group Headers and Footers often contain aggregate functions such as group totals, percentages, 
maximum and minimum values, and so on. Group Headers and Footers are inserted whenever the value of the 
expression specified by the GroupBy property changes from one record to the next. 
Detail 
The Detail section contains data for each record. It is possible to hide this section by setting its Visible property to 
False, and display only Group Headers and Footers. This is a good way to create summary reports. 
Page Footer 
At the bottom of each page is the Page Footer Section. This section usually contains information such as the page 
number, total number of pages in the report, and/or the date the report was printed. 
VB.NET PowerPoint: Sort and Reorder PowerPoint Slides by Using VB.
Sort and Reorder PowerPoint Slides Range with VB amount of robust PPT slides/pages editing methods powerful & profession imaging controls, PDF document, image
how to reorder pdf pages in reader; reverse page order pdf
VB.NET TIFF: Modify TIFF File by Adding, Deleting & Sort TIFF
Users can use it to reorder TIFF pages in ''' &ltsummary> ''' Sort TIFF document pages in designed powerful & profession imaging controls, PDF document, image
rearrange pdf pages in preview; reorder pdf pages in preview
158  
Report Footer 
Finally, the Report Footer section is printed before the last page footer. This section is often used to display 
summary information about the entire report. 
Customized sections 
You can determine whether or not a section is visible by setting its Visible property to True or False. Group 
Headers can be repeated at the top of every page (whether or not it is the beginning of a group) by setting their 
Repeat property to True. Page Headers and Footers can be removed from pages that contain the Report Header 
and Footer sections by setting the PageHeader and PageFooter properties on the Layout object. 
Developing Reports for Desktop Scenarios 
In typical desktop scenarios, C1Report runs on the same computer where the reports will be generated and viewed 
(the report data itself may still come from a remote server). The following scenarios assume that C1Report will be 
hosted in a Visual Studio.NET environment. 
Embedded Reports (Loaded at Design Time) 
Under this scenario, an application generates reports using a fixed set of report definitions that are built into the 
application. This type of application does not rely on any external report definition files, and end-users have no 
way to modify the reports. 
The main advantage of this type of application is that you don't need to distribute the report definition file, and you 
can be sure that no one will modify the report format. The disadvantage is that to make any modifications to the 
report, you must recompile the application.  
If you want to use a report definition that you already have, without any modifications, follow these steps (we will 
later describe how you can edit an embedded report or create one from scratch): 
1.
Add one C1Report component for each report definition you want to distribute. You may want to name 
each control after the report it will render (this will make your code easier to maintain). 
2.
Right-click each C1Report component and select the Load Report menu option to load report definitions 
into each control. (You can also click the smart tag (
) above the component to open the C1Report Tasks 
menu.) 
The Select a report dialog box appears, which allows you to select a report definition file and then a report 
within that file. 
To load a report, click the ellipsis button to select the report definition file you created in step 1, then 
select the report from the drop-down list and click the Load button. The property page shows the name of 
the report you selected and a count of groups, sections, and fields. This is what the dialog box looks like: 
C# PDF: C# Code to Process PDF Document Page Using C#.NET PDF
delete or remove certain page from PDF document file. C# PDF Page Processing: Sort PDF Pages - online C#.NET tutorial page for how to reorder, sort, reorganize
how to move pages in a pdf document; how to rearrange pdf pages online
Read PDF in Web Image Viewer| Online Tutorials
for image viewing to read, edit, create or write PDF documents from file or stream in Extract images from PDF documents; Add, reorder pages in PDF
move pages in pdf reader; rearrange pages in pdf document
159 
3.
Add a single C1PrintPreview control to the form (or a Microsoft PrintPreviewControl) and also add a 
control that will allow the user to pick a report (this could be a menu, a list box, or a group of buttons). 
4.
Add code to render the report selected by the user. For example, if you added a button in the previous step 
with the name btnProductsReport, the code would look like this: 
Visual Basic 
Private Sub btnProductsReport_Click(ByVal sender As System.Object, 
ByVal e As System.EventArgs) Handles btnProductsReport.Click 
ppv.Document = rptProducts.Document 
End Sub 
C# 
private void btnProductsReport_Click(object sender, System.EventArgs e)  
ppv.Document = rptProducts.Document; 
Note that rptProducts is the name of the C1Report component that contains the report selected by the 
user and ppv is the name of the C1PrintPreview control. 
Embedded Reports (Created at Design Time) 
The Load Report command, described in Embedded Reports (Loaded at Design Time), makes it easy to embed 
reports you already have into your application. In some cases, however, you may want to customize the report, or 
use data source objects that are defined in your Visual Studio application rather than use connection strings and 
record sources. In these situations, use the Edit Report command instead. 
To create or edit reports at design time, right-click the C1Report component and select the Edit Report menu 
option to invoke the C1ReportDesigner application (you can also click the smart tag (
) above the component to 
open the C1Report Tasks menu). 
VB.NET TIFF: VB.NET Sample Code to Process & Manage TIFF Page
certain TIFF page, and sort & reorder TIFF pages in Process TIFF Pages Independently in VB.NET Code. powerful & profession imaging controls, PDF document, image
how to move pages around in a pdf document; how to move pages in a pdf file
C# Word: How to Create Word Document Viewer in C#.NET Imaging
in C#.NET; Offer mature Word file page manipulation functions (add, delete & reorder pages) in document viewer; Rich options to add
pdf reorder pages; how to rearrange pages in pdf document
160  
Note: If the Edit Report command doesn't appear on the context menu and Properties window, it is probably 
because the control could not find the C1ReportDesigner application. To fix this, simply run the 
C1ReportDesigner application once in stand-alone mode. The designer will save its location to the registry, and 
the C1Report component should be able to find it afterwards. 
The C1ReportDesigner application will show the report currently loaded in the C1Report component. If the 
C1Report component is empty, the Designer will show the C1Report Wizard so you can create a new report. 
This is the same C1ReportDesigner application used in stand-alone mode. The only differences you will notice 
when you start the C1ReportDesigner application in this mode are: 
You can use the data source objects defined in your application as data sources for your new reports. 
When you close the Designer, any changes you made will be saved back into the C1Report component on 
the form (unless you choose to discard the changes by selecting File | Exit from the Designer's menu, and 
select No to saving the changes). 
To use data source objects defined in your application, click the Data Source button 
in the Designer, then 
select the Tables option in the Select a Data Source dialog box. 
The Tables page shows a list of data objects currently defined on the form (the page will not be visible if there 
aren't any valid data sources on the form). Alternatively, you can use the Build connection string button to build 
and select a connection string and record source as usual. 
For example, if the main form contains a DataSet object with several DataTables attached to it, the data source 
picker dialog box might look like this: 
Once you are done creating or editing the report, you can close the Designer by selecting File | Save and File | 
Exit from the menu. This will save the report definition directly into the component (as if you had loaded it from a 
file using the Load Report command). 
161 
If you change your mind and decide to cancel the changes, quit the Designer selecting File | Exit from the menu 
and choose No to saving the changes. 
Reports Loaded at Run Time 
Loading reports at run time requires a report definition file and works like a viewer. The main advantage of this 
type of application is that if you modify the report format, there's no need to update the application. Simply send 
the new report definition file to the users and you are done. 
To create an application with reports loaded at run time, follow these steps: 
1.
Use the C1ReportDesigner application to create all the reports you will need. (See Working with 
C1ReportDesigner for details on how to do this.) 
2.
Add the following controls to the application:  
C1Report component named c1r 
C1PrintPreview component named ppv 
ComboList control named cmbReport 
StatusBar control named status 
3.
Add the following Import statements to the top of the file: 
Visual Basic 
Imports C1.C1Report 
Imports System.IO 
C# 
using C1.C1Report; 
using System.IO; 
This allows you to reference the C1Report and System.IO classes and objects without having to specify 
the full namespaces. 
4.
Add code to read the report definition file and build a list of all reports in it. This can be done as follows: 
Visual Basic 
' get application path 
Dim appPath As String 
appPath = Path.GetDirectoryName(Application.ExecutablePath).ToLower() 
Dim i As Integer = appPath.IndexOf("/bin") 
If (i < 0) Then i = appPath.IndexOf("\bin") 
If (i > 0) Then appPath = appPath.Remove(i, appPath.Length - i) 
' get names of reports in the report definition file  
m_ReportDefinitionFile = appPath & "\Data\Nwind.xml" 
Dim reports As String() = c1r.GetReportInfo(m_ReportDefinitionFile) 
' populate combo box 
cmbReport.Items.Clear() 
Dim report As String 
For Each report In reports 
cmbReport.Items.Add(report) 
Next 
C# 
// get application path 
string appPath; 
appPath = Path.GetDirectoryName(Application.ExecutablePath).ToLower(); 
int i = appPath.IndexOf("/bin"); 
162  
if ((i < 0) ) { i = appPath.IndexOf("\bin"); } 
if ((i > 0) ) { appPath = appPath.Remove(i, appPath.Length - i); } 
// get names of reports in the report definition file 
m_ReportDefinitionFile = appPath + "\Data\Nwind.xml"; 
string ( reports) = c1r.GetReportInfo(m_ReportDefinitionFile); 
// populate combo box 
cmbReport.Items.Clear(); 
string report; 
foreach report In reports 
cmbReport.Items.Add(report); 
The code starts by getting the location of the file that contains the report definitions. This is done using 
static methods in the system-defined Path and Application classes. You may have to adjust the code to 
reflect the location and name of your report definition file. 
Then it uses the GetReportInfo method to retrieve an array containing the names of all reports in the 
report definition file (created in step 1), and populates the combo box that will allow users to select the 
report. 
5.
Add code to render the report selected by the user. For example: 
Visual Basic 
Private Sub cmbReport_SelectedIndexChanged(ByVal sender As Object, 
ByVal e As EventArgs) Handles cmbReport.SelectedIndexChanged 
Try 
Cursor = Cursors.WaitCursor 
' load report 
status.Text = "Loading " & cmbReport.Text 
c1r.Load(m_ReportDefinitionFile, cmbReport.Text) 
' render into print preview control 
status.Text = "Rendering " & cmbReport.Text 
ppv.Document = c1r.Document 
' give focus to print preview control 
ppv.StartPage = 0 
ppv.Focus() 
Finally 
Cursor = Cursors.Default 
End Try 
End Sub 
C# 
private void cmbReport_SelectedIndexChanged(object sender, 
System.EventArgs e) 
try { 
Cursor = Cursors.WaitCursor; 
// load report 
status.Text = "Loading " + cmbReport.Text; 
c1r.Load(m_ReportDefinitionFile, cmbReport.Text); 
// render into print preview control 
163 
status.Text = "Rendering " + cmbReport.Text; 
ppv.Document = c1r.Document; 
// give focus to print preview control 
ppv.StartPage = 0; 
ppv.Focus(); 
} finally { 
Cursor = Cursors.Default; 
Customizable Reports 
Customizable reports are a variation on Reports Loaded at Run Time. This scenario consists of loading the basic 
report definitions from a file, then writing code to customize the reports according to user selections. 
For example, the following code changes the font used in the Detail section: 
Visual Basic 
Imports C1.C1Report 
… 
Dim s As Section = c1r.Sections(SectionTypeEnum.Detail) 
Dim f As Field 
For Each f In s.Fields 
f.Font.Name = "Arial Narrow" 
Next 
C# 
using C1.C1Report; 
… 
Section s = c1r.Sections[SectionTypeEnum.Detail]; 
foreach (Field f in s.Fields) 
f.Font.Name = "Arial Narrow"; 
The following code toggles the display of a group by turning its Sort property on or off and setting the Visible 
property of the Group's Header and Footer sections: 
Visual Basic 
Dim bShowGroup As Boolean 
bShowGroup = True 
With c1r.Groups(0) 
If bShowGroup Then 
.SectionHeader.Visible = True 
.SectionFooter.Visible = True 
.Sort = SortEnum.Ascending 
Else 
.SectionHeader.Visible = False 
.SectionFooter.Visible = False 
.Sort = SortEnum.NoSort 
End If 
End With 
C# 
bool bShowGroup; 
bShowGroup = true; 
if (bShowGroup)  
c1r.Groups[0].SectionHeader.Visible = true; 
c1r.Groups[0].SectionFooter.Visible = true; 
164  
c1r.Groups[0].Sort = SortEnum.Ascending; 
}  
else  
c1r.Groups[0].SectionHeader.Visible = false; 
c1r.Groups[0].SectionFooter.Visible = false; 
c1r.Groups[0].Sort = SortEnum.NoSort; 
These samples illustrate just a few ways that you can customize reports. There are infinite possibilities, because the 
object model offers access to every aspect of the report. (In fact, you can create whole reports entirely with code). 
Developing Reports for Web Scenarios 
If you are developing reports for the Web (ASP.NET), you can use the C1WebReport control included with the 
ComponentOne Studio Enterprise package. This control encapsulates the C1Report component and provides 
methods and properties that make it very easy to add reports to your Web pages. The C1WebReport control is 
100% compatible with C1Report, and provides advanced caching and rendering options designed specifically for 
Web scenarios, as well as the usual design time editing options provided by ASP.NET server controls. 
You can still use the C1Report component in your Web applications if you like, but you will have to write some 
code to create HTML or PDF versions of the reports. The following sections describe how to do this. 
In typical Web scenarios, C1Report runs on the server machine and creates reports either in batch mode or on 
demand. The user can select the reports and preview or print them on the client machine, using a Web browser. 
Static Web Reports 
Static Web reports are based on a server application that runs periodically and creates a predefined set of reports, 
saving them to HTML or PDF files. These files are referenced by Web pages on your site, and they are 
downloaded to the client machine like any other Web page. 
To implement this type of application, follow these steps: 
1.
Use the C1ReportDesigner application to create all the reports you will need. (See Working with 
C1ReportDesigner for details on how to do this.) 
2.
Create an application on the server that contains a C1Report component. If you don't want to use forms 
and windows, create the control using the CreateObject function. 
3.
Add a routine that runs periodically and updates all the reports you want to make available to your users. 
The loop would look like this: 
Visual Basic 
' this runs every 6 hours: 
' get a list of all reports in the definition file 
sFile = "c:\inetpub\wwwroot\Reports\MyReports.xml" 
sList = c1r.GetReportInfo(sFile) 
' refresh the reports on the server 
For i = 0 To sList.Length – 1 
c1r.Load(sFile, sList(i)) 
sFile = "Reports\Auto\" & sList(i) & ".htm" 
c1r.RenderToFile(sFile, FileFormatEnum.HTMLPaged) 
Next 
C# 
// this runs every 6 hours: 
Documents you may be interested
Documents you may be interested