c# pdf viewer itextsharp : Pdf page order reverse Library application component .net html asp.net mvc winforms.pdf1-part1578

Step 3 is the most interesting one. The code starts by retrieving the page rectangle, expressed in 
points. It then adds a one-inch margin around the page (72 points). Finally, the code creates a Font 
object and calls the DrawString method to write "Hello World!" on the page. This is exactly what 
you would do if you were writing to a Graphics object in .NET and is what makes PDF for .NET so 
easy to use. 
One important thing to remember is that PDF for .NET uses a point-based coordinate system with 
the origin at the top-left corner of the page. This is similar to the default coordinate system used by 
.NET, but is different from the default PDF coordinate system (where the origin is on the bottom-
left corner of the page). In this example, the top left point of the "H" in "Hello World" is located at 
[1,1]. 
Because the coordinate system is based on points, rather than pixels, PDF for .NET uses 
RectangleF, SizeF, and PointF structures, which have members of type float, rather than 
Rectangle, Size, and Point, which have members of type int. 
Adding Text 
Using ComponentOne PDF for .NET > Adding Text 
The following topics provide information on drawing, measuring, and managing the flow of text, as 
well as drawing RTF text. 
Pdf page order reverse - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
switch page order pdf; how to move pages in a pdf document
Pdf page order reverse - 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 rearrange pdf pages; pdf reorder pages
10 
See Also 
Drawing Text 
Measuring Text 
Making Text Flow from Page to Page 
Drawing RTF Text 
Drawing Text 
Using ComponentOne PDF for .NET Adding Text > Drawing Text 
Adding text to PDF for .NET documents is easy – all the work is done by the DrawString method. 
DrawString draws a given string at a specified location using a given font and brush. For example: 
To write code in Visual Basic 
Visual Basic 
pdf.DrawString("Hello World!", font, Brushes.Black, rect) 
To write code in C# 
C# 
pdf.DrawString("Hello World!", font, Brushes.Black, rect); 
By default, DrawString will align the text to the left and to the top of the given rectangle, will wrap 
the string within the rectangle, and will not clip the output to the rectangle. You can change all 
these options by specifying a StringFormat parameter in the call to DrawString. The StringFormat 
has members that allow you to specify the horizontal alignment (Alignment), vertical alignment 
(LineAligmnent), and flags that control wrapping and clipping (FormatFlags). 
For example, the code below creates a StringFormat object and uses it to align the text to the 
center of the rectangle, both vertically and horizontally: 
To write code in Visual Basic 
C# Word: How to Use C# Code to Print Word Document for .NET
document pages in original or reverse order within entire C# Class Code to Print Certain Page(s) of powerful & profession imaging controls, PDF document, image
reorder pdf pages reader; rearrange pages in pdf reader
11 
Visual Basic 
Dim font As New Font("Arial", 12) 
Dim rect As New RectangleF(72, 72, 100, 50) 
Dim text As String = "Some long string to be rendered into a small 
rectangle. " 
text = text & text & text & text & text & text 
' Center align string. 
Dim sf As New StringFormat() 
sf.Alignment = StringAlignment.Center 
sf.LineAlignment = StringAlignment.Center 
pdf.DrawString(text, font, Brushes.Black, rect, sf) 
pdf.DrawRectangle(Pens.Gray, rect) 
To write code in C# 
C# 
Font font = new Font("Arial", 12); 
RectangleF rect = new RectangleF(72, 72, 100, 50); 
string text = "Some long string to be rendered into a small rectangle. "; 
text = text + text + text + text + text + text; 
// Center align string. 
StringFormat sf = new StringFormat(); 
sf.Alignment = StringAlignment.Center; 
sf.LineAlignment = StringAlignment.Center; 
pdf.DrawString(text, font, Brushes.Black, rect, sf); 
pdf.DrawRectangle(Pens.Gray, rect); 
Here is the resulting PDF document: 
12 
Measuring Text 
Using ComponentOne PDF for .NET Adding Text > Measuring Text 
xt 
In many cases, you will need to check whether the string will fit on the page before you render it. 
You can use the MeasureString method for that. MeasureString returns a SizeF structure that 
contains the width and height of the string (in points) when rendered with a given font. 
For example, the code below checks to see if a paragraph will fit on the current page and creates a 
page break if it has to. This will keep paragraphs together on a page: 
To write code in Visual Basic 
Visual Basic 
Private Function RenderParagraph(text As String, font As Font, rect As 
RectangleF, rectPage As RectangleF) As RectangleF 
' Calculate the necessary height. 
Dim sz As SizeF = _c1pdf.MeasureString(text, font, rect.Width) 
13 
rect.Height = sz.Height 
 ' If it won't fit this page, do a page break. 
If rect.Bottom > rectPage.Bottom Then 
_c1pdf.NewPage() 
rect.Y = rectPage.Top 
End If 
' Draw the string. 
_c1pdf.DrawString(text, font, Brushes.Black, rect) 
' Update rectangle for next time. 
Rect.Offset(0, rect.Height) 
Return rect 
End Function 
' Use the RenderParagraph method. 
Dim font As New Font("Arial", 10) 
Dim rectPage As RectangleF = _c1pdf.PageRectangle 
rectPage.Inflate(-72, -72) 
Dim rect As RectangleF = rectPage 
Dim s As String 
For Each s In  myStringList 
rect = RenderParagraph(s, font, rect, rectPage) 
Next s 
To write code in C# 
C# 
private RectangleF RenderParagraph(string text, Font font, RectangleF 
rect, RectangleF rectPage) 
// Calculate the necessary height. 
SizeF sz = _c1pdf.MeasureString(text, font, rect.Width); 
rect.Height = sz.Height; 
// If it won't fit this page, do a page break. 
If (rect.Bottom > rectPage.Bottom) 
_c1pdf.NewPage(); 
rect.Y = rectPage.Top; 
// Draw the string. 
14 
_c1pdf.DrawString(text, font, Brushes.Black, rect); 
// Update rectangle for next time. 
Rect.Offset(0, rect.Height); 
return rect; 
// Use the RenderParagraph method. 
Font font = new Font("Arial", 10); 
RectangleF rectPage = _c1pdf.PageRectangle; 
rectPage.Inflate(-72, -72); 
RectangleF rect = rectPage; 
foreach (string s in myStringList) 
rect = RenderParagraph(s, font, rect, rectPage); 
Making Text Flow from Page to Page 
Using ComponentOne PDF for .NET Adding Text > Making Text Flow from Page to Page 
age 
The DrawString method returns an integer. This is the index of the first character that was not 
printed because it did not fit the output rectangle. You can use this value make text flow from page 
to page or from one frame to another within a page. For example: 
To write code in Visual Basic 
Visual Basic 
' Render a string spanning multiple pages. 
While True 
' Render as much as will fit into the rectangle. 
Dim nextChar As Integer 
nextChar = _c1pdf.DrawString(text, font, Brushes.Black, rectPage) 
' Break when done. 
If nextChar >= text.Length Then 
Exit While 
End If  
Get rid of the part that was rendered. 
Text = text.Substring(nextChar) 
' Move on to the next page. 
15 
_c1pdf.NewPage() 
End While 
To write code in C# 
C# 
// Render a string spanning multiple pages. 
While (true) 
// Render as much as will fit into the rectangle. 
Int nextChar = _c1pdf.DrawString(text, font, Brushes.Black, 
rectPage); 
// Break when done. 
If (nextChar >= text.Length) 
break; 
// Get rid of the part that was rendered. 
Text = text.Substring(nextChar); 
// Move on to the next page. 
_c1pdf.NewPage(); 
By combining the MeasureString and DrawString methods, you can develop rendering routines that 
provide extensive control over how paragraphs are rendered, including keeping paragraphs 
together on a page, keeping with the next paragraph, and controlling widows and orphans (single 
lines that render on the current or next page). 
Drawing RTF Text 
Using ComponentOne PDF for .NET Adding Text > Drawing RTF Text 
xt 
DrawString provides all the functionality you need for rendering paragraphs using a single font and 
color. 
If you want to render paragraphs with rich format, mixing fonts and colors, you should use the 
DrawStringRtf method instead. DrawStringRtf is similar to DrawString, except the string is 
interpreted as RTF. 
For example, the code below renders a line of text with some bold and italic characters in it: 
16 
To write code in Visual Basic 
Visual Basic 
Dim font As New Font("Arial", 12) 
Dim rect As RectangleF = pdf.PageRectangle 
rect.Inflate(- 72, - 72) 
Dim s As String 
s = "To {\b boldly} go where {\i no one} has gone before!" 
pdf.DrawStringRtf(s, font, Brushes.Black, rect) 
To write code in C# 
C# 
Font font = new Font("Arial", 12); 
RectangleF rect = pdf.PageRectangle; 
rect.Inflate(-72, -72); 
pdf.DrawStringRtf(@"To {\b boldly} go where {\i no one} has gone 
ne 
before!", font, Brushes.Black, rect); 
Notice that the string does not contain a full RTF document. It has no \rtf1 header, font or color 
tables. The DrawStringRtf method recognizes that and builds the necessary RTF header 
automatically, based on the Font and Brush parameters provided. 
If the string contained a complete RTF header, that would be used in lieu of the font and brush 
parameters specified in the call DrawStringRtf. This would be the case if the string were copied from 
a RichTextBox control or loaded from an RTF file. 
Adding Images 
Using ComponentOne PDF for .NET > Adding Images 
Adding images to PDF for .NET documents is also easy, all the work is done by the DrawImage 
method. 
DrawImage draws a given image at a specified location and has parameters that provide control 
over the image alignment and scaling. In the following example, this image is: 
Stretched to fill the given rectangle 
Center-aligned within the rectangle, scaled to keep the aspect ratio 
17 
Aligned to the top-left corner of the rectangle, with the original size 
This code is used to draw the same image three times: 
To write code in Visual Basic 
Visual Basic 
Dim rect As RectangleF = pdf.PageRectangle 
rect.Inflate(- 72, - 72) 
2) 
' Stretch image to fill the rectangle. 
pdf.DrawImage(pictureBox1.Image, rect) 
' Center image within the rectangle, scale keeping aspect ratio. 
pdf.DrawImage(pictureBox1.Image, rect, ContentAlignment.MiddleCenter, 
C1.C1Pdf.ImageSizeModeEnum.Scale) 
' Render the image to the top left corner of the rectangle. 
pdf.DrawImage(pictureBox1.Image, rect, ContentAlignment.TopLeft, 
C1.C1Pdf.ImageSizeModeEnum.Clip) 
To write code in C# 
C# 
RectangleF rect = pdf.PageRectangle; 
rect.Inflate(-72, -72); 
// Stretch image to fill the rectangle. 
pdf.DrawImage(pictureBox1.Image, rect); 
// Center image within the rectangle, scale keeping aspect ratio. 
pdf.DrawImage(pictureBox1.Image, rect, ContentAlignment.MiddleCenter, 
C1.C1Pdf.ImageSizeModeEnum.Scale); 
// Render the image to the top left corner of the rectangle. 
pdf.DrawImage(pictureBox1.Image, rect, ContentAlignment.TopLeft, 
1.C1Pdf.ImageSizeModeEnum.Clip); 
The PDF document will look similar to this: 
18 
Notice that you can render any regular .NET Image object, including Metafiles. Metafiles are not 
converted into bitmaps; they are played into the document and thus retain the best possible 
resolution. If you want to add charts or technical drawings to your PDF document, Metafiles are 
better than bitmap images. PDF for .NET also supports EMF+ metafiles. 
Bitmap images are managed automatically by PDF for .NET. If you render the same image several 
times (in a page header for example), only one copy of the image is saved into the PDF file. You can 
control the quality of the images using the C1PdfDocumentBase.ImageQuality property, which 
allows you to trade-off image quality versus file size. 
Adding Graphics 
Using ComponentOne PDF for .NET > Adding Graphics 
The C1PdfDocument class exposes several methods that allow you to add graphical elements to 
your documents, including lines, rectangles, ellipses, pies, arcs, rounded rectangles, polygons, Bezier 
curves, and so on. 
The methods are a subset of those found in the .NET Graphics class, and use the same Brush and 
Pen classes to control the color and style of the lines and filled areas. 
Documents you may be interested
Documents you may be interested