c# pdf viewer library free : How to rearrange pages in a pdf document control application system azure web page asp.net console winforms.reportdesigner35-part1647

345 
Tip: The outline nodes for each item that is being rendered on document can be clicked. Clicking a node 
will show the items attached with that node. For an example of how to add outline nodes, see Adding 
Outline Entries to the Outline Tab
Embedded Fonts 
When a C1PrintDocument is saved as a C1DX or C1D file, fonts used in the document may be embedded in that 
file. In that case, when that document is loaded from the file on a different system, text drawn with fonts that have 
been embedded is guaranteed to render correctly even if the current system does not have all the original fonts 
installed. Font embedding may be particularly useful when rare or specialized fonts are used (such as, a font 
drawing barcodes). Note that when a font is embedded in a C1PrintDocument that does not mean that all glyphs 
from that font are embedded. Instead, just the glyphs actually used in the font are embedded. 
The following C1PrintDocument properties are related to font embedding: 
EmbeddedFonts – this is the collection that contains fonts embedded in the document. Note that while it 
may be automatically populated, it may also be manually changed for custom control over font 
embedding (see below for more details). 
DocumentFonts – this collection is automatically populated, depending on the value of the 
C1PrintDocument.FontHandling property. It may be used to find out which fonts are used in the 
document. 
FontHandling – this property determines whether and how the two related collections (EmbeddedFonts 
and DocumentFonts) are populated. 
Font Substitution 
When a text is rendered using a font, and a glyph appears in the text that is not present in the specified font, a 
substitute font may be selected to render that glyph. For instance, if the Arial font is used to render Japanese 
hieroglyphs, Arial Unicode MS font may be used to actually render the text. C1PrintDocument can analyze this 
and add the actual fonts used (rather than those specified) to the DocumentFonts and/or EmbeddedFonts 
collections. To do that, the FontHandling must be set to FontHandling.BuildActualDocumentFonts or 
FontHandling.EmbedActualFonts. The downside to those settings is that it takes time, making the document 
generate slower. Hence it may be recommended that those settings are used only if the document contains 
characters that may be missing from the fonts that are specified (for example, text in Far Eastern languages using 
common Latin fonts). 
When font substitution is analyzed, the following predefined set of fonts is searched for the best matching font 
containing the missing glyphs: 
MS UI Gothic 
MS Mincho 
Arial Unicode MS 
Batang 
Gulim 
Microsoft YaHei 
Microsoft JhengHei 
MingLiU 
SimHei 
SimSun 
How to rearrange pages in a pdf document - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
reorder pages in pdf file; move pages in pdf document
How to rearrange pages in a pdf document - 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 page order reverse; how to reorder pages in pdf online
346  
Selective Font Embedding 
If your document uses a specialized font along with the commonly available fonts such as Arial, you may want to 
embed just that specialized font (or several fonts) without embedding all fonts used in the document. To do that, 
follow these steps: 
1.
Set FontHandling to a value other than FontHandling.EmbedFonts or 
FontHandling.EmbedActualFonts. This will leave the EmbeddedFonts collection empty when the 
document generates; 
2.
Add the specialized fonts (they must be installed on the current system) to the document's 
EmbeddedFonts collection manually in code. To create an EmbeddedFont, pass the.NET Font object 
corresponding to your custom font to the EmbeddedFont's constructor. Add the required glyphs to the 
font using the EmbeddedFont.AddGlyphs method (several overloads are provided). 
When a C1PrintDocument with the EmbeddedFonts collection created in this way is saved (as C1DX or C1D 
file), just the fonts specified in that collection are embedded in the document. 
Dictionary 
If one item (for example, an image or an icon) is used in several places in a document, you can store that item once 
in a location available from the whole document and reference that instance, rather than inserting the same image 
or icon in every place it is used. For that, C1PrintDocument provides a dictionary.  
To access the dictionary, use the Dictionary property. The dictionary contains items of the base type 
DictionaryItem, which is an abstract type. Two derived classes are provided, DictionaryImage and 
DictionaryIcon, to store images and icons correspondingly. Items in the dictionary are referenced by names. In 
order to use an item, you must assign a name to it. The name must be unique within the dictionary.  
Dictionary items may be used in the following places in the document: 
As the background image of a style, using the property BackgroundImageName. 
As the image in a RenderImage object, using the property ImageName. 
So, if in your document the same image is used in several places, do the following: 
Add the image to the dictionary, for instance like this: 
Visual Basic 
Me.C1PrintDocument1.Dictionary.Add(New 
C1.C1Preview.DictionaryImage("image1", Image.FromFile("myImage.jpg"))) 
C# 
this.c1PrintDocument1.Dictionary.Add(new DictionaryImage("image1", 
Image.FromFile("myImage.jpg"))); 
Use that image by setting either the BackgroundImageName on styles, or the ImageName property on 
render images, for example, like this: 
Visual Basic 
Dim ri As New C1.C1Preview.RenderImage() 
ri.ImageName = "image1" 
C# 
RenderImage ri = new RenderImage(); 
ri.ImageName = "image1"; 
C1Report Definitions 
C1PrintDocument has the ability to import and generate C1Report definitions. 
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.
reorder pages in pdf reader; pdf move pages
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
page directly. Moreover, when you get a PDF document which is out of order, you need to rearrange the PDF document pages. In these
rearrange pdf pages reader; how to move pages within a pdf document
347 
To import a C1Report into a C1PrintDocument, use the ImportC1Report method. For example, the following 
code can be used to import and preview the Alphabetical List of Products report included in the ReportBrowser 
sample shipped with Reports for WinForms: 
Visual Basic 
Dim doc As C1PrintDocument = New C1PrintDocument() 
doc.ImportC1Report("NWind.xml", "Alphabetical List of Products")  
Dim pdlg As C1PrintPreviewDialog = New C1PrintPreviewDialog() 
pdlg.Document = doc  
pdlg.ShowDialog() 
C# 
C1PrintDocument doc = new C1PrintDocument(); 
doc.ImportC1Report("NWind.xml", "Alphabetical List of Products"); 
C1PrintPreviewDialog pdlg = new C1PrintPreviewDialog(); 
pdlg.Document = doc; 
pdlg.ShowDialog(); 
After a C1Report has been imported into C1PrintDocument, the document has the following structure: 
For a report without grouping: 
The page footer is represented by a RenderSection object and is assigned to the document's 
PageLayouts.Default.PageFooter. 
For each section of the report, a RenderSection object is created and added to the Body of the document in 
the following order: 
Header (the report header, SectionTypeEnum.Header) 
PageHeader (the page header, SectionTypeEnum.PageHeader) 
Detail (the data section, SectionTypeEnum.Detail) 
Footer (the report footer, SectionTypeEnum.Footer) 
A copy of the PageHeader is also assigned to the 
PageHeader.LayoutChangeAfter.PageLayout.PageHeader. This complex structure is needed because in 
C1Report, the first page header is printer after the report header. 
For a report with grouping: 
For each group, a RenderArea is created, and the following object tree is placed between the PageHeader and 
Footer (for 2 groups): 
RenderArea representing the top level group 
RenderSection representing GroupHeader1 
RenderArea representing the nested group 
RenderSection representing GroupHeader2 
Detail 
RenderSection representing GroupFooter2 
RenderSection representing GroupFooter1 
C1Report Import Limitations 
Importing C1Report into C1PrintDocument has the following limitations: 
VB.NET TIFF: Modify TIFF File by Adding, Deleting & Sort TIFF
do if you want to change or rearrange current TIFF &ltsummary> ''' Sort TIFF document pages in designed & profession imaging controls, PDF document, image to
rearrange pdf pages in reader; pdf reverse page order preview
C# PowerPoint - How to Process PowerPoint
It enables you to move out useless PowerPoint document pages simply with a few a very easy PPT slide dealing solution to sort and rearrange PowerPoint slides
change page order in pdf reader; reorder pages in pdf online
348  
Only a report definition contained in an XML file can be imported. That is, if an application that produces 
a report in code via C# or VB.NET handlers attached to C1Report events, that report cannot be imported 
into C1PrintDocument. 
In C1Report, if there is no printer installed, and CustomWidth and CustomHeight are both set to 0, the 
paper size is always set to Letter (8.5in x 11in). In C1PrintDocument, the paper size is determined based 
on the current locale, for example, for many European countries it will be set to A4 (210cm x 297cm). 
Scripting limitations: 
C1PrintDocument: 
The Font property is read-only. 
Field: 
The Section property is read-only. 
The Font property is read-only. 
The LineSpacing property does not exist. 
The Field.Subreport property is read-only. 
If the LinkTarget property contains an expression, it will not be evaluated and will be used 
literally. 
The SubreportHasData property does not exist. 
The LinkValue property does not exist. 
Layout: 
The ColumnLayout property is not supported, columns always go top to bottom and left to right. 
The LabelSpacingX property does not exist. 
The LabelSpacingY property does not exist. 
The OverlayReplacements property does not exist. 
In OnFormat event handlers, properties that affect the pagination of the resulting document should not be 
changed. For example, ForcePageBreak cannot be used. 
The dialog box for entering the report's parameters is not shown. Instead, default values are used. If the 
default is not specified, it is determined by the type of the parameter, for example, 0 is used for numbers, 
empty string for strings, current date for dates, and so on. 
Database fields cannot be used in PageHeader and PageFooter. 
In C1Report, in multi-column reports the report header is printed across all columns; in 
C1PrintDocument, it will be printed only across the first column. 
Across is not supported for columns. 
Working with Printer Drivers 
Several new members in ComponentOne Reports for WinForms were added to work around specific problems 
caused by printer drivers.  
The following members were added to resolve issues with printer drivers: 
Class 
Member 
Description 
C1PreviewPane 
AdjustPrintPage event 
Fired from within the PrintPage event 
handler of the C1PrintManager used to print 
Online Merge PDF files. Best free online merge PDF tool.
By dragging your pages in the editor area you can rearrange them or delete single pages. We try to make it as easy as possible to merge your PDF files.
reorder pages pdf file; rearrange pdf pages
VB.NET Word: How to Process MS Word in VB.NET Library in .NET
well programmed Word pages sorter to rearrange Word pages extracting single or multiple Word pages at one & profession imaging controls, PDF document, image to
how to reorder pdf pages; how to rearrange pdf pages
349 
the document. 
C1PrintManager 
AdjustPrintPage event 
Fired from within the 
PrintDocument.PrintPage event handler of 
current print manager, prior to actually 
printing the page. 
C1PrintOptions 
DrawPrintableAreaBounds 
property 
Gets or sets a value indicating whether a line 
is drawn around the printable area of the 
page (useful to debug printer issues). 
PrintableAreaBoundsPen 
property 
Gets or sets the pen used to draw printable 
area bounds if DrawPrintableAreaBounds is 
True. 
PrintAsBitmap property 
Gets or sets a value indicating whether page 
metafiles should be converted to bitmaps and 
clipped to printer's hard margins prior to 
printing. 
The members listed in the table above may be used to work around certain printer issues. For instance, consider 
the following scenario of a machine running Windows Vista 64 with an HP-CP1700 printer (using Vista's built-in 
printer driver). In this example, if ClipPage was False (default) and a document page was wider than the printer's 
hard margin, empty pages were emitted and document content was not printed. For example, the following 
document produced just two empty pages if printed: 
Visual Basic 
Dim doc As New C1PrintDocument()  
doc.Style.Font = New Font("Arial", 32)  
For i As Integer = 0 To 19  
Dim rtx As New RenderText(i.ToString())  
rtx.X = String.Format("{0}in", i)  
rtx.Y = "10cm"  
rtx.Style.FontSize = 64  
doc.Body.Children.Add(rtx)  
Next  
doc.Generate() 
C# 
C1PrintDocument doc = new C1PrintDocument(); 
doc.Style.Font = new Font("Arial", 32); 
for (int i = 0; i < 20; ++i) 
RenderText rtx = new RenderText(i.ToString()); 
rtx.X = string.Format("{0}in", i); 
rtx.Y = "10cm"; 
rtx.Style.FontSize = 64; 
doc.Body.Children.Add(rtx); 
doc.Generate(); 
This issue can be now worked around by doing two things:  
1.
Set PrintAsBitmap to True (for example, on C1PreviewPane). 
2.
Attach the following event handler to the AdjustPrintPage event (available also via AdjustPrintPage): 
Visual Basic 
Dim doc As New C1PrintDocument()  
doc.Style.Font = New Font("Arial", 32) 
Private  Sub PreviewPane_AdjustPrintPage(ByVal sender As Object, ByVal 
e As AdjustPrintPageEventArgs) 
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
how to move pages around in pdf; move pages in pdf reader
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 powerful & profession imaging controls, PDF document, image to
pdf reorder pages online; rearrange pdf pages online
350  
Dim pa As RectangleF =  e.PrintableArea  
If Not e.PrintPageEventArgs.PageSettings.Landscape Then 
pa.Width = 800 ' System set to 824 
pa.X = 25 ' System set to 13 
pa.Y = 13 ' System set to 6.666... 
Else  
pa.X = 13 
pa.Y = 0 
End If 
e.PrintableArea = pa 
End Sub 
C# 
C1PrintDocument doc = new C1PrintDocument(); 
doc.Style.Font = new Font("Arial", 32); 
void PreviewPane_AdjustPrintPage(object sender, 
AdjustPrintPageEventArgs e) 
RectangleF pa = e.PrintableArea; 
if (!e.PrintPageEventArgs.PageSettings.Landscape) 
pa.Width = 800; // System set to 824 
pa.X = 25; // System set to 13 
pa.Y = 13; // System set to 6.666... 
else { 
pa.X = 13; 
pa.Y = 0; 
e.PrintableArea = pa; 
This code fixes the wrong hard page margins set by the printer driver, and avoids the problem described above. 
Report Definition Language (RDL) Files 
Import support for RDL files is included in C1PrintDocument. Report Definition Language (RDL) import allows 
reading RDL report definitions into an instance of the C1PrintDocument component. The resulting document is a 
data-bound representation of the imported report. RDL support in C1PrintDocument is based on the Microsoft 
RDL Specification for SQL Server 2008
Note: RDL import in C1PrintDocument (provided by ImportRdl and FromRdl methods)  is now obsolete. 
C1RdlReport should be used instead. See Working with C1RdlReport for more information. 
You can use the following code to import an RDL file: 
Visual Basic 
Dim doc As New C1PrintDocument() 
doc.ImportRdl("myReport.rdl") 
doc.Generate() 
C# 
C1PrintDocument doc = new C1PrintDocument(); 
doc.ImportRdl("myReport.rdl"); 
doc.Generate(); 
Note that not all RDL properties are currently supported, but support will be added in future releases. For more 
information, see the RDL Import Limitations topic. 
351 
RDL Import Limitations 
The current implementation of RDL import in Reports for WinFroms has some limitations. These limitations 
include: 
Gauge, Chart, and SubReport objects are not supported. 
Expressions for sub-properties of complex RDL properties (such as border width) are not supported. 
Most aggregate functions in RDL have the optional "recursive" parameter. It is not supported. 
The following RDL properties are not fully supported yet: 
QueryParameter.Value: Only a literal value may be specified. 
ReportParameter: Parameters referencing data are not supported. 
Hyperlink: Cannot be specified as expression; if several actions are associated with a hyperlink, only the 
first action is supported. 
ReportItem.Visibility: Cannot be specified as expression. 
ReportItem.Bookmark: Cannot be specified as expression. 
Style.TextAlign.General: Left align is used. 
The following RDL properties are currently not supported: 
Document.AutoRefresh 
Document.CustomProperties 
Document.Code 
Document.Width 
Document.Language 
Document.CodeModules 
Document.Classes 
Document.ConsumeContainerWhitespace 
Document.DataTransform 
Document.DataSchema 
Document.DataElementName 
Document.DataElementStyle 
ConnectionProperties.Prompt 
ConnectionProperties.DataProvider 
DataSet.CaseSensitivity 
DataSet.Collation 
DataSet.AccentSensitivity 
DataSet.KanatypeSensitivity 
DataSet.WidthSensitivity 
DataSet.InterpretSubtotalsAsDetails 
Body.Height 
352  
ReportItem.ToolTip 
ReportItem.DocumentMapLabel 
ReportItem.CustomProperties 
ReportItem.DataElementName 
ReportItem.DataElementOutput 
TextBox.HideDuplicates 
TextBox.ToggleImage 
TextBox.UserSort 
TextBox.DataElementStyle 
TextBox.ListStyle 
TextBox.ListLevel 
TextRun.ToolTip 
TextRun.MarkupType 
Style.Format 
Style.LineHeight 
Style.Direction 
Style.Language 
Style.Calendar 
Style.NumeralVariant 
Style.TextEffect 
Note: RDL import in C1PrintDocument (provided by ImportRdl and FromRdl methods)  is now obsolete. 
C1RdlReport should be used instead. See Working with C1RdlReport for more information. 
353 
Working with C1MultiDocument 
The C1MultiDocument component is designed to allow creating, persisting, and exporting large documents that 
cannot be handled by a single C1PrintDocument object due to memory limitations. 
A C1MultiDocument object provides a Items collection that can contain one or more elements of the type 
C1MultiDocumentItem. Each such element represents a C1PrintDocument. Use of compression and temporary 
disk storage allows combining several C1PrintDocument objects into a large multi-document that would cause an 
out of memory condition if all pages belonged to a single C1PrintDocument. The following snippet of code 
illustrates how a multi-document might be created and previewed: 
Visual Basic 
Dim mdoc As New C1MultiDocument() 
mdoc.Items.Add(C1PrintDocument.FromFile("myDoc1.c1dx")) 
mdoc.Items.Add(C1PrintDocument.FromFile("myDoc2.c1dx")) 
mdoc.Items.Add(C1PrintDocument.FromFile("myDoc3.c1dx")) 
Dim pview As New C1PrintPreviewDialog() 
pview.Document = mdoc 
pview.ShowDialog() 
C# 
C1MultiDocument mdoc = new C1MultiDocument(); 
mdoc.Items.Add(C1PrintDocument.FromFile("myDoc1.c1dx")); 
mdoc.Items.Add(C1PrintDocument.FromFile("myDoc2.c1dx")); 
mdoc.Items.Add(C1PrintDocument.FromFile("myDoc3.c1dx")); 
C1PrintPreviewDialog pview = new C1PrintPreviewDialog(); 
pview.Document = mdoc; 
pview.ShowDialog(); 
C1MultiDocument supports links between contained documents, common TOC, common page numeration, and 
total page count. 
Note that a C1MultiDocument does not store references to the C1PrintDocument objects added to it – rather, it 
serializes them (as .c1d/x) and stores the result. Thus, you can create really large multi-documents without running 
out of memory – provided, of course, that your code itself does not keep references to the individual 
C1PrintDocument objects that were added to the C1MultiDocument. So when using C1MultiDocument please 
make sure that you do not keep references to the individual document objects after you have added them to the 
multi-document. 
C1MultiDocument can be persisted as "C1 Open XML Multi Document" with the default extension of .c1mdx. 
C1MultiDocument can be exported to most formats using any of the Export method overloads. See Exporting a 
C1MultiDocument File for details. 
C1MultiDocument can be printed using any of the Print and PrintDialog methods overloads. See Printing a 
C1MultiDocument File for details. 
C1MultiDocument Limitations 
The primary purpose of the C1MultiDocument component is to handle large documents that it would otherwise be 
impossible to create/export/print due to memory limitations. There are no limitations on the size and number of 
documents. But you may have to use disk storage rather than (default) memory, see the SetStorage methods for 
details. 
A multi-document has a limitation that may or may not be significant depending on the specific application: it 
does NOT allow you to access the object model of C1PrintDocuments contained within. In other words, while 
you can write the following code: 
354  
Visual Basic 
Dim mdoc As New C1MultiDocument() 
mdoc.Items.Add(C1PrintDocument.FromFile("file1.c1dx")) 
mdoc.Items.Add(C1PrintDocument.FromFile("file2.c1dx")) 
mdoc.Items.Add(C1PrintDocument.FromFile("file3.c1dx")) 
C# 
C1MultiDocument mdoc = new C1MultiDocument(); 
mdoc.Items.Add(C1PrintDocument.FromFile("file1.c1dx")); 
mdoc.Items.Add(C1PrintDocument.FromFile("file2.c1dx")); 
mdoc.Items.Add(C1PrintDocument.FromFile("file3.c1dx")); 
You CANNOT then add something like the following: 
Visual Basic 
Dim doc As C1PrintDocument = mdoc.Items(1) 
C# 
C1PrintDocument doc = mdoc.Items[1]; 
If that limitation is not an issue for a particular application, then you can even use the C1MultiDocument 
component to "modularize" the application even if there are no memory problems. 
Creating and Previewing a C1MultiDocument File 
To add an item to the C1MultiDocumentItemCollection, you can use the Add method. To load a file into the 
C1MultiDocument component you can use the Load method. To remove a file, you would use the Clear method. 
This method clears any file previously loaded into the C1MultiDocument component.  
To add an item to the C1MultiDocumentItemCollection, you can use the Add method. Complete the following 
steps: 
1.
In Design View, double-click on the form to open the Code Editor. 
2.
Add the following code to the Load event: 
Visual Basic 
Dim ppc As New C1PrintPreviewControl 
Controls.Add(ppc) 
ppc.Dock = DockStyle.Fill 
Dim pdoc As New C1PrintDocument 
Dim pdoc2 As New C1PrintDocument 
Dim mdoc As New C1MultiDocument 
pdoc.Body.Children.Add(New C1.C1Preview.RenderText("Hello!")) 
pdoc2.Body.Children.Add(New C1.C1Preview.RenderText("World!")) 
mdoc.Items.Add(pdoc) 
mdoc.Items.Add(pdoc2) 
ppc.Document = mdoc 
mdoc.Generate() 
C# 
C1PrintPreviewControl ppc = new C1PrintPreviewControl(); 
Controls.Add(ppc); 
ppc.Dock = DockStyle.Fill; 
C1PrintDocument pdoc = new C1PrintDocument(); 
C1PrintDocument pdoc2 = new C1PrintDocument(); 
C1MultiDocument mdoc = new C1MultiDocument(); 
pdoc.Body.Children.Add(new C1.C1Preview.RenderText("Hello!")); 
pdoc2.Body.Children.Add(new C1.C1Preview.RenderText("World!")); 
mdoc.Items.Add(pdoc); 
Documents you may be interested
Documents you may be interested