c# pdf viewer itextsharp : Change pdf page order reader SDK software API .net windows azure sharepoint winforms.reportdesigner17-part1627

165 
// 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 ; GAIS <= sList.Length – 1 
c1r.Load(sFile, sList(i)); 
sFile = "Reports\Auto\" + sList(i) + ".htm"; 
c1r.RenderToFile(sFile, FileFormatEnum.HTMLPaged); 
The code uses the GetReportInfo method to retrieve a list of all reports contained in the MyReports.xml 
report definition file (created in step 1), then renders each report into a paged HTML file. (Paged HTML 
files contain one HTML page for each page in the original report, with a navigation bar that allows 
browsing.) 
4.
Edit the home HTML page by adding links to the reports that were saved. 
You are not restricted to HTML. C1Report can also export to PDF files, which can be viewed on any browser with 
freely available plug-ins. The PDF format is actually superior to HTML in many ways, especially when it comes to 
producing hard copies of your Web reports. 
Dynamic Web Reports 
Dynamic Web reports are created on-demand, possibly based on data supplied by the user. This type of solution 
typically involves using an ASP.NET page that presents a form to the user and collects the information needed to 
create the report, then creates a C1Report component to render the report into a temporary file, and returns a 
reference to that file. 
The example that follows is a simple ASP.NET page that allows users to enter some information and to select the 
type of report they want. Based on this, the ASP code creates a custom version of the NorthWind "Employee Sales 
by Country" report and presents it to the user in the selected format. 
The sample uses a temporary file on the server to store the report. In a real application, you would have to generate 
unique file names and delete them after a certain time, to avoid overwriting reports before the users get a chance to 
see them. Despite this, the sample illustrates the main techniques involved in delivering reports over the Web with 
C1Report. 
To implement this type of application, follow these steps: 
1.
Start by creating a new Web application with a Web page that looks like this: 
Change pdf page order reader - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
rearrange pages in pdf reader; how to move pages in a pdf
Change pdf page order reader - 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
how to reverse pages in pdf; reorder pdf pages online
166  
The page has five server controls: 
_1stYear: Contains a list of valid years for which there is data (1994, 1995, and 1996). Note that you 
can add the items by clicking the smart tag (
) and selecting Edit Items from the menu. From the 
ListItem Collection Editor, add three new items. 
_txtGoal: Contains the yearly sales goal for each employee. 
_btnHTML, _btnPDF: Buttons used to render the report into HTML or PDF, and show the result. 
_lblStatus: Displays error information if something goes wrong. 
Note: If you run this application with a demo or beta version of the C1Report component, there will be 
errors when the control tries to display its About dialog box on the server. If that happens, simply reload 
the page and the problem should go away. 
2.
After the page has been set up, you need to add a reference to the C1Report component to the project. Just 
right-click the project in the Solution Explorer window, select Add Reference and choose the C1Report 
component. 
3.
Add the Nwind.xml to the project in the Data folder. Just right-click the project in the Solution Explorer 
window, select New Folder and rename the folder Data. Then right-click the folder, select Add Existing 
Item and browse for the Nwind.xml definition file, which is installed by default in the ComponentOne 
Samples\C1Report\C1Report\VB\NorthWind\Data directory in the Documents or My Documents 
folder. 
4.
Add a Temp folder to the project. Just right-click the project in the Solution Explorer window, select New 
Folder and rename the folder Temp. 
5.
If you have used traditional ASP, this is where things start to become interesting. Double-clicking the 
controls will take you to a code window where you can write full-fledged code to handle the events, using 
the same editor and environment you use to write Windows Forms projects. 
Add the following code: 
Visual Basic 
Imports C1.C1Report 
… 
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
PDF Document; Remove Password from PDF; Change PDF Permission Settings. Page: Insert PDF pages; VB.NET Page: Delete PDF VB.NET Annotate: PDF Markup & Drawing. XDoc
move pages in a pdf; move pages in a pdf file
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
VB.NET PDF - How to Modify PDF Document Page in VB.NET. VB.NET Guide for Processing PDF Document Page and Sorting PDF Pages Order.
reverse page order pdf online; how to rearrange pdf pages in preview
167 
' handle user clicks 
Private Sub _btnHTML_Click(ByVal sender As Object, ByVal e As 
System.EventArgs) Handles _btnHTML.Click 
RenderReport(FileFormatEnum.HTMLDrillDown) 
End Sub 
Private Sub _btnPDF_Click(ByVal sender As Object, ByVal e As 
System.EventArgs) Handles _btnPDF.Click  
RenderReport(FileFormatEnum.PDF) 
End Sub 
C# 
using C1.C1Report; 
… 
// handle user clicks 
private void _btnHTML_Click(object sender, System.EventArgs e) 
RenderReport(FileFormatEnum.HTMLDrillDown); 
private void _btnPDF_Click(object sender, System.EventArgs e) 
RenderReport(FileFormatEnum.PDF); 
This is the code that gets executed on the server, when the user clicks either button.  
6.
The following code delegates the work to the main routine, RenderReport: 
Visual Basic 
Private Sub RenderReport(ByVal fmt As FileFormatEnum) 
' build file names 
Dim rpt As String = "Employee Sales by Country" 
Dim fileIn As String = GetDataPath() & "NWind.xml" 
Dim ext As String = Iif(fmt = FileFormatEnum.PDF, ".pdf", ".htm") 
Dim fileOut As String = GetOutputPath() & rpt & ext 
Try 
' create C1Report component 
Dim c1r As New C1Report() 
' load the report 
c1r.Load(fileIn, rpt) 
' get user parameters 
Dim year As String = _lstYear.SelectedItem.Text 
Dim goal As String = _txtGoal.Text 
' customize the report data source 
Dim sSQL As String = "SELECT DISTINCTROW " & _ 
"Employees.Country, Employees.LastName, " & _ 
"Employees.FirstName, Orders.ShippedDate, Orders.OrderID, " 
& _ 
"  [Order Subtotals].Subtotal AS SaleAmount " & _ 
"FROM Employees INNER JOIN (Orders INNER JOIN " & _ 
"  [Order Subtotals] ON Orders.OrderID = " & _ 
"  [Order Subtotals].OrderID) " & _ 
"  ON Employees.EmployeeID = Orders.EmployeeID " & _ 
C# PowerPoint - Sort PowerPoint Pages Order in C#.NET
control, developers can swap or adjust the order of all or several PowerPoint document pages, or just change the position of certain one PowerPoint page in an
how to move pages within a pdf document; change pdf page order
C# Word - Sort Word Pages Order in C#.NET
library control, developers can swap or adjust the order of all or several Word document pages, or just change the position of certain one Word page in an
rearrange pdf pages in reader; reorder pdf pages
168  
"WHERE Year(Orders.ShippedDate) = " & year & ";" 
c1r.DataSource.RecordSource = sSQL 
' customize the report's event handlers 
Dim sScript As String = _ 
"If SalespersonTotal > " & goal & " Then" & vbCrLf & _ 
"  ExceededGoalLabel.Visible = True" & vbCrLf & _ 
"  SalespersonLine.Visible = True" & vbCrLf & _ 
"Else" & vbCrLf & _ 
"  ExceededGoalLabel.Visible = False" & vbCrLf & _ 
"  SalespersonLine.Visible = False" & vbCrLf & _ 
"End If" 
c1r.Sections(SectionTypeEnum.GroupHeader2).OnPrint = sScript 
' render the report into a temporary file 
c1r.RenderToFile(fileOut, fmt) 
' redirect user to report file 
Response.Redirect("Temp/" + rpt + ext) 
Catch x As Exception 
_lblStatus.Text = "*** " & x.Message 
End Try 
End Sub 
C# 
// render the report 
private void RenderReport(FileFormatEnum fmt) 
// build file names 
string rpt  = "Employee Sales by Country"; 
string fileIn = GetDataPath() + "NWind.xml"; 
string ext = (fmt == FileFormatEnum.PDF)? ".pdf": ".htm"; 
string fileOut = GetOutputPath() + rpt + ext; 
try 
// create C1Report component 
C1Report c1r = new C1Report(); 
// load the report 
c1r.Load(fileIn, rpt); 
// get user parameters 
string year = _lstYear.SelectedItem.Text; 
string goal = _txtGoal.Text; 
// customize the report data source 
string sSQL = "SELECT DISTINCTROW " + 
"Employees.Country, Employees.LastName, " + 
"Employees.FirstName, Orders.ShippedDate, Orders.OrderID, " + 
"  [Order Subtotals].Subtotal AS SaleAmount " + 
"FROM Employees INNER JOIN (Orders INNER JOIN " + 
"  [Order Subtotals] ON Orders.OrderID = " + 
"  [Order Subtotals].OrderID) " + 
C# TIFF: How to Reorder, Rearrange & Sort TIFF Pages Using C# Code
C# users to reorder and rearrange multi-page Tiff file Tiff image management library, you can easily change and move pages or make a totally new order for all
how to move pdf pages around; pdf change page order
C# Word - Process Word Document in C#
various Word document processing implementations using C# demo codes, such as add or delete Word document page, change Word document pages order, merge or
change page order pdf acrobat; how to move pages in pdf files
169 
"  ON Employees.EmployeeID = Orders.EmployeeID " + 
"WHERE Year(Orders.ShippedDate) = " + year + ";"; 
c1r.DataSource.RecordSource = sSQL; 
// customize the report's event handlers 
string sScript =  
"If SalespersonTotal > " + goal + " Then \n" + 
"  ExceededGoalLabel.Visible = True\n" + 
"  SalespersonLine.Visible = True\n" + 
"Else\n" + 
"  ExceededGoalLabel.Visible = False\n" + 
"  SalespersonLine.Visible = False\n" + 
"End If"; 
c1r.Sections[SectionTypeEnum.GroupHeader2].OnPrint = sScript; 
// render the report into a temporary file 
c1r.RenderToFile(fileOut, fmt); 
// redirect user to report file 
Response.Redirect("Temp/" + rpt + ext); 
catch (Exception x) 
_lblStatus.Text = "*** " + x.Message; 
The RenderReport routine is long, but pretty simple. It begins working out the names of the input and 
output files. All file names are built relative to the current application directory. 
Next, the routine creates a C1Report component and loads the "Employee Sales by Country" report. This 
is the raw report, which you will customize in the next step. 
The parameters entered by the user are available in the _lstYear and _txtGoal server-side controls. The 
code reads these values and uses them to customize the report's RecordSource property and to build a 
VBScript handler for the OnPrint property. These techniques were discussed in previous sections. 
Once the report definition is ready, the code calls the RenderToFile method, which causes the C1Report 
component to write HTML or PDF files to the output directory. When the method returns, the report is 
ready to be displayed to the user. 
The last step is the call to Response.Redirect, which displays the report you just created on the user's 
browser. 
Note that the whole code is enclosed in a try/catch block. If anything goes wrong while the report is being 
generated, the user gets to see a message explaining the problem. 
7.
Finally, there's a couple of simple helper routines that need to be added: 
Visual Basic 
' get directories to use for loading and saving files 
Private Function GetDataPath() As String 
Return Request.PhysicalApplicationPath + "Data\" 
End Function 
Private Function GetOutputPath() As String 
Return Request.PhysicalApplicationPath + "Temp\" 
End Function 
C# 
// get directories to use for loading and saving files 
private string GetDataPath() 
C# PDF: C# Code to Process PDF Document Page Using C#.NET PDF
Enable C#.NET developers to change the page order of source PDF document file; Allow C#.NET developers to add image to specified area of source PDF document
move pages in pdf file; how to rearrange pdf pages
RasterEdge.com General FAQs for Products
speaking, you will receive a copy of email containing order confirmation and dedicated to provide powerful & profession imaging controls, PDF document, image
reordering pages in pdf document; how to rearrange pages in a pdf reader
170  
return Request.PhysicalApplicationPath + @"Data\"; 
private string GetOutputPath() 
return Request.PhysicalApplicationPath + @"Temp\"; 
8.
After you enter this code, the application is ready. You can press F5 and trace its execution within Visual 
Studio. 
The following screen shot shows what the result looks like in the browser: 
Creating, Loading, and Rendering the Report 
Although 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.
Create a report definition 
This can be done directly with the C1Report Designer application or using the report designer in 
Microsoft Access and then importing it into C1Report Designer. You can also do it using code, either 
using the object model to add groups and fields or by writing a custom XML file. 
2.
Load the report into the C1Report component 
171 
This can be done at design time, using the Load Report context menu, or programmatically using the 
Load method. If you load the report at design time, it will be persisted (saved) with the control and you 
won't need to distribute the report definition file. 
3.
Render the report (desktop applications) 
If you are writing a desktop application, you can render the report into a C1PrintPreview controleasily. 
The preview control will display the report on the screen, and users will be able to preview it with full 
zooming, panning, and so on. For example: 
Visual Basic 
C1PrintPreview1.Document = c1r 
C# 
c1printPreview1.Document = c1r; 
4.
Render the report (Web applications) 
If you are writing a Web application, you can render reports into HTML or PDF files using the 
RenderToFile method, and your users will be able to view them using any browser. 
Creating a Report Definition 
The following topics show how you can create a report definition using the C1ReportDesigner application or 
using code. Note that creating a report definition is not the same as rendering a report. To render a report, you can 
simply load an existing definition and call the Render method. 
Creating a Report Definition Using C1ReportDesigner 
The easiest way to create a report definition is to use the C1ReportDesigner application, which is a stand alone 
application similar to the report designer in Microsoft Access. The C1Report Wizard walks you through the steps 
of creating a new report from start to finish. 
For information on the steps for creating a new report, see Creating a Basic Report Definition. 
Creating a Report Definition Using Code 
You can also create reports from scratch, using code. This approach requires some extra work, but it gives you 
complete flexibility. You can even write your own report designer or ad-hoc report generator. 
The following example uses code to create a simple tabular report definition based on the NorthWind database. 
The code is commented and illustrates the most important elements of the C1Report object model. Complete the 
following steps: 
1.
First, add a button control, C1Report component, and C1PrintPreview control to your form. Set the 
following properties: 
Button.Name = btnEmployees 
C1Report.Name = c1r 
C1PrintPreview.Name = ppv 
2.
Initialize the control, named c1r, using the Clear method to clear its contents and set the control font (this 
is the font that will be assigned to new fields): 
Visual Basic 
Private Sub RenderEmployees() 
With c1r 
' clear any existing fields 
.Clear() 
' set default font for all controls 
.Font.Name = "Tahoma" 
.Font.Size = 8 
End With 
172  
C# 
private void RenderEmployees() 
// clear any existing fields 
c1r.Clear(); 
// set default font for all controls 
c1r.Font.Name = "Tahoma"; 
c1r.Font.Size = 8; 
3.
Next, set up the DataSource object to retrieve the data that you want from the NorthWind database. This 
is done using the ConnectionString and RecordSource properties (similar to the Microsoft ADO 
DataControl): 
Visual Basic 
' initialize DataSource 
With c1r.DataSource 
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
"Data Source=C:\…\ComponentOne 
Samples\Common\Nwind.mdb;" & _ 
"Persist Security Info=False" 
.RecordSource = "Employees" 
End With 
C# 
// initialize DataSource 
DataSource ds = c1r.DataSource; 
ds.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data 
Source=C:\…\ComponentOne Samples\Common\Nwind.mdb;"; 
ds.RecordSource = "Employees"; 
4.
Next, initialize the Layout object that defines how the report will be laid out on the page. In this case, 
render the report in Portrait mode and set its Width to 6.5 inches (8.5 page width minus one inch for 
margins on either side): 
Visual Basic 
' initialize Layout 
With c1r.Layout 
.Orientation = OrientationEnum.Portrait 
.Width = 6.5 * 1440 ' 8.5 – margins, in twips 
End With 
C# 
// initialize Layout 
Layout l = c1r.Layout; 
l.Orientation = OrientationEnum.Portrait; 
l.Width = 6.5 * 1440; // 8.5 – margins, in twips 
5.
Now comes the interesting part. Every report has five basic sections: Detail, Report Header, Report 
Footer, Page Header, and Page Footer. Use the following code to set up the report header by setting a 
couple of properties and adding a title field to it: 
Visual Basic 
' variable used to create and format report fields 
Dim f As Field 
' create a report header 
With c1r.Sections(SectionTypeEnum.Header) 
.Height = 1440 
.Visible = True 
173 
.BackColor = Color.FromArgb(200, 200, 200) 
f = .Fields.Add("FldTitle", "Employees Report", 0, 0, 8000, 1440) 
f.Font.Size = 24 
f.Font.Bold = True 
f.ForeColor = Color.FromArgb(0, 0, 100) 
End With 
C# 
// variable used to create and format report fields 
Field f; 
// create a report header 
Section s = c1r.Sections[SectionTypeEnum.Header]; 
s.Height = 1440; 
s.Visible = true; 
s.BackColor = Color.FromArgb(200, 200, 200); 
f = s.Fields.Add("FldTitle", "Employees Report", 0, 0, 8000, 1440); 
f.Font.Size = 24; 
f.Font.Bold = true; 
f.ForeColor = Color.FromArgb(0, 0, 100); 
The section object has a Fields collection. The collection's Add method creates a new field and assigns it 
to the Section. The parameters specify the new field's Name, Text, Left, Top, Width, and Height 
properties. By default, the field has the same font as the control. Since this is a title, it makes sense to 
change the font and make it larger. Note that the field should be tall enough to accommodate the font size, 
or nothing will appear in it. 
6.
Next, set up the Page Footer Section. This section is more interesting because it contains calculated fields. 
Calculated fields contain VBScript expressions in their Text property, which are evaluated when the report 
is rendered. To make a field calculated, set its Calculated property to True. To create a page footer, add 
the following code: 
Visual Basic 
' create a page footer 
With c1r.Sections(SectionTypeEnum.PageFooter) 
.Height = 500 
.Visible = True 
f = .Fields.Add("FldFtrLeft", """Employees: Printed on "" & Now",_ 
0, 0, 4000, 300) 
f.Calculated = True 
f = .Fields.Add("FldFtrRight", """Page "" & Page & "" of "" & 
Pages",_ 
4000, 0, 4000, 300) 
f.Calculated = True 
f.Align = FieldAlignEnum.RightTop 
f.Width = c1r.Layout.Width - f.Left 
f = .Fields.Add("FldLine", "", 0, 0, c1r.Layout.Width, 20) 
f.LineSlant = LineSlantEnum.NoSlant 
f.BorderStyle = BorderStyleEnum.Solid 
f.BorderColor = Color.FromArgb(0, 0, 100) 
End With 
C# 
// create a page footer 
s = c1r.Sections[SectionTypeEnum.PageFooter]; 
s.Height = 500; 
s.Visible = true; 
f = s.Fields.Add("FldFtrLeft", @"""Employees: Printed on "" & Now",_ 
0, 0, 4000, 300); 
174  
f.Calculated = true; 
f = .Fields.Add("FldFtrRight", @"""Page "" + Page + "" of "" & 
Pages",_ 
4000, 0, 4000, 300); 
f.Calculated = true; 
f.Align = FieldAlignEnum.RightTop; 
f.Width = c1r.Layout.Width - f.Left; 
f = s.Fields.Add("FldLine", "", 0, 0, c1r.Layout.Width, 20); 
f.LineSlant = LineSlantEnum.NoSlant; 
f.BorderStyle = BorderStyleEnum.Solid; 
f.BorderColor = Color.FromArgb(0, 0, 100); 
The Page Footer section uses expressions with variables that are not intrinsic to VBScript, but are defined 
by C1Report. Page and Pages are variables that contain the current page number and the total page count. 
The section also uses a field configured to look like a line. This is done using the BorderStyle and 
LineSlant properties. 
7.
Next, set up the Page Header Section. This section gets rendered at the top of every page and will display 
the field labels. Using a Page Header section to display field labels is a common technique in tabular 
reports. The code is simple, but looks a bit messy because of all the field measurements. In a real 
application, these values would not be hard-wired into the program. To create a page header with field 
labels, add the following code: 
Visual Basic 
' create a page header with field labels 
With c1r.Sections(SectionTypeEnum.PageHeader) 
.Height = 500 
.Visible = True 
c1r.Font.Bold = True 
f = .Fields.Add("LblID", "ID", 0, 50, 400, 300) 
f.Align = FieldAlignEnum.RightTop 
f = .Fields.Add("LblFirstName", "First", 500, 50, 900, 300) 
f = .Fields.Add("LblLastName", "Last", 1500, 50, 900, 300) 
f = .Fields.Add("LblTitle", "Title", 2500, 50, 2400, 300) 
f = .Fields.Add("LblTitle", "Notes", 5000, 50, 8000, 300) 
c1r.Font.Bold = False 
f = .Fields.Add("FldLine", "", 0, 400, c1r.Layout.Width, 20) 
f.LineSlant = LineSlantEnum.NoSlant 
f.LineWidth = 50 
f.BorderColor = Color.FromArgb(100, 100, 100) 
End With 
C# 
// create a page header with field labels 
s = c1r.Sections[SectionTypeEnum.PageHeader]; 
s.Height = 500; 
s.Visible = true; 
c1r.Font.Bold = true; 
f = s.Fields.Add("LblID", "ID", 0, 50, 400, 300); 
f.Align = FieldAlignEnum.RightTop; 
f = s.Fields.Add("LblFirstName", "First", 500, 50, 900, 300); 
f = s.Fields.Add("LblLastName", "Last", 1500, 50, 900, 300); 
f = s.Fields.Add("LblTitle", "Title", 2500, 50, 2400, 300); 
f = s.Fields.Add("LblTitle", "Notes", 5000, 50, 8000, 300); 
c1r.Font.Bold = false; 
f = s.Fields.Add("FldLine", "", 0, 400, c1r.Layout.Width, 20); 
f.LineSlant = LineSlantEnum.NoSlant; 
Documents you may be interested
Documents you may be interested