c# pdf viewer itextsharp : Rearrange pdf pages online software application project winforms html wpf UWP winforms.reportdesigner2-part1630

15 
When you run the project, you will see the report definition in design mode. You will be able to select, move, and 
resize the report fields and sections. Any changes made through the designer will be reflected in the report 
definition stored in the C1Report component. You can save the report at any time using the C1Report.Save 
method, or preview it using the C1Report.Document property and a Preview control. 
To build a complete designer, you will have to add other user interface elements: 
A PropertyGrid control attached to the designer selection, so the user can change field and section 
properties. 
A DataSource selection mechanism so the user can edit and change the report data source. 
A Group Editor dialog box if you want to allow the user to create, remove, and edit report groups. 
A Wizard to create new reports. 
The usual file and editing commands so users can load and save reports, use the clipboard, and access the 
undo/redo mechanism built into the C1ReportDesigner control. 
Most of these elements are optional and may be omitted depending on your needs. The Report Designer 
application source code implements all of these, and you can use the source code as a basis for your 
implementation. 
About this section 
This section describes how to implement a simple report designer using the C1ReportDesigner control. The 
purpose of the sample designer is to illustrate how the C1ReportDesigner control integrates with a designer 
application. It supports loading and saving files with multiple reports, editing and previewing reports, adding and 
removing reports from the file, and report editing with undo/redo and clipboard support. 
Most designer applications based on the C1ReportDesigner control will have features similar to the ones described 
here. If you follow these steps, you will become familiar with all the basic features of the C1ReportDesigner 
control. 
The sample designer does not provide some advanced capabilities such as import/export, data source 
selection/editing, and group editing. All these features are supported by the full version of the C1ReportDesigner 
application, and you can refer to the source code for details on how to implement them. 
The following sections describe the step-by-step implementation of the sample designer.  
Sample Report Available 
For the complete project, see the SimpleDesigner sample, which is available for download from the 
ComponentOne HelpCentral Sample page. 
Step 1 of 9: Create and Populate the Main Form 
The sample designer consists of a single form with the following main components: 
Control 
Control 
Name 
Description 
ListBox 
_list 
ListBox control with a list of reports currently loaded. 
C1PrintPreview 
_c1ppv 
C1PrintPreview control for previewing the reports. 
C1ReportDesigner 
_c1rd 
C1ReportDesigner control for designing and editing reports. 
PropertyGrid 
_ppg 
PropertyGrid control for editing properties of objects selected in the 
designer. 
ToolBar 
_tb 
ToolBar control with buttons for each command. 
C1Report 
_c1r 
C1Report component used for rendering reports into the _c1ppv 
Rearrange pdf pages online - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
how to move pages around in pdf file; how to move pdf pages around
Rearrange pdf pages online - 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 change page order in pdf document; how to reorder pages in pdf file
16  
control. 
For steps on adding the C1ReportDesigner control to the form, see Adding the C1ReportDesigner Component to a 
Project
The form contains a few other controls such as labels and splitters, which are used to improve the layout. Notice 
that the controls are numbered and the labels and splitters are named in the image below. Here's what the form 
should look like: 
Refer to the labels on the form to locate the following controls: 
The ToolBar control _tb appears along the top of the form.  
The report list _list appears to the left above the property grid _ppg. 
The property grid _ppg.  
On the right, the C1ReportDesigner control _c1rd fills the client area of the form.  
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 change page order online; how to move pages in pdf files
Online Merge PDF files. Best free online merge PDF tool.
Then press the button below and download your PDF. By dragging your pages in the editor area you can rearrange them or delete single pages.
how to change page order in pdf acrobat; how to move pages around in pdf
17 
The preview control _c1ppv is invisible in design mode. In preview mode, it becomes visible and hides the 
report designer. 
In this sample designer, the toolbar contains 18 items (14 buttons and 4 separators). If you are creating the project 
from scratch, don't worry about the images at this point. Just add the items to the _tb control (which can easily be 
done using the ToolBarButton Collection Editor) and set their names as each command is implemented.  
Step 2 of 9: Add Class Variables and Constants 
In this step, add the following code to your simple designer project to add class variables and constants: 
Visual Basic 
' fields 
Private _fileName As String  ' name of the current file 
Private _dirty As Boolean    ' current file has changed 
' title to display in the form caption 
Dim _appName As String = "C1ReportDesigner Demo" 
C# 
// fields 
private string  _fileName;     // name of the current file 
private bool    _dirty;        // current file has changed 
// title to display in the form caption 
private const string _appName = "C1ReportDesigner Demo"; 
Step 3 of 9: Add Code to Update the User Interface 
The simple designer has buttons that may be enabled or disabled, depending on whether the clipboard and undo 
buffer are empty, whether a file is loaded, and so on. All this functionality is implemented in a single method, 
called UpdateUI. 
UpdateUI is called often to make sure the UI reflects the state of the application. The first call should be made in 
response to the Form_Load event, to initialize the toolbar and form caption. After pasting the following code into 
the project, remember to set the names of the buttons in the toolbar control to match the ones used in the 
UpdateUI routine. 
Add the following code to update the user interface: 
Visual Basic 
' update UI on startup to show form title and disable clipboard and 
' undo/redo buttons 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles MyBase.Load 
UpdateUI() 
End Sub 
Private  Sub UpdateUI() 
' update caption 
_fileName = _appName 
If _fileName.Length > 0 Then 
_fileName = String.Format("{0} - [{1}]", _appName, _fileName)  
If _dirty Then _fileName = _fileName + " *" 
End If 
' push/release design/preview mode buttons 
Dim design As Boolean =  _c1rd.Visible AndAlso (Not 
IsNothing(_c1rd.Report)) 
VB.NET TIFF: Modify TIFF File by Adding, Deleting & Sort TIFF
you want to change or rearrange current TIFF &ltsummary> ''' Sort TIFF document pages in designed powerful & profession imaging controls, PDF document, image
change page order pdf; move pages within pdf
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
a PDF document which is out of order, you need to rearrange the PDF you with examples for adding an (empty) page to a PDF and adding empty pages to a
how to move pages within a pdf; change page order pdf acrobat
18  
_btnDesign.Pushed = design 
_btnPreview.Pushed = Not design 
' enable/disable buttons 
_btnCut.Enabled = design AndAlso _c1rd.ClipboardHandler.CanCut 
_btnCopy.Enabled = design AndAlso _c1rd.ClipboardHandler.CanCut 
_btnPaste.Enabled = design AndAlso _c1rd.ClipboardHandler.CanPaste 
_btnUndo.Enabled = design AndAlso _c1rd.UndoStack.CanUndo 
_btnRedo.Enabled = design AndAlso _c1rd.UndoStack.CanRedo 
Dim reportSelected As Boolean =  design AndAlso Not 
(IsNothing(_list.SelectedItem)) 
_btnAddReport.Enabled = _c1rd.Visible 
_btnDelReport.Enabled = reportSelected 
_btnAddField.Enabled  = reportSelected  
_btnAddLabel.Enabled  = reportSelected 
End Sub 
C# 
// update UI on startup to show form title and disable clipboard and 
// undo/redo buttons 
private void Form1_Load(object sender, System.EventArgs e) 
UpdateUI(); 
private void UpdateUI() 
// update caption 
Text = (_fileName != null && _fileName.Length > 0) 
? string.Format("{0} - [{1}] {2}", _appName, _fileName, _dirty? "*": 
"") 
: _appName; 
// push/release design/preview mode buttons 
bool design = _c1rd.Visible && _c1rd.Report != null; 
_btnDesign.Pushed  = design; 
_btnPreview.Pushed = !design; 
// enable/disable buttons 
_btnCut.Enabled   = design && _c1rd.ClipboardHandler.CanCut; 
_btnCopy.Enabled  = design && _c1rd.ClipboardHandler.CanCut; 
_btnPaste.Enabled = design && _c1rd.ClipboardHandler.CanPaste; 
_btnUndo.Enabled  = design && _c1rd.UndoStack.CanUndo; 
_btnRedo.Enabled  = design && _c1rd.UndoStack.CanRedo; 
bool reportSelected = design && _list.SelectedItem != null; 
_btnAddReport.Enabled = _c1rd.Visible; 
_btnDelReport.Enabled = reportSelected; 
_btnAddField.Enabled  = reportSelected;  
_btnAddLabel.Enabled  = reportSelected; 
Notice how UpdateUI uses the CanCut, CanPaste, CanUndo, and CanRedo properties to enable and disable 
toolbar buttons. 
C# PowerPoint - How to Process PowerPoint
the simplest procedures, for instance, using online clear C# out useless PowerPoint document pages simply with solution to sort and rearrange PowerPoint slides
how to reorder pdf pages in reader; rearrange pages in pdf online
VB.NET Word: How to Process MS Word in VB.NET Library in .NET
well programmed Word pages sorter to rearrange Word pages in extracting single or multiple Word pages at one & profession imaging controls, PDF document, image
how to reorder pages in pdf online; how to rearrange pdf pages reader
19 
Step 4 of 9: Add Code to Handle the Toolbar Commands 
To handle the clicks on the toolbar buttons and dispatch them to the appropriate handlers, use the following code: 
Visual Basic 
' handle clicks on toolbar buttons 
Private Sub _tb_ButtonClick(ByVal sender As System.Object, ByVal e As 
System.Windows.Forms.ToolBarButtonClickEventArgs) Handles _tb.ButtonClick 
' design/preview mode 
If e.Button.Equals(_btnDesign) Then 
SetDesignMode(True) 
End If 
If e.Button.Equals(_btnPreview) Then 
SetDesignMode(False) 
' file commands 
If e.Button.Equals(_btnNew) Then 
NewFile() 
If e.Button.Equals(_btnOpen) Then 
OpenFile() 
If e.Button.Equals(_btnSave) Then 
SaveFile() 
' allow user to undo clipboard operations 
If e.Button.Equals(_btnCut) Or e.Button.Equals(_btnPaste) Then 
_c1rd.UndoStack.SaveState() 
End If 
' clipboard 
If e.Button.Equals(_btnCut) Then 
_c1rd.ClipboardHandler.Cut() 
If e.Button.Equals(_btnCopy) Then 
_c1rd.ClipboardHandler.Copy() 
If e.Button.Equals(_btnPaste) Then 
_c1rd.ClipboardHandler.Paste() 
' undo/redo 
If e.Button.Equals(_btnUndo) Then 
_c1rd.UndoStack.Undo() 
If e.Button.Equals(_btnRedo) Then 
_c1rd.UndoStack.Redo() 
' add/remove reports 
If e.Button.Equals(_btnAddReport) Then 
NewReport() 
If e.Button.Equals(_btnDelReport) Then 
DeleteReport() 
' add fields 
' (just set create info and wait for CreateField event from designer) 
If e.Button.Equals(_btnAddField) Then 
_c1rd.CreateFieldInfo = e.Button 
End If 
If e.Button.Equals(_btnAddLabel) Then 
_c1rd.CreateFieldInfo = e.Button 
End If 
Process Images in Web Image Viewer | Online Tutorials
used document types are supported, including PDF, multi-page easy to process image and file pages with the deleting a thumbnail, and you can rearrange the file
pdf rearrange pages online; reorder pdf pages online
VB.NET PowerPoint: Sort and Reorder PowerPoint Slides by Using VB.
page will teach you to rearrange and readjust amount of robust PPT slides/pages editing methods and powerful & profession imaging controls, PDF document, image
how to reorder pages in pdf; how to move pages around in a pdf document
20  
End Sub 
C# 
// handle clicks on toolbar buttons 
private void _tb_ButtonClick(object sender, 
System.Windows.Forms.ToolBarButtonClickEventArgs e) 
// design/preview mode 
if (e.Button == _btnDesign)     SetDesignMode(true); 
if (e.Button == _btnPreview)    SetDesignMode(false); 
// file commands 
if (e.Button == _btnNew)        NewFile(); 
if (e.Button == _btnOpen)       OpenFile(); 
if (e.Button == _btnSave)       SaveFile(); 
// allow user to undo clipboard operations 
if (e.Button == _btnCut || e.Button == _btnPaste) 
_c1rd.UndoStack.SaveState(); 
// clipboard 
if (e.Button == _btnCut)      _c1rd.ClipboardHandler.Cut(); 
if (e.Button == _btnCopy)     _c1rd.ClipboardHandler.Copy(); 
if (e.Button == _btnPaste)    _c1rd.ClipboardHandler.Paste(); 
// undo/redo 
if (e.Button == _btnUndo)     _c1rd.UndoStack.Undo(); 
if (e.Button == _btnRedo)     _c1rd.UndoStack.Redo(); 
// add/remove reports 
if (e.Button == _btnAddReport)   NewReport(); 
if (e.Button == _btnDelReport)   DeleteReport(); 
// add fields 
// (just set create info and wait for CreateField event from designer) 
if (e.Button == _btnAddField)    _c1rd.CreateFieldInfo = e.Button; 
if (e.Button == _btnAddLabel)    _c1rd.CreateFieldInfo = e.Button; 
This routine dispatches about half of the commands to specialized handlers. These will be described later. The 
other half (clipboard, undo/redo) is handled directly by the C1ReportDesigner control. 
Note that before calling the Cut and Paste methods, the code calls the SaveState method to save the current state of 
the report. This allows the user to undo and redo clipboard operations. In general, your code should always call 
SaveState before making changes to the report. 
Step 5 of 9: Implement the SetDesignMode Method 
The simple designer has two modes: report design and preview. When the user selects a new report or clicks the 
Design button on the toolbar, the application shows the designer control. When the user clicks the Preview 
button, the application renders the current report into the preview control and shows the result. 
Add the following code to implement the SetDesignMode method: 
Visual Basic 
Private Sub SetDesignMode(ByVal design As Boolean) 
' show/hide preview/design panes 
_c1rd.Visible  = design 
21 
_c1ppv.Visible = Not design 
' no properties in preview mode 
If Not design Then 
_lblPropGrid.Text = "Properties" 
_ppg.SelectedObject = Nothing 
End If 
' attach copy of the report to preview control 
' (so changes caused by script aren't saved) 
If Not design Then 
_c1ppv.Document = Nothing 
_c1r.CopyFrom(_c1rd.Report) 
Cursor = Cursors.WaitCursor 
_c1r.Render() 
If _c1r.PageImages.Count > 0 Then 
_c1ppv.Document = _c1r.Document 
End If 
Cursor = Cursors.Default 
End If 
' done, update UI 
UpdateUI() 
End Sub 
C# 
private void SetDesignMode( bool design)  
// show/hide preview/design panes 
_c1rd.Visible  = design; 
_c1ppv.Visible = !design; 
// no properties in preview mode 
if (!design )  
_lblPropGrid.Text = "Properties"; 
_ppg.SelectedObject = null; 
// attach copy of the report to preview control 
// (so changes caused by script aren't saved) 
if (!design )  
_c1ppv.Document = null; 
_c1r.CopyFrom(_c1rd.Report); 
Cursor = Cursors.WaitCursor; 
_c1r.Render(); 
if (_c1r.PageImages.Count > 0 ) 
_c1ppv.Document = _c1r.Document; 
Cursor = Cursors.Default; 
// done, update UI 
UpdateUI(); 
Switching to design mode is easy, all you have to do is show the designer and hide the preview control. Switching 
to preview mode is a little more involved because it also requires rendering the report. 
22  
Note that the report is copied to a separate C1Report control before being rendered. This is necessary because 
reports may contain script code that changes the report definition (field colors, visibility, and so on), and we don't 
want those changes applied to the report definition. 
Step 6 of 9: Implement the File Support Methods 
The simple designer has three commands that support files: New, Open, and Save. NewFile clears the class 
variables, report list, preview and designer controls, and then updates the UI.  
Add the following code to implement the NewFile method: 
Visual Basic 
Private Sub NewFile() 
_fileName = "" 
_dirty = False 
_list.Items.Clear() 
_c1ppv.Document = Nothing 
_c1rd.Report = Nothing 
UpdateUI() 
End Sub 
C# 
private void NewFile() 
_fileName = ""; 
_dirty = false; 
_list.Items.Clear(); 
_c1ppv.Document = null; 
_c1rd.Report = null; 
UpdateUI(); 
OpenFile prompts the user for a report definition file to open, then uses the C1Report component to retrieve a list 
of report names in the selected file. Each report is loaded into a new C1Report component, which is added to the 
report list (_list control). 
Instead of adding the C1Report components directly to the list box, the code uses a ReportHolder wrapper class. 
The only function of the ReportHolder class is to override the ToString method so the list box shows the report 
names.  
Add the following code to implement the OpenFile method: 
Visual Basic 
Public Sub OpenFile()  
' get name of file to open 
Dim dlg As New OpenFileDialog 
dlg.FileName = "*.xml" 
dlg.Title = "Open Report Definition File" 
If dlg.ShowDialog() <> DialogResult.OK Then 
Return 
End If 
' check selected file 
Try 
reports = _c1r.GetReportInfo(dlg.FileName) 
Catch 
If IsNothing(reports) OrElse reports.Length = 0 Then 
MessageBox.Show("Invalid (or empty) report definition file") 
Return 
23 
End If 
End Try 
' clear list 
NewFile() 
' load new file 
Cursor = Cursors.WaitCursor 
_fileName = dlg.FileName 
Dim reportName As String 
For Each reportName In reports 
Dim rpt As New C1Report()  
rpt.Load(_fileName, reportName) 
_list.Items.Add(New ReportHolder(rpt)) 
Next 
Cursor = Cursors.Default 
' select first report 
_list.SelectedIndex = 0 
End Sub 
' ReportHolder 
' Helper class used to store reports in listboxes. The main thing 
' it does is override the ToString() method to render the report name. 
Public Class ReportHolder 
Public  Sub New(ByVal report As C1Report) 
Me.Report = report 
End Sub 
Public Overrides Function ToString() As String 
Dim text As String = Me.Report.ReportName  
If text.Length = 0 Then text = "Unnamed Report" 
Return text 
End Function 
Public ReadOnly Report As C1Report 
End Class 
C# 
public void OpenFile() 
// get name of file to open 
OpenFileDialog dlg = new OpenFileDialog(); 
dlg.FileName = "*.xml"; 
dlg.Title = "Open Report Definition File"; 
if (dlg.ShowDialog() != DialogResult.OK) 
return; 
// check selected file 
string[] reports = null; 
try 
reports = _c1r.GetReportInfo(dlg.FileName); 
catch {} 
if (reports == null || reports.Length == 0) 
MessageBox.Show("Invalid (or empty) report definition file"); 
return; 
24  
// clear list 
NewFile(); 
// load new file 
Cursor = Cursors.WaitCursor; 
_fileName = dlg.FileName; 
foreach (string reportName in reports) 
C1Report rpt = new C1Report(); 
rpt.Load(_fileName, reportName); 
_list.Items.Add(new ReportHolder(rpt)); 
Cursor = Cursors.Default; 
// select first report 
_list.SelectedIndex = 0; 
// ReportHolder 
// Helper class used to store reports in listboxes. The main thing 
// it does is override the ToString() method to render the report name. 
public class ReportHolder 
public readonly C1Report Report; 
public ReportHolder(C1Report report) 
Report = report; 
override public string ToString() 
string s = Report.ReportName; 
return (s != null && s.Length > 0)? s: "Unnamed Report"; 
Finally, the SaveFile method prompts the user for a file name and uses an XmlWriter to save each report into the 
new file using C1Report.Save method. Add the following code to implement the SaveFile method: 
Visual Basic 
Public Sub SaveFile() 
' get name of file to save 
Dim dlg As New SaveFileDialog() 
dlg.FileName = _fileName 
dlg.Title = "Save Report Definition File" 
If dlg.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return 
' save file 
Dim w As New XmlTextWriter(dlg.FileName, System.Text.Encoding.Default) 
w.Formatting = Formatting.Indented 
w.Indentation = 2 
w.WriteStartDocument() 
' write all reports to it 
Cursor = Cursors.WaitCursor 
w.WriteStartElement("Reports") 
Dim rh As ReportHolder 
For Each rh In _list.Items 
rh.Report.Save(w) 'rh.Report.ReportName 
Documents you may be interested
Documents you may be interested