Wednesday, 06 April 2011 01:56
PDF SimpleTable in C#, VB.NET
using System;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Tables;
namespace SimpleTable
{
class Program
{
static void Main(string[] args)
{
//Create a pdf document.
PdfDocument doc = new PdfDocument();
//margin
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
PdfMargins margin = new PdfMargins();
margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Bottom = margin.Top;
margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Right = margin.Left;
// Create one page
PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, margin);
float y = 10;
//title
PdfBrush brush1 = PdfBrushes.Black;
PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 16f, FontStyle.Bold));
PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Center);
page.Canvas.DrawString("Country List", font1, brush1, page.Canvas.ClientSize.Width / 2, y, format1);
y = y + font1.MeasureString("Country List", format1).Height;
y = y + 5;
String[] data
= {
"Name;Capital;Continent;Area;Population",
"Argentina;Buenos Aires;South America;2777815;32300003",
"Bolivia;La Paz;South America;1098575;7300000",
"Brazil;Brasilia;South America;8511196;150400000",
"Canada;Ottawa;North America;9976147;26500000",
"Chile;Santiago;South America;756943;13200000",
"Colombia;Bagota;South America;1138907;33000000",
"Cuba;Havana;North America;114524;10600000",
"Ecuador;Quito;South America;455502;10600000",
"El Salvador;San Salvador;North America;20865;5300000",
"Guyana;Georgetown;South America;214969;800000",
"Jamaica;Kingston;North America;11424;2500000",
"Mexico;Mexico City;North America;1967180;88600000",
"Nicaragua;Managua;North America;139000;3900000",
"Paraguay;Asuncion;South America;406576;4660000",
"Peru;Lima;South America;1285215;21600000",
"United States of America;Washington;North America;9363130;249200000",
"Uruguay;Montevideo;South America;176140;3002000",
"Venezuela;Caracas;South America;912047;19700000"
};
String[][] dataSource
= new String[data.Length][];
for (int i = 0; i < data.Length; i++)
{
dataSource[i] = data[i].Split(';');
}
PdfTable table = new PdfTable();
table.Style.CellPadding = 2;
table.Style.HeaderSource = PdfHeaderSource.Rows;
table.Style.HeaderRowCount = 1;
table.Style.ShowHeader = true;
table.DataSource = dataSource;
PdfLayoutResult result = table.Draw(page, new PointF(0, y));
y = y + result.Bounds.Height + 5;
PdfBrush brush2 = PdfBrushes.Gray;
PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 9f));
page.Canvas.DrawString(String.Format("* {0} countries in the list.", data.Length - 1),
font2, brush2, 5, y);
//Save pdf file.
doc.SaveToFile("SimpleTable.pdf");
doc.Close();
//Launching the Pdf file.
System.Diagnostics.Process.Start("SimpleTable.pdf");
}
}
}
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports Spire.Pdf.Tables
Namespace SimpleTable
Friend Class Program
Shared Sub Main(ByVal args() As String)
'Create a pdf document.
Dim doc As New PdfDocument()
'margin
Dim unitCvtr As New PdfUnitConvertor()
Dim margin As New PdfMargins()
margin.Top = unitCvtr.ConvertUnits(2.54F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point)
margin.Bottom = margin.Top
margin.Left = unitCvtr.ConvertUnits(3.17F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point)
margin.Right = margin.Left
' Create one page
Dim page As PdfPageBase = doc.Pages.Add(PdfPageSize.A4, margin)
Dim y As Single = 10
'title
Dim brush1 As PdfBrush = PdfBrushes.Black
Dim font1 As New PdfTrueTypeFont(New Font("Arial", 16.0F, FontStyle.Bold))
Dim format1 As New PdfStringFormat(PdfTextAlignment.Center)
page.Canvas.DrawString("Country List", font1, brush1, page.Canvas.ClientSize.Width \ 2, y, format1)
y = y + font1.MeasureString("Country List", format1).Height
y = y + 5
Dim data() As String _
= {"Name;Capital;Continent;Area;Population", _
"Argentina;Buenos Aires;South America;2777815;32300003", _
"Bolivia;La Paz;South America;1098575;7300000", _
"Brazil;Brasilia;South America;8511196;150400000", _
"Canada;Ottawa;North America;9976147;26500000", _
"Chile;Santiago;South America;756943;13200000", _
"Colombia;Bagota;South America;1138907;33000000", _
"Cuba;Havana;North America;114524;10600000", _
"Ecuador;Quito;South America;455502;10600000", _
"El Salvador;San Salvador;North America;20865;5300000", _
"Guyana;Georgetown;South America;214969;800000", _
"Jamaica;Kingston;North America;11424;2500000", _
"Mexico;Mexico City;North America;1967180;88600000", _
"Nicaragua;Managua;North America;139000;3900000", _
"Paraguay;Asuncion;South America;406576;4660000", _
"Peru;Lima;South America;1285215;21600000", _
"United States of America;Washington;North America;9363130;249200000", _
"Uruguay;Montevideo;South America;176140;3002000", _
"Venezuela;Caracas;South America;912047;19700000"}
Dim dataSource(data.Length - 1)() As String
For i As Integer = 0 To data.Length - 1
dataSource(i) = data(i).Split(";"c)
Next i
Dim table As New PdfTable()
table.Style.CellPadding = 2
table.Style.HeaderSource = PdfHeaderSource.Rows
table.Style.HeaderRowCount = 1
table.Style.ShowHeader = True
table.DataSource = dataSource
Dim result As PdfLayoutResult = table.Draw(page, New PointF(0, y))
y = y + result.Bounds.Height + 5
Dim brush2 As PdfBrush = PdfBrushes.Gray
Dim font2 As New PdfTrueTypeFont(New Font("Arial", 9.0F))
page.Canvas.DrawString(String.Format("* {0} countries in the list.", data.Length - 1), _
font2, brush2, 5, y)
'Save pdf file.
doc.SaveToFile("SimpleTable.pdf")
doc.Close()
'Launching the Pdf file.
Process.Start("SimpleTable.pdf")
End Sub
End Class
End Namespace
Wednesday, 06 April 2011 01:50
PDF Transition in C#, VB.NET
The sample demonstrates how to work with pages transition, document section setting and set full screen view in PDF document.

using System;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace Transition
{
class Program
{
static void Main(string[] args)
{
//Create a pdf document.
PdfDocument doc = new PdfDocument();
doc.ViewerPreferences.PageMode = PdfPageMode.FullScreen;
//margin
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
PdfMargins margin = new PdfMargins();
margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Bottom = margin.Top;
margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Right = margin.Left;
//create section
PdfSection section = doc.Sections.Add();
section.PageSettings.Size = PdfPageSize.A4;
section.PageSettings.Margins = margin;
section.PageSettings.Transition = new PdfPageTransition();
section.PageSettings.Transition.Duration = 2;
section.PageSettings.Transition.Style = PdfTransitionStyle.Fly;
section.PageSettings.Transition.PageDuration = 1;
PdfNewPage page = section.Pages.Add();
page.BackgroundColor = Color.Red;
DrawPage(page);
page = section.Pages.Add();
page.BackgroundColor = Color.Green;
DrawPage(page);
page = section.Pages.Add();
page.BackgroundColor = Color.Blue;
DrawPage(page);
section = doc.Sections.Add();
section.PageSettings.Size = PdfPageSize.A4;
section.PageSettings.Margins = margin;
section.PageSettings.Transition = new PdfPageTransition();
section.PageSettings.Transition.Duration = 2;
section.PageSettings.Transition.Style = PdfTransitionStyle.Box;
section.PageSettings.Transition.PageDuration = 1;
page = section.Pages.Add();
page.BackgroundColor = Color.Orange;
DrawPage(page);
page = section.Pages.Add();
page.BackgroundColor = Color.Brown;
DrawPage(page);
page = section.Pages.Add();
page.BackgroundColor = Color.Navy;
DrawPage(page);
section = doc.Sections.Add();
section.PageSettings.Size = PdfPageSize.A4;
section.PageSettings.Margins = margin;
section.PageSettings.Transition = new PdfPageTransition();
section.PageSettings.Transition.Duration = 2;
section.PageSettings.Transition.Style = PdfTransitionStyle.Split;
section.PageSettings.Transition.Dimension = PdfTransitionDimension.Vertical;
section.PageSettings.Transition.Motion = PdfTransitionMotion.Inward;
section.PageSettings.Transition.PageDuration = 1;
page = section.Pages.Add();
page.BackgroundColor = Color.Orange;
DrawPage(page);
page = section.Pages.Add();
page.BackgroundColor = Color.Brown;
DrawPage(page);
page = section.Pages.Add();
page.BackgroundColor = Color.Navy;
DrawPage(page);
//Save pdf file.
doc.SaveToFile("Transition.pdf");
doc.Close();
//Launching the Pdf file.
System.Diagnostics.Process.Start("Transition.pdf");
}
private static void DrawPage(PdfPageBase page)
{
float pageWidth = page.Canvas.ClientSize.Width;
float y = 0;
//title
y = y + 5;
PdfBrush brush2 = new PdfSolidBrush(Color.Black);
PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 16f, FontStyle.Bold));
PdfStringFormat format2 = new PdfStringFormat(PdfTextAlignment.Center);
format2.CharacterSpacing = 1f;
String text = "Summary of Science";
page.Canvas.DrawString(text, font2, brush2, pageWidth / 2, y, format2);
SizeF size = font2.MeasureString(text, format2);
y = y + size.Height + 6;
//icon
PdfImage image = PdfImage.FromFile(@"Wikipedia_Science.png");
page.Canvas.DrawImage(image, new PointF(pageWidth - image.PhysicalDimension.Width, y));
float imageLeftSpace = pageWidth - image.PhysicalDimension.Width - 2;
float imageBottom = image.PhysicalDimension.Height + y;
//refenrence content
PdfTrueTypeFont font3 = new PdfTrueTypeFont(new Font("Arial", 9f));
PdfStringFormat format3 = new PdfStringFormat();
format3.ParagraphIndent = font3.Size * 2;
format3.MeasureTrailingSpaces = true;
format3.LineSpacing = font3.Size * 1.5f;
String text1 = "(All text and picture from ";
String text2 = "Wikipedia";
String text3 = ", the free encyclopedia)";
page.Canvas.DrawString(text1, font3, brush2, 0, y, format3);
size = font3.MeasureString(text1, format3);
float x1 = size.Width;
format3.ParagraphIndent = 0;
PdfTrueTypeFont font4 = new PdfTrueTypeFont(new Font("Arial", 9f, FontStyle.Underline));
PdfBrush brush3 = PdfBrushes.Blue;
page.Canvas.DrawString(text2, font4, brush3, x1, y, format3);
size = font4.MeasureString(text2, format3);
x1 = x1 + size.Width;
page.Canvas.DrawString(text3, font3, brush2, x1, y, format3);
y = y + size.Height;
//content
PdfStringFormat format4 = new PdfStringFormat();
text = System.IO.File.ReadAllText(@"Summary_of_Science.txt");
PdfTrueTypeFont font5 = new PdfTrueTypeFont(new Font("Arial", 10f));
format4.LineSpacing = font5.Size * 1.5f;
PdfStringLayouter textLayouter = new PdfStringLayouter();
float imageLeftBlockHeight = imageBottom - y;
PdfStringLayoutResult result
= textLayouter.Layout(text, font5, format4, new SizeF(imageLeftSpace, imageLeftBlockHeight));
if (result.ActualSize.Height < imageBottom - y)
{
imageLeftBlockHeight = imageLeftBlockHeight + result.LineHeight;
result = textLayouter.Layout(text, font5, format4, new SizeF(imageLeftSpace, imageLeftBlockHeight));
}
foreach (LineInfo line in result.Lines)
{
page.Canvas.DrawString(line.Text, font5, brush2, 0, y, format4);
y = y + result.LineHeight;
}
PdfTextWidget textWidget = new PdfTextWidget(result.Remainder, font5, brush2);
PdfTextLayout textLayout = new PdfTextLayout();
textLayout.Break = PdfLayoutBreakType.FitPage;
textLayout.Layout = PdfLayoutType.Paginate;
RectangleF bounds = new RectangleF(new PointF(0, y), page.Canvas.ClientSize);
textWidget.StringFormat = format4;
textWidget.Draw(page, bounds, textLayout);
}
}
}
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Namespace Transition
Friend Class Program
Shared Sub Main(ByVal args() As String)
'Create a pdf document.
Dim doc As New PdfDocument()
doc.ViewerPreferences.PageMode = PdfPageMode.FullScreen
'margin
Dim unitCvtr As New PdfUnitConvertor()
Dim margin As New PdfMargins()
margin.Top = unitCvtr.ConvertUnits(2.54F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point)
margin.Bottom = margin.Top
margin.Left = unitCvtr.ConvertUnits(3.17F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point)
margin.Right = margin.Left
'create section
Dim section As PdfSection = doc.Sections.Add()
section.PageSettings.Size = PdfPageSize.A4
section.PageSettings.Margins = margin
section.PageSettings.Transition = New PdfPageTransition()
section.PageSettings.Transition.Duration = 2
section.PageSettings.Transition.Style = PdfTransitionStyle.Fly
section.PageSettings.Transition.PageDuration = 1
Dim page As PdfNewPage = section.Pages.Add()
page.BackgroundColor = Color.Red
DrawPage(page)
page = section.Pages.Add()
page.BackgroundColor = Color.Green
DrawPage(page)
page = section.Pages.Add()
page.BackgroundColor = Color.Blue
DrawPage(page)
section = doc.Sections.Add()
section.PageSettings.Size = PdfPageSize.A4
section.PageSettings.Margins = margin
section.PageSettings.Transition = New PdfPageTransition()
section.PageSettings.Transition.Duration = 2
section.PageSettings.Transition.Style = PdfTransitionStyle.Box
section.PageSettings.Transition.PageDuration = 1
page = section.Pages.Add()
page.BackgroundColor = Color.Orange
DrawPage(page)
page = section.Pages.Add()
page.BackgroundColor = Color.Brown
DrawPage(page)
page = section.Pages.Add()
page.BackgroundColor = Color.Navy
DrawPage(page)
section = doc.Sections.Add()
section.PageSettings.Size = PdfPageSize.A4
section.PageSettings.Margins = margin
section.PageSettings.Transition = New PdfPageTransition()
section.PageSettings.Transition.Duration = 2
section.PageSettings.Transition.Style = PdfTransitionStyle.Split
section.PageSettings.Transition.Dimension = PdfTransitionDimension.Vertical
section.PageSettings.Transition.Motion = PdfTransitionMotion.Inward
section.PageSettings.Transition.PageDuration = 1
page = section.Pages.Add()
page.BackgroundColor = Color.Orange
DrawPage(page)
page = section.Pages.Add()
page.BackgroundColor = Color.Brown
DrawPage(page)
page = section.Pages.Add()
page.BackgroundColor = Color.Navy
DrawPage(page)
'Save pdf file.
doc.SaveToFile("Transition.pdf")
doc.Close()
'Launching the Pdf file.
Process.Start("Transition.pdf")
End Sub
Private Shared Sub DrawPage(ByVal page As PdfPageBase)
Dim pageWidth As Single = page.Canvas.ClientSize.Width
Dim y As Single = 0
'title
y = y + 5
Dim brush2 As PdfBrush = New PdfSolidBrush(Color.Black)
Dim font2 As New PdfTrueTypeFont(New Font("Arial", 16.0F, FontStyle.Bold))
Dim format2 As New PdfStringFormat(PdfTextAlignment.Center)
format2.CharacterSpacing = 1.0F
Dim text As String = "Summary of Science"
page.Canvas.DrawString(text, font2, brush2, pageWidth / 2, y, format2)
Dim size As SizeF = font2.MeasureString(text, format2)
y = y + size.Height + 6
'icon
Dim image As PdfImage = PdfImage.FromFile("Wikipedia_Science.png")
page.Canvas.DrawImage(image, New PointF(pageWidth - image.PhysicalDimension.Width, y))
Dim imageLeftSpace As Single = pageWidth - image.PhysicalDimension.Width - 2
Dim imageBottom As Single = image.PhysicalDimension.Height + y
'refenrence content
Dim font3 As New PdfTrueTypeFont(New Font("Arial", 9.0F))
Dim format3 As New PdfStringFormat()
format3.ParagraphIndent = font3.Size * 2
format3.MeasureTrailingSpaces = True
format3.LineSpacing = font3.Size * 1.5F
Dim text1 As String = "(All text and picture from "
Dim text2 As String = "Wikipedia"
Dim text3 As String = ", the free encyclopedia)"
page.Canvas.DrawString(text1, font3, brush2, 0, y, format3)
size = font3.MeasureString(text1, format3)
Dim x1 As Single = size.Width
format3.ParagraphIndent = 0
Dim font4 As New PdfTrueTypeFont(New Font("Arial", 9.0F, FontStyle.Underline))
Dim brush3 As PdfBrush = PdfBrushes.Blue
page.Canvas.DrawString(text2, font4, brush3, x1, y, format3)
size = font4.MeasureString(text2, format3)
x1 = x1 + size.Width
page.Canvas.DrawString(text3, font3, brush2, x1, y, format3)
y = y + size.Height
'content
Dim format4 As New PdfStringFormat()
text = System.IO.File.ReadAllText("Summary_of_Science.txt")
Dim font5 As New PdfTrueTypeFont(New Font("Arial", 10.0F))
format4.LineSpacing = font5.Size * 1.5F
Dim textLayouter As New PdfStringLayouter()
Dim imageLeftBlockHeight As Single = imageBottom - y
Dim result As PdfStringLayoutResult _
= textLayouter.Layout(text, font5, format4, New SizeF(imageLeftSpace, imageLeftBlockHeight))
If result.ActualSize.Height < imageBottom - y Then
imageLeftBlockHeight = imageLeftBlockHeight + result.LineHeight
result = textLayouter.Layout(text, font5, format4, New SizeF(imageLeftSpace, imageLeftBlockHeight))
End If
For Each line As LineInfo In result.Lines
page.Canvas.DrawString(line.Text, font5, brush2, 0, y, format4)
y = y + result.LineHeight
Next line
Dim textWidget As New PdfTextWidget(result.Remainder, font5, brush2)
Dim textLayout As New PdfTextLayout()
textLayout.Break = PdfLayoutBreakType.FitPage
textLayout.Layout = PdfLayoutType.Paginate
Dim bounds As New RectangleF(New PointF(0, y), page.Canvas.ClientSize)
textWidget.StringFormat = format4
textWidget.Draw(page, bounds, textLayout)
End Sub
End Class
End Namespace
Published in
Page
Tagged under
Wednesday, 06 April 2011 01:41
PDF Template in C#, VB.NET
The sample demonstrates how to set PDF documentaion template, page header&footer, page number and automatic page number count.

using System;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.AutomaticFields;
using Spire.Pdf.Graphics;
namespace Template
{
class Program
{
static void Main(string[] args)
{
//Create a pdf document.
PdfDocument doc = new PdfDocument();
doc.ViewerPreferences.PageLayout = PdfPageLayout.TwoColumnLeft;
//margin
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
PdfMargins margin = new PdfMargins();
margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Bottom = margin.Top;
margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Right = margin.Left;
SetDocumentTemplate(doc, PdfPageSize.A4, margin);
//create section
PdfSection section = doc.Sections.Add();
section.PageSettings.Size = PdfPageSize.A4;
section.PageSettings.Margins = new PdfMargins(0);
SetSectionTemplate(section, PdfPageSize.A4, margin, "Section 1");
// Create one page
PdfNewPage page = section.Pages.Add();
//Draw page
DrawPage(page);
page = section.Pages.Add();
DrawPage(page);
page = section.Pages.Add();
DrawPage(page);
page = section.Pages.Add();
DrawPage(page);
page = section.Pages.Add();
DrawPage(page);
//Save pdf file.
doc.SaveToFile("Template.pdf");
doc.Close();
//Launching the Pdf file.
System.Diagnostics.Process.Start("Template.pdf");
}
private static void DrawPage(PdfNewPage page)
{
float pageWidth = page.Canvas.ClientSize.Width;
float y = 0;
//title
y = y + 5;
PdfBrush brush2 = new PdfSolidBrush(Color.Black);
PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 16f, FontStyle.Bold));
PdfStringFormat format2 = new PdfStringFormat(PdfTextAlignment.Center);
format2.CharacterSpacing = 1f;
String text = "Summary of Science";
page.Canvas.DrawString(text, font2, brush2, pageWidth / 2, y, format2);
SizeF size = font2.MeasureString(text, format2);
y = y + size.Height + 6;
//icon
PdfImage image = PdfImage.FromFile(@"Wikipedia_Science.png");
page.Canvas.DrawImage(image, new PointF(pageWidth - image.PhysicalDimension.Width, y));
float imageLeftSpace = pageWidth - image.PhysicalDimension.Width - 2;
float imageBottom = image.PhysicalDimension.Height + y;
//refenrence content
PdfTrueTypeFont font3 = new PdfTrueTypeFont(new Font("Arial", 9f));
PdfStringFormat format3 = new PdfStringFormat();
format3.ParagraphIndent = font3.Size * 2;
format3.MeasureTrailingSpaces = true;
format3.LineSpacing = font3.Size * 1.5f;
String text1 = "(All text and picture from ";
String text2 = "Wikipedia";
String text3 = ", the free encyclopedia)";
page.Canvas.DrawString(text1, font3, brush2, 0, y, format3);
size = font3.MeasureString(text1, format3);
float x1 = size.Width;
format3.ParagraphIndent = 0;
PdfTrueTypeFont font4 = new PdfTrueTypeFont(new Font("Arial", 9f, FontStyle.Underline));
PdfBrush brush3 = PdfBrushes.Blue;
page.Canvas.DrawString(text2, font4, brush3, x1, y, format3);
size = font4.MeasureString(text2, format3);
x1 = x1 + size.Width;
page.Canvas.DrawString(text3, font3, brush2, x1, y, format3);
y = y + size.Height;
//content
PdfStringFormat format4 = new PdfStringFormat();
text = System.IO.File.ReadAllText(@"Summary_of_Science.txt");
PdfTrueTypeFont font5 = new PdfTrueTypeFont(new Font("Arial", 10f));
format4.LineSpacing = font5.Size * 1.5f;
PdfStringLayouter textLayouter = new PdfStringLayouter();
float imageLeftBlockHeight = imageBottom - y;
PdfStringLayoutResult result
= textLayouter.Layout(text, font5, format4, new SizeF(imageLeftSpace, imageLeftBlockHeight));
if (result.ActualSize.Height < imageBottom - y)
{
imageLeftBlockHeight = imageLeftBlockHeight + result.LineHeight;
result = textLayouter.Layout(text, font5, format4, new SizeF(imageLeftSpace, imageLeftBlockHeight));
}
foreach (LineInfo line in result.Lines)
{
page.Canvas.DrawString(line.Text, font5, brush2, 0, y, format4);
y = y + result.LineHeight;
}
PdfTextWidget textWidget = new PdfTextWidget(result.Remainder, font5, brush2);
PdfTextLayout textLayout = new PdfTextLayout();
textLayout.Break = PdfLayoutBreakType.FitPage;
textLayout.Layout = PdfLayoutType.Paginate;
RectangleF bounds = new RectangleF(new PointF(0, y), page.Canvas.ClientSize);
textWidget.StringFormat = format4;
textWidget.Draw(page, bounds, textLayout);
}
private static void SetSectionTemplate(PdfSection section, SizeF pageSize, PdfMargins margin, string label)
{
PdfPageTemplateElement leftSpace
= new PdfPageTemplateElement(margin.Left, pageSize.Height);
leftSpace.Foreground = true;
section.Template.OddLeft = leftSpace;
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 9f, FontStyle.Italic));
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle);
float y = (pageSize.Height - margin.Top - margin.Bottom) * (1 - 0.618f);
RectangleF bounds
= new RectangleF(10, y, margin.Left - 20, font.Height + 6);
leftSpace.Graphics.DrawRectangle(PdfBrushes.OrangeRed, bounds);
leftSpace.Graphics.DrawString(label, font, PdfBrushes.White, bounds, format);
PdfPageTemplateElement rightSpace
= new PdfPageTemplateElement(margin.Right, pageSize.Height);
rightSpace.Foreground = true;
section.Template.EvenRight = rightSpace;
bounds
= new RectangleF(10, y, margin.Right - 20, font.Height + 6);
rightSpace.Graphics.DrawRectangle(PdfBrushes.SaddleBrown, bounds);
rightSpace.Graphics.DrawString(label, font, PdfBrushes.White, bounds, format);
}
private static void SetDocumentTemplate(PdfDocument doc, SizeF pageSize, PdfMargins margin)
{
PdfPageTemplateElement leftSpace
= new PdfPageTemplateElement(margin.Left, pageSize.Height);
doc.Template.Left = leftSpace;
PdfPageTemplateElement topSpace
= new PdfPageTemplateElement(pageSize.Width, margin.Top);
topSpace.Foreground = true;
doc.Template.Top = topSpace;
//draw header label
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 9f, FontStyle.Italic));
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Right);
String label = "Demo of Spire.Pdf";
SizeF size = font.MeasureString(label, format);
float y = topSpace.Height - font.Height - 1;
PdfPen pen = new PdfPen(Color.Black, 0.75f);
topSpace.Graphics.SetTransparency(0.5f);
topSpace.Graphics.DrawLine(pen, margin.Left, y, pageSize.Width - margin.Right, y);
y = y - 1 - size.Height;
topSpace.Graphics.DrawString(label, font, PdfBrushes.Black, pageSize.Width - margin.Right, y, format);
PdfPageTemplateElement rightSpace
= new PdfPageTemplateElement(margin.Right, pageSize.Height);
doc.Template.Right = rightSpace;
PdfPageTemplateElement bottomSpace
= new PdfPageTemplateElement(pageSize.Width, margin.Bottom);
bottomSpace.Foreground = true;
doc.Template.Bottom = bottomSpace;
//draw footer label
y = font.Height + 1;
bottomSpace.Graphics.SetTransparency(0.5f);
bottomSpace.Graphics.DrawLine(pen, margin.Left, y, pageSize.Width - margin.Right, y);
y = y + 1;
PdfPageNumberField pageNumber = new PdfPageNumberField();
PdfPageCountField pageCount = new PdfPageCountField();
PdfCompositeField pageNumberLabel = new PdfCompositeField();
pageNumberLabel.AutomaticFields
= new PdfAutomaticField[] { pageNumber, pageCount };
pageNumberLabel.Brush = PdfBrushes.Black;
pageNumberLabel.Font = font;
pageNumberLabel.StringFormat = format;
pageNumberLabel.Text = "page {0} of {1}";
pageNumberLabel.Draw(bottomSpace.Graphics, pageSize.Width - margin.Right, y);
PdfImage headerImage
= PdfImage.FromFile(@"Header.png");
PointF pageLeftTop = new PointF(-margin.Left, -margin.Top);
PdfPageTemplateElement header
= new PdfPageTemplateElement(pageLeftTop, headerImage.PhysicalDimension);
header.Foreground = false;
header.Graphics.SetTransparency(0.5f);
header.Graphics.DrawImage(headerImage, 0, 0);
doc.Template.Stamps.Add(header);
PdfImage footerImage
= PdfImage.FromFile(@"Footer.png");
y = pageSize.Height - footerImage.PhysicalDimension.Height;
PointF footerLocation = new PointF(-margin.Left, y);
PdfPageTemplateElement footer
= new PdfPageTemplateElement(footerLocation, footerImage.PhysicalDimension);
footer.Foreground = false;
footer.Graphics.SetTransparency(0.5f);
footer.Graphics.DrawImage(footerImage, 0, 0);
doc.Template.Stamps.Add(footer);
}
}
}
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Text
Imports Spire.Pdf.AutomaticFields
Namespace Template
Friend Class Program
Shared Sub Main(ByVal args() As String)
'Create a pdf document.
Dim doc As New PdfDocument()
doc.ViewerPreferences.PageLayout = PdfPageLayout.TwoColumnLeft
'margin
Dim unitCvtr As New PdfUnitConvertor()
Dim margin As New PdfMargins()
margin.Top = unitCvtr.ConvertUnits(2.54F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point)
margin.Bottom = margin.Top
margin.Left = unitCvtr.ConvertUnits(3.17F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point)
margin.Right = margin.Left
SetDocumentTemplate(doc, PdfPageSize.A4, margin)
'create section
Dim section As PdfSection = doc.Sections.Add()
section.PageSettings.Size = PdfPageSize.A4
section.PageSettings.Margins = New PdfMargins(0)
SetSectionTemplate(section, PdfPageSize.A4, margin, "Section 1")
' Create one page
Dim page As PdfNewPage = section.Pages.Add()
'Draw page
DrawPage(page)
page = section.Pages.Add()
DrawPage(page)
page = section.Pages.Add()
DrawPage(page)
page = section.Pages.Add()
DrawPage(page)
page = section.Pages.Add()
DrawPage(page)
'Save pdf file.
doc.SaveToFile("Template.pdf")
doc.Close()
'Launching the Pdf file.
Process.Start("Template.pdf")
End Sub
Private Shared Sub DrawPage(ByVal page As PdfNewPage)
Dim pageWidth As Single = page.Canvas.ClientSize.Width
Dim y As Single = 0
'title
y = y + 5
Dim brush2 As PdfBrush = New PdfSolidBrush(Color.Black)
Dim font2 As New PdfTrueTypeFont(New Font("Arial", 16.0F, FontStyle.Bold))
Dim format2 As New PdfStringFormat(PdfTextAlignment.Center)
format2.CharacterSpacing = 1.0F
Dim text As String = "Summary of Science"
page.Canvas.DrawString(text, font2, brush2, pageWidth / 2, y, format2)
Dim size As SizeF = font2.MeasureString(text, format2)
y = y + size.Height + 6
'icon
Dim image As PdfImage = PdfImage.FromFile("Wikipedia_Science.png")
page.Canvas.DrawImage(image, New PointF(pageWidth - image.PhysicalDimension.Width, y))
Dim imageLeftSpace As Single = pageWidth - image.PhysicalDimension.Width - 2
Dim imageBottom As Single = image.PhysicalDimension.Height + y
'refenrence content
Dim font3 As New PdfTrueTypeFont(New Font("Arial", 9.0F))
Dim format3 As New PdfStringFormat()
format3.ParagraphIndent = font3.Size * 2
format3.MeasureTrailingSpaces = True
format3.LineSpacing = font3.Size * 1.5F
Dim text1 As String = "(All text and picture from "
Dim text2 As String = "Wikipedia"
Dim text3 As String = ", the free encyclopedia)"
page.Canvas.DrawString(text1, font3, brush2, 0, y, format3)
size = font3.MeasureString(text1, format3)
Dim x1 As Single = size.Width
format3.ParagraphIndent = 0
Dim font4 As New PdfTrueTypeFont(New Font("Arial", 9.0F, FontStyle.Underline))
Dim brush3 As PdfBrush = PdfBrushes.Blue
page.Canvas.DrawString(text2, font4, brush3, x1, y, format3)
size = font4.MeasureString(text2, format3)
x1 = x1 + size.Width
page.Canvas.DrawString(text3, font3, brush2, x1, y, format3)
y = y + size.Height
'content
Dim format4 As New PdfStringFormat()
text = System.IO.File.ReadAllText("Summary_of_Science.txt")
Dim font5 As New PdfTrueTypeFont(New Font("Arial", 10.0F))
format4.LineSpacing = font5.Size * 1.5F
Dim textLayouter As New PdfStringLayouter()
Dim imageLeftBlockHeight As Single = imageBottom - y
Dim result As PdfStringLayoutResult _
= textLayouter.Layout(text, font5, format4, New SizeF(imageLeftSpace, imageLeftBlockHeight))
If result.ActualSize.Height < imageBottom - y Then
imageLeftBlockHeight = imageLeftBlockHeight + result.LineHeight
result = textLayouter.Layout(text, font5, format4, New SizeF(imageLeftSpace, imageLeftBlockHeight))
End If
For Each line As LineInfo In result.Lines
page.Canvas.DrawString(line.Text, font5, brush2, 0, y, format4)
y = y + result.LineHeight
Next line
Dim textWidget As New PdfTextWidget(result.Remainder, font5, brush2)
Dim textLayout As New PdfTextLayout()
textLayout.Break = PdfLayoutBreakType.FitPage
textLayout.Layout = PdfLayoutType.Paginate
Dim bounds As New RectangleF(New PointF(0, y), page.Canvas.ClientSize)
textWidget.StringFormat = format4
textWidget.Draw(page, bounds, textLayout)
End Sub
Private Shared Sub SetSectionTemplate(ByVal section As PdfSection, ByVal pageSize As SizeF, _
ByVal margin As PdfMargins, ByVal label As String)
Dim leftSpace As New PdfPageTemplateElement(margin.Left, pageSize.Height)
leftSpace.Foreground = True
section.Template.OddLeft = leftSpace
Dim font As New PdfTrueTypeFont(New Font("Arial", 9.0F, FontStyle.Italic))
Dim format As New PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle)
Dim y As Single = (pageSize.Height - margin.Top - margin.Bottom) * (1 - 0.618F)
Dim bounds As New RectangleF(10, y, margin.Left - 20, font.Height + 6)
leftSpace.Graphics.DrawRectangle(PdfBrushes.OrangeRed, bounds)
leftSpace.Graphics.DrawString(label, font, PdfBrushes.White, bounds, format)
Dim rightSpace As New PdfPageTemplateElement(margin.Right, pageSize.Height)
rightSpace.Foreground = True
section.Template.EvenRight = rightSpace
bounds = New RectangleF(10, y, margin.Right - 20, font.Height + 6)
rightSpace.Graphics.DrawRectangle(PdfBrushes.SaddleBrown, bounds)
rightSpace.Graphics.DrawString(label, font, PdfBrushes.White, bounds, format)
End Sub
Private Shared Sub SetDocumentTemplate(ByVal doc As PdfDocument, ByVal pageSize As SizeF, _
ByVal margin As PdfMargins)
Dim leftSpace As New PdfPageTemplateElement(margin.Left, pageSize.Height)
doc.Template.Left = leftSpace
Dim topSpace As New PdfPageTemplateElement(pageSize.Width, margin.Top)
topSpace.Foreground = True
doc.Template.Top = topSpace
'draw header label
Dim font As New PdfTrueTypeFont(New Font("Arial", 9.0F, FontStyle.Italic))
Dim format As New PdfStringFormat(PdfTextAlignment.Right)
Dim label As String = "Demo of Spire.Pdf"
Dim size As SizeF = font.MeasureString(label, format)
Dim y As Single = topSpace.Height - font.Height - 1
Dim pen As New PdfPen(Color.Black, 0.75F)
topSpace.Graphics.SetTransparency(0.5F)
topSpace.Graphics.DrawLine(pen, margin.Left, y, pageSize.Width - margin.Right, y)
y = y - 1 - size.Height
topSpace.Graphics.DrawString(label, font, PdfBrushes.Black, pageSize.Width - margin.Right, y, format)
Dim rightSpace As New PdfPageTemplateElement(margin.Right, pageSize.Height)
doc.Template.Right = rightSpace
Dim bottomSpace As New PdfPageTemplateElement(pageSize.Width, margin.Bottom)
bottomSpace.Foreground = True
doc.Template.Bottom = bottomSpace
'draw footer label
y = font.Height + 1
bottomSpace.Graphics.SetTransparency(0.5F)
bottomSpace.Graphics.DrawLine(pen, margin.Left, y, pageSize.Width - margin.Right, y)
y = y + 1
Dim pageNumber As New PdfPageNumberField()
Dim pageCount As New PdfPageCountField()
Dim pageNumberLabel As New PdfCompositeField()
pageNumberLabel.AutomaticFields = New PdfAutomaticField() {pageNumber, pageCount}
pageNumberLabel.Brush = PdfBrushes.Black
pageNumberLabel.Font = font
pageNumberLabel.StringFormat = format
pageNumberLabel.Text = "page {0} of {1}"
pageNumberLabel.Draw(bottomSpace.Graphics, pageSize.Width - margin.Right, y)
Dim headerImage As PdfImage = PdfImage.FromFile("Header.png")
Dim pageLeftTop As New PointF(-margin.Left, -margin.Top)
Dim header As New PdfPageTemplateElement(pageLeftTop, headerImage.PhysicalDimension)
header.Foreground = False
header.Graphics.SetTransparency(0.5F)
header.Graphics.DrawImage(headerImage, 0, 0)
doc.Template.Stamps.Add(header)
Dim footerImage As PdfImage = PdfImage.FromFile("Footer.png")
y = pageSize.Height - footerImage.PhysicalDimension.Height
Dim footerLocation As New PointF(-margin.Left, y)
Dim footer As New PdfPageTemplateElement(footerLocation, footerImage.PhysicalDimension)
footer.Foreground = False
footer.Graphics.SetTransparency(0.5F)
footer.Graphics.DrawImage(footerImage, 0, 0)
doc.Template.Stamps.Add(footer)
End Sub
End Class
End Namespace
Wednesday, 06 April 2011 01:38
PDF AutomaticField in C#, VB.NET
The sample demonstrates how to work with automatic fields in PDF document.

using System;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.AutomaticFields;
using Spire.Pdf.Graphics;
namespace AutomaticField
{
class Program
{
static void Main(string[] args)
{
//Create a pdf document.
PdfDocument doc = new PdfDocument();
doc.DocumentInformation.Author = "Spire.Pdf";
//margin
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
PdfMargins margin = new PdfMargins();
margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Bottom = margin.Top;
margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Right = margin.Left;
for (int i = 1; i < 4; i++)
{
//create section
PdfSection section = doc.Sections.Add();
section.PageSettings.Size = PdfPageSize.A4;
section.PageSettings.Margins = margin;
for (int j = 0; j < i; j++)
{
// Create one page
PdfPageBase page = section.Pages.Add();
DrawAutomaticField(page);
}
}
//Save pdf file.
doc.SaveToFile("AutomaticField.pdf");
doc.Close();
//Launching the Pdf file.
System.Diagnostics.Process.Start("AutomaticField.pdf");
}
private static void DrawAutomaticField(PdfPageBase page)
{
float y = 0;
//title
PdfBrush brush1 = PdfBrushes.CadetBlue;
PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 16f, FontStyle.Bold));
PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Center);
page.Canvas.DrawString("Automatic Field List", font1, brush1,
page.Canvas.ClientSize.Width / 2, y, format1);
y = y + font1.MeasureString("Automatic Field List", format1).Height;
y = y + 5;
String[] fieldList = new String[]
{
"DateTimeField",
"CreationDateField",
"DocumentAuthorField",
"SectionNumberField",
"SectionPageNumberField",
"SectionPageCountField",
"PageNumberField",
"PageCountField",
"DestinationPageNumberField",
"CompositeField"
};
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 9f));
PdfStringFormat fieldNameFormat = new PdfStringFormat();
fieldNameFormat.MeasureTrailingSpaces = true;
foreach (String fieldName in fieldList)
{
//draw field name
String text = String.Format("{0}: ", fieldName);
page.Canvas.DrawString(text, font, PdfBrushes.DodgerBlue, 0, y);
float x = font.MeasureString(text, fieldNameFormat).Width;
RectangleF bounds = new RectangleF(x, y, 200, font.Height);
DrawAutomaticField(fieldName, page, bounds);
y = y + font.Height + 3;
}
}
private static void DrawAutomaticField(string fieldName, PdfPageBase page, RectangleF bounds)
{
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 9f, FontStyle.Italic));
PdfBrush brush = PdfBrushes.OrangeRed;
PdfStringFormat format
= new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);
if ("DateTimeField" == fieldName)
{
PdfDateTimeField field = new PdfDateTimeField();
field.Font = font;
field.Brush = brush;
field.StringFormat = format;
field.Bounds = bounds;
field.DateFormatString = "yyyy-MM-dd HH:mm:ss";
field.Draw(page.Canvas);
}
if ("CreationDateField" == fieldName)
{
PdfCreationDateField field = new PdfCreationDateField();
field.Font = font;
field.Brush = brush;
field.StringFormat = format;
field.Bounds = bounds;
field.DateFormatString = "yyyy-MM-dd HH:mm:ss";
field.Draw(page.Canvas);
}
if ("DocumentAuthorField" == fieldName)
{
PdfDocumentAuthorField field = new PdfDocumentAuthorField();
field.Font = font;
field.Brush = brush;
field.StringFormat = format;
field.Bounds = bounds;
field.Draw(page.Canvas);
}
if ("SectionNumberField" == fieldName)
{
PdfSectionNumberField field = new PdfSectionNumberField();
field.Font = font;
field.Brush = brush;
field.StringFormat = format;
field.Bounds = bounds;
field.Draw(page.Canvas);
}
if ("SectionPageNumberField" == fieldName)
{
PdfSectionPageNumberField field = new PdfSectionPageNumberField();
field.Font = font;
field.Brush = brush;
field.StringFormat = format;
field.Bounds = bounds;
field.Draw(page.Canvas);
}
if ("SectionPageCountField" == fieldName)
{
PdfSectionPageCountField field = new PdfSectionPageCountField();
field.Font = font;
field.Brush = brush;
field.StringFormat = format;
field.Bounds = bounds;
field.Draw(page.Canvas);
}
if ("PageNumberField" == fieldName)
{
PdfPageNumberField field = new PdfPageNumberField();
field.Font = font;
field.Brush = brush;
field.StringFormat = format;
field.Bounds = bounds;
field.Draw(page.Canvas);
}
if ("PageCountField" == fieldName)
{
PdfPageCountField field = new PdfPageCountField();
field.Font = font;
field.Brush = brush;
field.StringFormat = format;
field.Bounds = bounds;
field.Draw(page.Canvas);
}
if ("DestinationPageNumberField" == fieldName)
{
PdfDestinationPageNumberField field = new PdfDestinationPageNumberField();
field.Font = font;
field.Brush = brush;
field.StringFormat = format;
field.Bounds = bounds;
field.Page = page as PdfNewPage;
field.Draw(page.Canvas);
}
if ("CompositeField" == fieldName)
{
PdfSectionPageNumberField field1 = new PdfSectionPageNumberField();
field1.NumberStyle = PdfNumberStyle.LowerRoman;
PdfSectionPageCountField field2 = new PdfSectionPageCountField();
PdfCompositeField fields = new PdfCompositeField();
fields.Font = font;
fields.Brush = brush;
fields.StringFormat = format;
fields.Bounds = bounds;
fields.AutomaticFields = new PdfAutomaticField[] { field1, field2 };
fields.Text = "section page {0} of {1}";
fields.Draw(page.Canvas);
}
}
}
}
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.AutomaticFields
Imports Spire.Pdf.Graphics
Namespace AutomaticField
Friend Class Program
Shared Sub Main(ByVal args() As String)
'Create a pdf document.
Dim doc As New PdfDocument()
doc.DocumentInformation.Author = "Spire.Pdf"
'margin
Dim unitCvtr As New PdfUnitConvertor()
Dim margin As New PdfMargins()
margin.Top = unitCvtr.ConvertUnits(2.54F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point)
margin.Bottom = margin.Top
margin.Left = unitCvtr.ConvertUnits(3.17F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point)
margin.Right = margin.Left
For i As Integer = 1 To 3
'create section
Dim section As PdfSection = doc.Sections.Add()
section.PageSettings.Size = PdfPageSize.A4
section.PageSettings.Margins = margin
For j As Integer = 0 To i - 1
' Create one page
Dim page As PdfPageBase = section.Pages.Add()
DrawAutomaticField(page)
Next j
Next i
'Save pdf file.
doc.SaveToFile("AutomaticField.pdf")
doc.Close()
'Launching the Pdf file.
Process.Start("AutomaticField.pdf")
End Sub
Private Shared Sub DrawAutomaticField(ByVal page As PdfPageBase)
Dim y As Single = 0
'title
Dim brush1 As PdfBrush = PdfBrushes.CadetBlue
Dim font1 As New PdfTrueTypeFont(New Font("Arial", 16.0F, FontStyle.Bold))
Dim format1 As New PdfStringFormat(PdfTextAlignment.Center)
page.Canvas.DrawString("Automatic Field List", font1, brush1, _
page.Canvas.ClientSize.Width \ 2, y, format1)
y = y + font1.MeasureString("Automatic Field List", format1).Height
y = y + 5
Dim fieldList() As String _
= {"DateTimeField", "CreationDateField", "DocumentAuthorField", _
"SectionNumberField", "SectionPageNumberField", "SectionPageCountField", _
"PageNumberField", "PageCountField", "DestinationPageNumberField", "CompositeField"}
Dim font As New PdfTrueTypeFont(New Font("Arial", 9.0F))
Dim fieldNameFormat As New PdfStringFormat()
fieldNameFormat.MeasureTrailingSpaces = True
For Each fieldName As String In fieldList
'draw field name
Dim text As String = String.Format("{0}: ", fieldName)
page.Canvas.DrawString(text, font, PdfBrushes.DodgerBlue, 0, y)
Dim x As Single = font.MeasureString(text, fieldNameFormat).Width
Dim bounds As New RectangleF(x, y, 200, font.Height)
DrawAutomaticField(fieldName, page, bounds)
y = y + font.Height + 3
Next fieldName
End Sub
Private Shared Sub DrawAutomaticField(ByVal fieldName As String, ByVal page As PdfPageBase, _
ByVal bounds As RectangleF)
Dim font As New PdfTrueTypeFont(New Font("Arial", 9.0F, FontStyle.Italic))
Dim brush As PdfBrush = PdfBrushes.OrangeRed
Dim format As New PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle)
If "DateTimeField" = fieldName Then
Dim field As New PdfDateTimeField()
field.Font = font
field.Brush = brush
field.StringFormat = format
field.Bounds = bounds
field.DateFormatString = "yyyy-MM-dd HH:mm:ss"
field.Draw(page.Canvas)
End If
If "CreationDateField" = fieldName Then
Dim field As New PdfCreationDateField()
field.Font = font
field.Brush = brush
field.StringFormat = format
field.Bounds = bounds
field.DateFormatString = "yyyy-MM-dd HH:mm:ss"
field.Draw(page.Canvas)
End If
If "DocumentAuthorField" = fieldName Then
Dim field As New PdfDocumentAuthorField()
field.Font = font
field.Brush = brush
field.StringFormat = format
field.Bounds = bounds
field.Draw(page.Canvas)
End If
If "SectionNumberField" = fieldName Then
Dim field As New PdfSectionNumberField()
field.Font = font
field.Brush = brush
field.StringFormat = format
field.Bounds = bounds
field.Draw(page.Canvas)
End If
If "SectionPageNumberField" = fieldName Then
Dim field As New PdfSectionPageNumberField()
field.Font = font
field.Brush = brush
field.StringFormat = format
field.Bounds = bounds
field.Draw(page.Canvas)
End If
If "SectionPageCountField" = fieldName Then
Dim field As New PdfSectionPageCountField()
field.Font = font
field.Brush = brush
field.StringFormat = format
field.Bounds = bounds
field.Draw(page.Canvas)
End If
If "PageNumberField" = fieldName Then
Dim field As New PdfPageNumberField()
field.Font = font
field.Brush = brush
field.StringFormat = format
field.Bounds = bounds
field.Draw(page.Canvas)
End If
If "PageCountField" = fieldName Then
Dim field As New PdfPageCountField()
field.Font = font
field.Brush = brush
field.StringFormat = format
field.Bounds = bounds
field.Draw(page.Canvas)
End If
If "DestinationPageNumberField" = fieldName Then
Dim field As New PdfDestinationPageNumberField()
field.Font = font
field.Brush = brush
field.StringFormat = format
field.Bounds = bounds
field.Page = TryCast(page, PdfNewPage)
field.Draw(page.Canvas)
End If
If "CompositeField" = fieldName Then
Dim field1 As New PdfSectionPageNumberField()
field1.NumberStyle = PdfNumberStyle.LowerRoman
Dim field2 As New PdfSectionPageCountField()
Dim fields As New PdfCompositeField()
fields.Font = font
fields.Brush = brush
fields.StringFormat = format
fields.Bounds = bounds
fields.AutomaticFields = New PdfAutomaticField() {field1, field2}
fields.Text = "section page {0} of {1}"
fields.Draw(page.Canvas)
End If
End Sub
End Class
End Namespace
Tuesday, 05 April 2011 09:39
PDF Pagination in C#, VB.NET
The sample demonstrates how to paginate pages, draw page header&footer and set page label in PDF document.

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace Pagination
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//Create a pdf document.
PdfDocument doc = new PdfDocument();
//margin
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
PdfMargins margin = new PdfMargins();
margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Bottom = margin.Top;
margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Right = margin.Left;
DrawCover(doc.Sections.Add(), margin);
DrawContent(doc.Sections.Add(), margin);
DrawPageNumber(doc.Sections[1], margin, 1, doc.Sections[1].Pages.Count);
//Save pdf file.
doc.SaveToFile("Pagination.pdf");
doc.Close();
//Launching the Pdf file.
PDFDocumentViewer("Pagination.pdf");
}
private void DrawCover(PdfSection section, PdfMargins margin)
{
section.PageNumber = new PdfPageNumber();
section.PageNumber.NumberStyle = PdfNumberStyle.LowerRoman;
section.PageNumber.Prefix = "cover ";
section.PageSettings.Size = PdfPageSize.A4;
section.PageSettings.Margins.All = 0;
PdfPageBase page = section.Pages.Add();
DrawPageHeaderAndFooter(page, margin, true);
//refenrence content
PdfBrush brush1 = PdfBrushes.LightGray;
PdfBrush brush2 = PdfBrushes.Blue;
PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 8f));
PdfStringFormat format = new PdfStringFormat();
format.MeasureTrailingSpaces = true;
String text1 = "(All text and picture from ";
String text2 = "Wikipedia";
String text3 = ", the free encyclopedia)";
float x = 0, y = 10;
x = x + margin.Left;
y = y + margin.Top;
page.Canvas.DrawString(text1, font1, brush1, x, y, format);
x = x + font1.MeasureString(text1, format).Width;
page.Canvas.DrawString(text2, font1, brush2, x, y, format);
x = x + font1.MeasureString(text2, format).Width;
page.Canvas.DrawString(text3, font1, brush1, x, y, format);
//cover
PdfBrush brush3 = PdfBrushes.Black;
PdfBrush brush4 = new PdfSolidBrush(new PdfRGBColor(0xf9, 0xf9, 0xf9));
PdfImage image
= PdfImage.FromFile(@"..\..\..\..\..\..\Data\SciencePersonificationBoston.jpg");
String text = Pagination.Properties.Resources.ImageDescription;
float r = image.PhysicalDimension.Height / image.Height;
PdfPen pen = new PdfPen(brush1, r);
SizeF size = font1.MeasureString(text, image.PhysicalDimension.Width - 2);
PdfTemplate template
= new PdfTemplate(image.PhysicalDimension.Width + 4 * r + 4,
image.PhysicalDimension.Height + 4 * r + 7 + size.Height);
template.Graphics.DrawRectangle(pen, brush4, 0, 0, template.Width, template.Height);
x = y = r + 2;
template.Graphics.DrawRectangle(brush1, x, y,
image.PhysicalDimension.Width + 2 * r,
image.PhysicalDimension.Height + 2 * r);
x = y = x + r;
template.Graphics.DrawImage(image, x, y);
x = x - 1;
y = y + image.PhysicalDimension.Height + r + 2;
template.Graphics.DrawString(text, font1, brush3,
new RectangleF(new PointF(x, y), size));
float x1 = (page.Canvas.ClientSize.Width - template.Width) / 2;
float y1 = (page.Canvas.ClientSize.Height - margin.Top - margin.Bottom) * (1 - 0.618f) - template.Height / 2 + margin.Top;
template.Draw(page.Canvas, x1, y1);
//title
format.Alignment = PdfTextAlignment.Center;
PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 24f, FontStyle.Bold));
x = page.Canvas.ClientSize.Width / 2;
y = y1 + template.Height + 10;
page.Canvas.DrawString(Pagination.Properties.Resources.Title, font2, brush3, x, y, format);
}
private void DrawContent(PdfSection section, PdfMargins margin)
{
section.PageNumber = new PdfPageNumber();
section.PageNumber.NumberStyle = PdfNumberStyle.Numeric;
section.PageNumber.Prefix = "page ";
section.PageSettings.Size = PdfPageSize.A4;
section.PageSettings.Margins.All = 0;
PdfPageBase page = section.Pages.Add();
DrawPageHeaderAndFooter(page, margin, false);
float x = margin.Left;
float y = margin.Top + 8;
float width = page.Canvas.ClientSize.Width - margin.Left - margin.Right;
PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 16f), true);
PdfBrush brush1 = PdfBrushes.Black;
PdfPen pen1 = new PdfPen(brush1, 0.75f);
page.Canvas.DrawString(Pagination.Properties.Resources.Title, font1, brush1, x, y);
y = y + font1.MeasureString(Pagination.Properties.Resources.Title).Height + 6;
page.Canvas.DrawLine(pen1, x, y, page.Canvas.ClientSize.Width - margin.Right, y);
y = y + 1.75f;
String content = Pagination.Properties.Resources.Content;
String[] lines
= content.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 10f, FontStyle.Italic), true);
PdfStringFormat format1 = new PdfStringFormat();
format1.MeasureTrailingSpaces = true;
format1.LineSpacing = font2.Height * 1.5f;
format1.ParagraphIndent = font2.MeasureString("\t", format1).Width;
y = y + font2.Height * 0.5f;
SizeF size = font2.MeasureString(lines[0], width, format1);
page.Canvas.DrawString(lines[0], font2, brush1,
new RectangleF(new PointF(x, y), size), format1);
y = y + size.Height;
PdfTrueTypeFont font3 = new PdfTrueTypeFont(new Font("Arial", 10f), true);
PdfStringFormat format2 = new PdfStringFormat();
format2.LineSpacing = font3.Height * 1.4f;
format2.MeasureTrailingSpaces = true;
size = font3.MeasureString(lines[1], width, format2);
page.Canvas.DrawString(lines[1], font3, brush1,
new RectangleF(new PointF(x, y), size), format2);
y = y + size.Height;
y = y + font3.Height * 0.75f;
float indent = font3.MeasureString("\t\t", format2).Width;
float x1 = x + indent;
size = font3.MeasureString(lines[2], width - indent, format2);
page.Canvas.DrawString(lines[2], font3, brush1,
new RectangleF(new PointF(x1, y), size), format2);
y = y + size.Height + font3.Height * 0.75f;
StringBuilder buff = new StringBuilder();
for (int i = 3; i < lines.Length; i++)
{
buff.AppendLine(lines[i]);
}
content = buff.ToString();
PdfStringLayouter textLayouter = new PdfStringLayouter();
PdfStringLayoutResult result
= textLayouter.Layout(content, font3, format2, new SizeF(width, float.MaxValue));
foreach (LineInfo line in result.Lines)
{
if ((line.LineType & LineType.FirstParagraphLine) == LineType.FirstParagraphLine)
{
y = y + font3.Height * 0.75f;
}
if (y > (page.Canvas.ClientSize.Height - margin.Bottom - result.LineHeight))
{
page = section.Pages.Add();
DrawPageHeaderAndFooter(page, margin, false);
y = margin.Top;
}
page.Canvas.DrawString(line.Text, font3, brush1, x, y, format2);
y = y + result.LineHeight;
}
}
private void DrawPageHeaderAndFooter(PdfPageBase page, PdfMargins margin, bool isCover)
{
page.Canvas.SetTransparency(0.5f);
PdfImage headerImage
= PdfImage.FromFile(@"..\..\..\..\..\..\Data\Header.png");
PdfImage footerImage
= PdfImage.FromFile(@"..\..\..\..\..\..\Data\Footer.png");
page.Canvas.DrawImage(headerImage, new PointF(0, 0));
page.Canvas.DrawImage(footerImage, new PointF(0, page.Canvas.ClientSize.Height - footerImage.PhysicalDimension.Height));
if (isCover)
{
page.Canvas.SetTransparency(1);
return;
}
PdfBrush brush = PdfBrushes.Black;
PdfPen pen = new PdfPen(brush, 0.75f);
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 9f, FontStyle.Italic), true);
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Right);
format.MeasureTrailingSpaces = true;
float space = font.Height * 0.75f;
float x = margin.Left;
float width = page.Canvas.ClientSize.Width - margin.Left - margin.Right;
float y = margin.Top - space;
page.Canvas.DrawLine(pen, x, y, x + width, y);
y = y - 1 - font.Height;
page.Canvas.DrawString("Demo of Spire.Pdf", font, brush, x + width, y, format);
page.Canvas.SetTransparency(1);
}
private void DrawPageNumber(PdfSection section, PdfMargins margin, int startNumber, int pageCount)
{
foreach (PdfPageBase page in section.Pages)
{
page.Canvas.SetTransparency(0.5f);
PdfBrush brush = PdfBrushes.Black;
PdfPen pen = new PdfPen(brush, 0.75f);
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 9f, FontStyle.Italic), true);
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Right);
format.MeasureTrailingSpaces = true;
float space = font.Height * 0.75f;
float x = margin.Left;
float width = page.Canvas.ClientSize.Width - margin.Left - margin.Right;
float y = page.Canvas.ClientSize.Height - margin.Bottom + space;
page.Canvas.DrawLine(pen, x, y, x + width, y);
y = y + 1;
String numberLabel
= String.Format("{0} of {1}", startNumber++, pageCount);
page.Canvas.DrawString(numberLabel, font, brush, x + width, y, format);
page.Canvas.SetTransparency(1);
}
}
private void PDFDocumentViewer(string fileName)
{
try
{
System.Diagnostics.Process.Start(fileName);
}
catch { }
}
}
}
Imports System.Collections.Generic
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Namespace Pagination
Public Partial Class Form1
Inherits Form
Public Sub New()
InitializeComponent()
End Sub
Private Sub button1_Click(sender As Object, e As EventArgs)
'Create a pdf document.
Dim doc As New PdfDocument()
'margin
Dim unitCvtr As New PdfUnitConvertor()
Dim margin As New PdfMargins()
margin.Top = unitCvtr.ConvertUnits(2.54F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point)
margin.Bottom = margin.Top
margin.Left = unitCvtr.ConvertUnits(3.17F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point)
margin.Right = margin.Left
DrawCover(doc.Sections.Add(), margin)
DrawContent(doc.Sections.Add(), margin)
DrawPageNumber(doc.Sections(1), margin, 1, doc.Sections(1).Pages.Count)
'Save pdf file.
doc.SaveToFile("Pagination.pdf")
doc.Close()
'Launching the Pdf file.
PDFDocumentViewer("Pagination.pdf")
End Sub
Private Sub DrawCover(section As PdfSection, margin As PdfMargins)
section.PageNumber = New PdfPageNumber()
section.PageNumber.NumberStyle = PdfNumberStyle.LowerRoman
section.PageNumber.Prefix = "cover "
section.PageSettings.Size = PdfPageSize.A4
section.PageSettings.Margins.All = 0
Dim page As PdfPageBase = section.Pages.Add()
DrawPageHeaderAndFooter(page, margin, True)
'refenrence content
Dim brush1 As PdfBrush = PdfBrushes.LightGray
Dim brush2 As PdfBrush = PdfBrushes.Blue
Dim font1 As New PdfTrueTypeFont(New Font("Arial", 8F))
Dim format As New PdfStringFormat()
format.MeasureTrailingSpaces = True
Dim text1 As [String] = "(All text and picture from "
Dim text2 As [String] = "Wikipedia"
Dim text3 As [String] = ", the free encyclopedia)"
Dim x As Single = 0, y As Single = 10
x = x + margin.Left
y = y + margin.Top
page.Canvas.DrawString(text1, font1, brush1, x, y, format)
x = x + font1.MeasureString(text1, format).Width
page.Canvas.DrawString(text2, font1, brush2, x, y, format)
x = x + font1.MeasureString(text2, format).Width
page.Canvas.DrawString(text3, font1, brush1, x, y, format)
'cover
Dim brush3 As PdfBrush = PdfBrushes.Black
Dim brush4 As PdfBrush = New PdfSolidBrush(New PdfRGBColor(&Hf9, &Hf9, &Hf9))
Dim image As PdfImage = PdfImage.FromFile("..\..\..\..\..\..\Data\SciencePersonificationBoston.jpg")
Dim text As [String] = Pagination.Properties.Resources.ImageDescription
Dim r As Single = image.PhysicalDimension.Height / image.Height
Dim pen As New PdfPen(brush1, r)
Dim size As SizeF = font1.MeasureString(text, image.PhysicalDimension.Width - 2)
Dim template As New PdfTemplate(image.PhysicalDimension.Width + 4 * r + 4, image.PhysicalDimension.Height + 4 * r + 7 + size.Height)
template.Graphics.DrawRectangle(pen, brush4, 0, 0, template.Width, template.Height)
x = InlineAssignHelper(y, r + 2)
template.Graphics.DrawRectangle(brush1, x, y, image.PhysicalDimension.Width + 2 * r, image.PhysicalDimension.Height + 2 * r)
x = InlineAssignHelper(y, x + r)
template.Graphics.DrawImage(image, x, y)
x = x - 1
y = y + image.PhysicalDimension.Height + r + 2
template.Graphics.DrawString(text, font1, brush3, New RectangleF(New PointF(x, y), size))
Dim x1 As Single = (page.Canvas.ClientSize.Width - template.Width) / 2
Dim y1 As Single = (page.Canvas.ClientSize.Height - margin.Top - margin.Bottom) * (1 - 0.618F) - template.Height / 2 + margin.Top
template.Draw(page.Canvas, x1, y1)
'title
format.Alignment = PdfTextAlignment.Center
Dim font2 As New PdfTrueTypeFont(New Font("Arial", 24F, FontStyle.Bold))
x = page.Canvas.ClientSize.Width / 2
y = y1 + template.Height + 10
page.Canvas.DrawString(Pagination.Properties.Resources.Title, font2, brush3, x, y, format)
End Sub
Private Sub DrawContent(section As PdfSection, margin As PdfMargins)
section.PageNumber = New PdfPageNumber()
section.PageNumber.NumberStyle = PdfNumberStyle.Numeric
section.PageNumber.Prefix = "page "
section.PageSettings.Size = PdfPageSize.A4
section.PageSettings.Margins.All = 0
Dim page As PdfPageBase = section.Pages.Add()
DrawPageHeaderAndFooter(page, margin, False)
Dim x As Single = margin.Left
Dim y As Single = margin.Top + 8
Dim width As Single = page.Canvas.ClientSize.Width - margin.Left - margin.Right
Dim font1 As New PdfTrueTypeFont(New Font("Arial", 16F), True)
Dim brush1 As PdfBrush = PdfBrushes.Black
Dim pen1 As New PdfPen(brush1, 0.75F)
page.Canvas.DrawString(Pagination.Properties.Resources.Title, font1, brush1, x, y)
y = y + font1.MeasureString(Pagination.Properties.Resources.Title).Height + 6
page.Canvas.DrawLine(pen1, x, y, page.Canvas.ClientSize.Width - margin.Right, y)
y = y + 1.75F
Dim content As [String] = Pagination.Properties.Resources.Content
Dim lines As [String]() = content.Split(New Char() {ControlChars.Cr, ControlChars.Lf}, StringSplitOptions.RemoveEmptyEntries)
Dim font2 As New PdfTrueTypeFont(New Font("Arial", 10F, FontStyle.Italic), True)
Dim format1 As New PdfStringFormat()
format1.MeasureTrailingSpaces = True
format1.LineSpacing = font2.Height * 1.5F
format1.ParagraphIndent = font2.MeasureString(vbTab, format1).Width
y = y + font2.Height * 0.5F
Dim size As SizeF = font2.MeasureString(lines(0), width, format1)
page.Canvas.DrawString(lines(0), font2, brush1, New RectangleF(New PointF(x, y), size), format1)
y = y + size.Height
Dim font3 As New PdfTrueTypeFont(New Font("Arial", 10F), True)
Dim format2 As New PdfStringFormat()
format2.LineSpacing = font3.Height * 1.4F
format2.MeasureTrailingSpaces = True
size = font3.MeasureString(lines(1), width, format2)
page.Canvas.DrawString(lines(1), font3, brush1, New RectangleF(New PointF(x, y), size), format2)
y = y + size.Height
y = y + font3.Height * 0.75F
Dim indent As Single = font3.MeasureString(vbTab & vbTab, format2).Width
Dim x1 As Single = x + indent
size = font3.MeasureString(lines(2), width - indent, format2)
page.Canvas.DrawString(lines(2), font3, brush1, New RectangleF(New PointF(x1, y), size), format2)
y = y + size.Height + font3.Height * 0.75F
Dim buff As New StringBuilder()
For i As Integer = 3 To lines.Length - 1
buff.AppendLine(lines(i))
Next
content = buff.ToString()
Dim textLayouter As New PdfStringLayouter()
Dim result As PdfStringLayoutResult = textLayouter.Layout(content, font3, format2, New SizeF(width, Single.MaxValue))
For Each line As LineInfo In result.Lines
If (line.LineType And LineType.FirstParagraphLine) = LineType.FirstParagraphLine Then
y = y + font3.Height * 0.75F
End If
If y > (page.Canvas.ClientSize.Height - margin.Bottom - result.LineHeight) Then
page = section.Pages.Add()
DrawPageHeaderAndFooter(page, margin, False)
y = margin.Top
End If
page.Canvas.DrawString(line.Text, font3, brush1, x, y, format2)
y = y + result.LineHeight
Next
End Sub
Private Sub DrawPageHeaderAndFooter(page As PdfPageBase, margin As PdfMargins, isCover As Boolean)
page.Canvas.SetTransparency(0.5F)
Dim headerImage As PdfImage = PdfImage.FromFile("..\..\..\..\..\..\Data\Header.png")
Dim footerImage As PdfImage = PdfImage.FromFile("..\..\..\..\..\..\Data\Footer.png")
page.Canvas.DrawImage(headerImage, New PointF(0, 0))
page.Canvas.DrawImage(footerImage, New PointF(0, page.Canvas.ClientSize.Height - footerImage.PhysicalDimension.Height))
If isCover Then
page.Canvas.SetTransparency(1)
Return
End If
Dim brush As PdfBrush = PdfBrushes.Black
Dim pen As New PdfPen(brush, 0.75F)
Dim font As New PdfTrueTypeFont(New Font("Arial", 9F, FontStyle.Italic), True)
Dim format As New PdfStringFormat(PdfTextAlignment.Right)
format.MeasureTrailingSpaces = True
Dim space As Single = font.Height * 0.75F
Dim x As Single = margin.Left
Dim width As Single = page.Canvas.ClientSize.Width - margin.Left - margin.Right
Dim y As Single = margin.Top - space
page.Canvas.DrawLine(pen, x, y, x + width, y)
y = y - 1 - font.Height
page.Canvas.DrawString("Demo of Spire.Pdf", font, brush, x + width, y, format)
page.Canvas.SetTransparency(1)
End Sub
Private Sub DrawPageNumber(section As PdfSection, margin As PdfMargins, startNumber As Integer, pageCount As Integer)
For Each page As PdfPageBase In section.Pages
page.Canvas.SetTransparency(0.5F)
Dim brush As PdfBrush = PdfBrushes.Black
Dim pen As New PdfPen(brush, 0.75F)
Dim font As New PdfTrueTypeFont(New Font("Arial", 9F, FontStyle.Italic), True)
Dim format As New PdfStringFormat(PdfTextAlignment.Right)
format.MeasureTrailingSpaces = True
Dim space As Single = font.Height * 0.75F
Dim x As Single = margin.Left
Dim width As Single = page.Canvas.ClientSize.Width - margin.Left - margin.Right
Dim y As Single = page.Canvas.ClientSize.Height - margin.Bottom + space
page.Canvas.DrawLine(pen, x, y, x + width, y)
y = y + 1
Dim numberLabel As [String] = [String].Format("{0} of {1}", System.Math.Max(System.Threading.Interlocked.Increment(startNumber),startNumber - 1), pageCount)
page.Canvas.DrawString(numberLabel, font, brush, x + width, y, format)
page.Canvas.SetTransparency(1)
Next
End Sub
Private Sub PDFDocumentViewer(fileName As String)
Try
System.Diagnostics.Process.Start(fileName)
Catch
End Try
End Sub
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, value As T) As T
target = value
Return value
End Function
End Class
End Namespace
Published in
Page
Tagged under
Tuesday, 05 April 2011 09:32
PDF PageSetup in C#, VB.NET
using System;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.AutomaticFields;
using Spire.Pdf.Graphics;
namespace PageSetup
{
class Program
{
static void Main(string[] args)
{
//Create a pdf document.
PdfDocument doc = new PdfDocument();
//margin
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
PdfMargins margin = new PdfMargins();
margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Bottom = margin.Top;
margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Right = margin.Left;
// Create one page
PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, margin);
page.BackgroundColor = Color.Chocolate;
//Draw page
DrawPage(page);
page = doc.Pages.Add(PdfPageSize.A4, margin);
page.BackgroundColor = Color.Coral;
//Draw page
DrawPage(page);
page = doc.Pages.Add(PdfPageSize.A3, margin, PdfPageRotateAngle.RotateAngle180, PdfPageOrientation.Landscape);
page.BackgroundColor = Color.LightPink;
//Draw page
DrawPage(page);
//create section
PdfSection section = doc.Sections.Add();
section.PageSettings.Size = PdfPageSize.A4;
section.PageSettings.Margins = margin;
page = section.Pages.Add();
//Draw page
DrawPage(page);
//set background color
page = section.Pages.Add();
page.BackgroundColor = Color.LightSkyBlue;
DrawPage(page);
//Landscape
section = doc.Sections.Add();
section.PageSettings.Size = PdfPageSize.A4;
section.PageSettings.Margins = margin;
section.PageSettings.Orientation = PdfPageOrientation.Landscape;
page = section.Pages.Add();
DrawPage(page);
//Rotate 90
section = doc.Sections.Add();
section.PageSettings.Size = PdfPageSize.A4;
section.PageSettings.Margins = margin;
section.PageSettings.Rotate = PdfPageRotateAngle.RotateAngle90;
page = section.Pages.Add();
DrawPage(page);
//Rotate 180
section = doc.Sections.Add();
section.PageSettings.Size = PdfPageSize.A4;
section.PageSettings.Margins = margin;
section.PageSettings.Rotate = PdfPageRotateAngle.RotateAngle180;
page = section.Pages.Add();
DrawPage(page);
//Save pdf file.
doc.SaveToFile("PageSetup.pdf");
doc.Close();
//Launching the Pdf file.
System.Diagnostics.Process.Start("PageSetup.pdf");
}
private static void DrawPage(PdfPageBase page)
{
float pageWidth = page.Canvas.ClientSize.Width;
float y = 0;
//title
y = y + 5;
PdfBrush brush2 = new PdfSolidBrush(Color.Black);
PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 16f, FontStyle.Bold));
PdfStringFormat format2 = new PdfStringFormat(PdfTextAlignment.Center);
format2.CharacterSpacing = 1f;
String text = "Summary of Science";
page.Canvas.DrawString(text, font2, brush2, pageWidth / 2, y, format2);
SizeF size = font2.MeasureString(text, format2);
y = y + size.Height + 6;
//icon
PdfImage image = PdfImage.FromFile("Wikipedia_Science.png");
page.Canvas.DrawImage(image, new PointF(pageWidth - image.PhysicalDimension.Width, y));
float imageLeftSpace = pageWidth - image.PhysicalDimension.Width - 2;
float imageBottom = image.PhysicalDimension.Height + y;
//refenrence content
PdfTrueTypeFont font3 = new PdfTrueTypeFont(new Font("Arial", 9f));
PdfStringFormat format3 = new PdfStringFormat();
format3.ParagraphIndent = font3.Size * 2;
format3.MeasureTrailingSpaces = true;
format3.LineSpacing = font3.Size * 1.5f;
String text1 = "(All text and picture from ";
String text2 = "Wikipedia";
String text3 = ", the free encyclopedia)";
page.Canvas.DrawString(text1, font3, brush2, 0, y, format3);
size = font3.MeasureString(text1, format3);
float x1 = size.Width;
format3.ParagraphIndent = 0;
PdfTrueTypeFont font4 = new PdfTrueTypeFont(new Font("Arial", 9f, FontStyle.Underline));
PdfBrush brush3 = PdfBrushes.Blue;
page.Canvas.DrawString(text2, font4, brush3, x1, y, format3);
size = font4.MeasureString(text2, format3);
x1 = x1 + size.Width;
page.Canvas.DrawString(text3, font3, brush2, x1, y, format3);
y = y + size.Height;
//content
PdfStringFormat format4 = new PdfStringFormat();
text = System.IO.File.ReadAllText("Summary_of_Science.txt");
PdfTrueTypeFont font5 = new PdfTrueTypeFont(new Font("Arial", 10f));
format4.LineSpacing = font5.Size * 1.5f;
PdfStringLayouter textLayouter = new PdfStringLayouter();
float imageLeftBlockHeight = imageBottom - y;
PdfStringLayoutResult result
= textLayouter.Layout(text, font5, format4, new SizeF(imageLeftSpace, imageLeftBlockHeight));
if (result.ActualSize.Height < imageBottom - y)
{
imageLeftBlockHeight = imageLeftBlockHeight + result.LineHeight;
result = textLayouter.Layout(text, font5, format4, new SizeF(imageLeftSpace, imageLeftBlockHeight));
}
foreach (LineInfo line in result.Lines)
{
page.Canvas.DrawString(line.Text, font5, brush2, 0, y, format4);
y = y + result.LineHeight;
}
PdfTextWidget textWidget = new PdfTextWidget(result.Remainder, font5, brush2);
PdfTextLayout textLayout = new PdfTextLayout();
textLayout.Break = PdfLayoutBreakType.FitPage;
textLayout.Layout = PdfLayoutType.Paginate;
RectangleF bounds = new RectangleF(new PointF(0, y), page.Canvas.ClientSize);
textWidget.StringFormat = format4;
textWidget.Draw(page, bounds, textLayout);
}
}
}
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.AutomaticFields
Imports Spire.Pdf.Graphics
Namespace PageSetup
Friend Class Program
Shared Sub Main(ByVal args() As String)
'Create a pdf document.
Dim doc As New PdfDocument()
'margin
Dim unitCvtr As New PdfUnitConvertor()
Dim margin As New PdfMargins()
margin.Top = unitCvtr.ConvertUnits(2.54F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point)
margin.Bottom = margin.Top
margin.Left = unitCvtr.ConvertUnits(3.17F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point)
margin.Right = margin.Left
' Create one page
Dim page As PdfPageBase = doc.Pages.Add(PdfPageSize.A4, margin)
page.BackgroundColor = Color.Chocolate
'Draw page
DrawPage(page)
page = doc.Pages.Add(PdfPageSize.A4, margin)
page.BackgroundColor = Color.Coral
'Draw page
DrawPage(page)
page = doc.Pages.Add(PdfPageSize.A3, margin, PdfPageRotateAngle.RotateAngle180, _
PdfPageOrientation.Landscape)
page.BackgroundColor = Color.LightPink
'Draw page
DrawPage(page)
'create section
Dim section As PdfSection = doc.Sections.Add()
section.PageSettings.Size = PdfPageSize.A4
section.PageSettings.Margins = margin
page = section.Pages.Add()
'Draw page
DrawPage(page)
'set background color
page = section.Pages.Add()
page.BackgroundColor = Color.LightSkyBlue
DrawPage(page)
'Landscape
section = doc.Sections.Add()
section.PageSettings.Size = PdfPageSize.A4
section.PageSettings.Margins = margin
section.PageSettings.Orientation = PdfPageOrientation.Landscape
page = section.Pages.Add()
DrawPage(page)
'Rotate 90
section = doc.Sections.Add()
section.PageSettings.Size = PdfPageSize.A4
section.PageSettings.Margins = margin
section.PageSettings.Rotate = PdfPageRotateAngle.RotateAngle90
page = section.Pages.Add()
DrawPage(page)
'Rotate 180
section = doc.Sections.Add()
section.PageSettings.Size = PdfPageSize.A4
section.PageSettings.Margins = margin
section.PageSettings.Rotate = PdfPageRotateAngle.RotateAngle180
page = section.Pages.Add()
DrawPage(page)
'Save pdf file.
doc.SaveToFile("PageSetup.pdf")
doc.Close()
'Launching the Pdf file.
Process.Start("PageSetup.pdf")
End Sub
Private Shared Sub DrawPage(ByVal page As PdfPageBase)
Dim pageWidth As Single = page.Canvas.ClientSize.Width
Dim y As Single = 0
'title
y = y + 5
Dim brush2 As PdfBrush = New PdfSolidBrush(Color.Black)
Dim font2 As New PdfTrueTypeFont(New Font("Arial", 16.0F, FontStyle.Bold))
Dim format2 As New PdfStringFormat(PdfTextAlignment.Center)
format2.CharacterSpacing = 1.0F
Dim text As String = "Summary of Science"
page.Canvas.DrawString(text, font2, brush2, pageWidth / 2, y, format2)
Dim size As SizeF = font2.MeasureString(text, format2)
y = y + size.Height + 6
'icon
Dim image As PdfImage = PdfImage.FromFile("Wikipedia_Science.png")
page.Canvas.DrawImage(image, New PointF(pageWidth - image.PhysicalDimension.Width, y))
Dim imageLeftSpace As Single = pageWidth - image.PhysicalDimension.Width - 2
Dim imageBottom As Single = image.PhysicalDimension.Height + y
'refenrence content
Dim font3 As New PdfTrueTypeFont(New Font("Arial", 9.0F))
Dim format3 As New PdfStringFormat()
format3.ParagraphIndent = font3.Size * 2
format3.MeasureTrailingSpaces = True
format3.LineSpacing = font3.Size * 1.5F
Dim text1 As String = "(All text and picture from "
Dim text2 As String = "Wikipedia"
Dim text3 As String = ", the free encyclopedia)"
page.Canvas.DrawString(text1, font3, brush2, 0, y, format3)
size = font3.MeasureString(text1, format3)
Dim x1 As Single = size.Width
format3.ParagraphIndent = 0
Dim font4 As New PdfTrueTypeFont(New Font("Arial", 9.0F, FontStyle.Underline))
Dim brush3 As PdfBrush = PdfBrushes.Blue
page.Canvas.DrawString(text2, font4, brush3, x1, y, format3)
size = font4.MeasureString(text2, format3)
x1 = x1 + size.Width
page.Canvas.DrawString(text3, font3, brush2, x1, y, format3)
y = y + size.Height
'content
Dim format4 As New PdfStringFormat()
text = System.IO.File.ReadAllText("Summary_of_Science.txt")
Dim font5 As New PdfTrueTypeFont(New Font("Arial", 10.0F))
format4.LineSpacing = font5.Size * 1.5F
Dim textLayouter As New PdfStringLayouter()
Dim imageLeftBlockHeight As Single = imageBottom - y
Dim result As PdfStringLayoutResult _
= textLayouter.Layout(text, font5, format4, New SizeF(imageLeftSpace, imageLeftBlockHeight))
If result.ActualSize.Height < imageBottom - y Then
imageLeftBlockHeight = imageLeftBlockHeight + result.LineHeight
result = textLayouter.Layout(text, font5, format4, New SizeF(imageLeftSpace, imageLeftBlockHeight))
End If
For Each line As LineInfo In result.Lines
page.Canvas.DrawString(line.Text, font5, brush2, 0, y, format4)
y = y + result.LineHeight
Next line
Dim textWidget As New PdfTextWidget(result.Remainder, font5, brush2)
Dim textLayout As New PdfTextLayout()
textLayout.Break = PdfLayoutBreakType.FitPage
textLayout.Layout = PdfLayoutType.Paginate
Dim bounds As New RectangleF(New PointF(0, y), page.Canvas.ClientSize)
textWidget.StringFormat = format4
textWidget.Draw(page, bounds, textLayout)
End Sub
End Class
End Namespace
Tuesday, 05 April 2011 09:25
PDF TextLayout in C#, VB.NET
using System;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace TextLayout
{
class Program
{
static void Main(string[] args)
{
//Create a pdf document.
PdfDocument doc = new PdfDocument();
// Create one page
PdfPageBase page = doc.Pages.Add();
float pageWidth = page.Canvas.ClientSize.Width;
float y = 0;
//page header
PdfPen pen1 = new PdfPen(Color.LightGray, 1f);
PdfBrush brush1 = new PdfSolidBrush(Color.LightGray);
PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 8f, FontStyle.Italic));
PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Right);
String text = "Demo of Spire.Pdf";
page.Canvas.DrawString(text, font1, brush1, pageWidth, y, format1);
SizeF size = font1.MeasureString(text, format1);
y = y + size.Height + 1;
page.Canvas.DrawLine(pen1, 0, y, pageWidth, y);
//title
y = y + 5;
PdfBrush brush2 = new PdfSolidBrush(Color.Black);
PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 16f, FontStyle.Bold));
PdfStringFormat format2 = new PdfStringFormat(PdfTextAlignment.Center);
format2.CharacterSpacing = 1f;
text = "Summary of Science";
page.Canvas.DrawString(text, font2, brush2, pageWidth / 2, y, format2);
size = font2.MeasureString(text, format2);
y = y + size.Height + 6;
//icon
PdfImage image = PdfImage.FromFile("Wikipedia_Science.png");
page.Canvas.DrawImage(image, new PointF(pageWidth - image.PhysicalDimension.Width, y));
float imageLeftSpace = pageWidth - image.PhysicalDimension.Width - 2;
float imageBottom = image.PhysicalDimension.Height + y;
//refenrence content
PdfTrueTypeFont font3 = new PdfTrueTypeFont(new Font("Arial", 9f));
PdfStringFormat format3 = new PdfStringFormat();
format3.ParagraphIndent = font3.Size * 2;
format3.MeasureTrailingSpaces = true;
format3.LineSpacing = font3.Size * 1.5f;
String text1 = "(All text and picture from ";
String text2 = "Wikipedia";
String text3 = ", the free encyclopedia)";
page.Canvas.DrawString(text1, font3, brush2, 0, y, format3);
size = font3.MeasureString(text1, format3);
float x1 = size.Width;
format3.ParagraphIndent = 0;
PdfTrueTypeFont font4 = new PdfTrueTypeFont(new Font("Arial", 9f, FontStyle.Underline));
PdfBrush brush3 = PdfBrushes.Blue;
page.Canvas.DrawString(text2, font4, brush3, x1, y, format3);
size = font4.MeasureString(text2, format3);
x1 = x1 + size.Width;
page.Canvas.DrawString(text3, font3, brush2, x1, y, format3);
y = y + size.Height;
//content
PdfStringFormat format4 = new PdfStringFormat();
text = System.IO.File.ReadAllText("Summary_of_Science.txt");
PdfTrueTypeFont font5 = new PdfTrueTypeFont(new Font("Arial", 10f));
format4.LineSpacing = font5.Size * 1.5f;
PdfStringLayouter textLayouter = new PdfStringLayouter();
float imageLeftBlockHeight = imageBottom - y;
PdfStringLayoutResult result
= textLayouter.Layout(text, font5, format4, new SizeF(imageLeftSpace, imageLeftBlockHeight));
if (result.ActualSize.Height < imageBottom - y)
{
imageLeftBlockHeight = imageLeftBlockHeight + result.LineHeight;
result = textLayouter.Layout(text, font5, format4, new SizeF(imageLeftSpace, imageLeftBlockHeight));
}
foreach (LineInfo line in result.Lines)
{
page.Canvas.DrawString(line.Text, font5, brush2, 0, y, format4);
y = y + result.LineHeight;
}
PdfTextWidget textWidget = new PdfTextWidget(result.Remainder, font5, brush2);
PdfTextLayout textLayout = new PdfTextLayout();
textLayout.Break = PdfLayoutBreakType.FitPage;
textLayout.Layout = PdfLayoutType.Paginate;
RectangleF bounds = new RectangleF(new PointF(0, y), page.Canvas.ClientSize);
textWidget.StringFormat = format4;
textWidget.Draw(page, bounds, textLayout);
//Save pdf file.
doc.SaveToFile("TextLayout.pdf");
doc.Close();
//Launching the Pdf file.
System.Diagnostics.Process.Start("TextLayout.pdf");
}
}
}
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Namespace TextLayout
Friend Class Program
Shared Sub Main(ByVal args() As String)
'Create a pdf document.
Dim doc As New PdfDocument()
' Create one page
Dim page As PdfPageBase = doc.Pages.Add()
Dim pageWidth As Single = page.Canvas.ClientSize.Width
Dim y As Single = 0
'page header
Dim pen1 As New PdfPen(Color.LightGray, 1.0F)
Dim brush1 As PdfBrush = New PdfSolidBrush(Color.LightGray)
Dim font1 As New PdfTrueTypeFont(New Font("Arial", 8.0F, FontStyle.Italic))
Dim format1 As New PdfStringFormat(PdfTextAlignment.Right)
Dim text As String = "Demo of Spire.Pdf"
page.Canvas.DrawString(text, font1, brush1, pageWidth, y, format1)
Dim size As SizeF = font1.MeasureString(text, format1)
y = y + size.Height + 1
page.Canvas.DrawLine(pen1, 0, y, pageWidth, y)
'title
y = y + 5
Dim brush2 As PdfBrush = New PdfSolidBrush(Color.Black)
Dim font2 As New PdfTrueTypeFont(New Font("Arial", 16.0F, FontStyle.Bold))
Dim format2 As New PdfStringFormat(PdfTextAlignment.Center)
format2.CharacterSpacing = 1.0F
text = "Summary of Science"
page.Canvas.DrawString(text, font2, brush2, pageWidth / 2, y, format2)
size = font2.MeasureString(text, format2)
y = y + size.Height + 6
'icon
Dim image As PdfImage = PdfImage.FromFile("Wikipedia_Science.png")
page.Canvas.DrawImage(image, New PointF(pageWidth - image.PhysicalDimension.Width, y))
Dim imageLeftSpace As Single = pageWidth - image.PhysicalDimension.Width - 2
Dim imageBottom As Single = image.PhysicalDimension.Height + y
'refenrence content
Dim font3 As New PdfTrueTypeFont(New Font("Arial", 9.0F))
Dim format3 As New PdfStringFormat()
format3.ParagraphIndent = font3.Size * 2
format3.MeasureTrailingSpaces = True
format3.LineSpacing = font3.Size * 1.5F
Dim text1 As String = "(All text and picture from "
Dim text2 As String = "Wikipedia"
Dim text3 As String = ", the free encyclopedia)"
page.Canvas.DrawString(text1, font3, brush2, 0, y, format3)
size = font3.MeasureString(text1, format3)
Dim x1 As Single = size.Width
format3.ParagraphIndent = 0
Dim font4 As New PdfTrueTypeFont(New Font("Arial", 9.0F, FontStyle.Underline))
Dim brush3 As PdfBrush = PdfBrushes.Blue
page.Canvas.DrawString(text2, font4, brush3, x1, y, format3)
size = font4.MeasureString(text2, format3)
x1 = x1 + size.Width
page.Canvas.DrawString(text3, font3, brush2, x1, y, format3)
y = y + size.Height
'content
Dim format4 As New PdfStringFormat()
text = System.IO.File.ReadAllText("Summary_of_Science.txt")
Dim font5 As New PdfTrueTypeFont(New Font("Arial", 10.0F))
format4.LineSpacing = font5.Size * 1.5F
Dim textLayouter As New PdfStringLayouter()
Dim imageLeftBlockHeight As Single = imageBottom - y
Dim result As PdfStringLayoutResult _
= textLayouter.Layout(text, font5, format4, New SizeF(imageLeftSpace, imageLeftBlockHeight))
If result.ActualSize.Height < imageBottom - y Then
imageLeftBlockHeight = imageLeftBlockHeight + result.LineHeight
result = textLayouter.Layout(text, font5, format4, New SizeF(imageLeftSpace, imageLeftBlockHeight))
End If
For Each line As LineInfo In result.Lines
page.Canvas.DrawString(line.Text, font5, brush2, 0, y, format4)
y = y + result.LineHeight
Next line
Dim textWidget As New PdfTextWidget(result.Remainder, font5, brush2)
Dim textLayout As New PdfTextLayout()
textLayout.Break = PdfLayoutBreakType.FitPage
textLayout.Layout = PdfLayoutType.Paginate
Dim bounds As New RectangleF(New PointF(0, y), page.Canvas.ClientSize)
textWidget.StringFormat = format4
textWidget.Draw(page, bounds, textLayout)
'Save pdf file.
doc.SaveToFile("TextLayout.pdf")
doc.Close()
'Launching the Pdf file.
Process.Start("TextLayout.pdf")
End Sub
End Class
End Namespace
Tuesday, 05 April 2011 09:07
PDF Font in C#, VB.NET
using System;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace Font
{
class Program
{
static void Main(string[] args)
{
//Create a pdf document.
PdfDocument doc = new PdfDocument();
// Create one page
PdfPageBase page = doc.Pages.Add();
//Draw the text
float l = page.Canvas.ClientSize.Width / 2;
PointF center = new PointF(l, l);
float r = (float)Math.Sqrt(2 * l * l);
PdfRadialGradientBrush brush
= new PdfRadialGradientBrush(center, 0f, center, r, Color.Blue, Color.Red);
PdfFontFamily[] fontFamilies
= (PdfFontFamily[])Enum.GetValues(typeof(PdfFontFamily));
float y = 10;
for (int i = 0; i < fontFamilies.Length; i++)
{
String text = String.Format("Font Family: {0}", fontFamilies[i]);
float x1 = 0;
y = 10 + i * 16;
PdfFont font1 = new PdfFont(PdfFontFamily.Courier, 14f);
PdfFont font2 = new PdfFont(fontFamilies[i], 14f);
float x2 = x1 + 10 + font1.MeasureString(text).Width;
page.Canvas.DrawString(text, font1, brush, x1, y);
page.Canvas.DrawString(text, font2, brush, x2, y);
}
//true type font - embedded.
System.Drawing.Font font = new System.Drawing.Font("Arial", 14f, FontStyle.Bold);
PdfTrueTypeFont trueTypeFont = new PdfTrueTypeFont(font);
page.Canvas.DrawString("Font Family: Arial - Embedded", trueTypeFont, brush, 0, (y = y + 16f));
//right to left
String arabicText
= "\u0627\u0644\u0630\u0647\u0627\u0628\u0021\u0020"
+ "\u0628\u062F\u0648\u0631\u0647\u0020\u062D\u0648\u0644\u0647\u0627\u0021\u0020"
+ "\u0627\u0644\u0630\u0647\u0627\u0628\u0021\u0020"
+ "\u0627\u0644\u0630\u0647\u0627\u0628\u0021\u0020"
+ "\u0627\u0644\u0630\u0647\u0627\u0628\u0021";
trueTypeFont = new PdfTrueTypeFont(font, true);
RectangleF rctg = new RectangleF(new PointF(0, (y = y + 16f)), page.Canvas.ClientSize);
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Right);
format.RightToLeft = true;
page.Canvas.DrawString(arabicText, trueTypeFont, brush, rctg, format);
//true type font - not embedded
font = new System.Drawing.Font("Batang", 14f, FontStyle.Italic);
trueTypeFont = new PdfTrueTypeFont(font);
page.Canvas.DrawString("Font Family: Batang - Not Embedded", trueTypeFont, brush, 0, (y = y + 16f));
//font file
String fontFileName = "Hawaii_Killer.ttf";
trueTypeFont = new PdfTrueTypeFont(fontFileName, 20f);
page.Canvas.DrawString("Hawaii Killer Font", trueTypeFont, brush, 0, (y = y + 16f));
page.Canvas.DrawString("Hawaii Killer Font, from http://www.1001freefonts.com",
new PdfFont(PdfFontFamily.Helvetica, 8f), brush, 10, (y = y + 20f));
//cjk font
PdfCjkStandardFont cjkFont = new PdfCjkStandardFont(PdfCjkFontFamily.MonotypeHeiMedium, 14f);
page.Canvas.DrawString("How to say 'Font' in Chinese? \u5B57\u4F53",
cjkFont, brush, 0, (y = y + 16f));
cjkFont = new PdfCjkStandardFont(PdfCjkFontFamily.HanyangSystemsGothicMedium, 14f);
page.Canvas.DrawString("How to say 'Font' in Japanese? \u30D5\u30A9\u30F3\u30C8",
cjkFont, brush, 0, (y = y + 16f));
cjkFont = new PdfCjkStandardFont(PdfCjkFontFamily.HanyangSystemsShinMyeongJoMedium, 14f);
page.Canvas.DrawString("How to say 'Font' in Korean? \uAE00\uAF34",
cjkFont, brush, 0, (y = y + 16f));
//Save pdf file.
doc.SaveToFile("Font.pdf");
doc.Close();
//Launching the Pdf file.
System.Diagnostics.Process.Start("Font.pdf");
}
}
}
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Namespace FontFormat
Friend Class Program
Shared Sub Main(ByVal args() As String)
'Create a pdf document.
Dim doc As New PdfDocument()
' Create one page
Dim page As PdfPageBase = doc.Pages.Add()
'Draw the text
Dim l As Single = page.Canvas.ClientSize.Width / 2
Dim center As New PointF(l, l)
Dim r As Single = CSng(Math.Sqrt(2 * l * l))
Dim brush As New PdfRadialGradientBrush(center, 0.0F, center, r, Color.Blue, Color.Red)
Dim fontFamilies() As PdfFontFamily _
= CType(System.Enum.GetValues(GetType(PdfFontFamily)), PdfFontFamily())
Dim y As Single = 10
For i As Integer = 0 To fontFamilies.Length - 1
Dim text As String = String.Format("Font Family: {0}", fontFamilies(i))
Dim x1 As Single = 0
y = 10 + i * 16
Dim font1 As New PdfFont(PdfFontFamily.Courier, 14.0F)
Dim font2 As New PdfFont(fontFamilies(i), 14.0F)
Dim x2 As Single = x1 + 10 + font1.MeasureString(text).Width
page.Canvas.DrawString(text, font1, brush, x1, y)
page.Canvas.DrawString(text, font2, brush, x2, y)
Next i
'true type font - embedded.
Dim font As New System.Drawing.Font("Arial", 14.0F, FontStyle.Bold)
Dim trueTypeFont As New PdfTrueTypeFont(font)
y = y + 16.0F
page.Canvas.DrawString("Font Family: Arial - Embedded", trueTypeFont, brush, 0, y)
'right to left
Dim arabicText As String _
= ChrW(&H627).ToString() & ChrW(&H644).ToString() & ChrW(&H630).ToString() _
& ChrW(&H647).ToString() & ChrW(&H627).ToString() & ChrW(&H628).ToString() _
& ChrW(&H21).ToString() & ChrW(&H20).ToString() & ChrW(&H628).ToString() _
& ChrW(&H62F).ToString() & ChrW(&H648).ToString() & ChrW(&H631).ToString() _
& ChrW(&H647).ToString() & ChrW(&H20).ToString() & ChrW(&H62D).ToString() _
& ChrW(&H648).ToString() & ChrW(&H644).ToString() & ChrW(&H647).ToString() _
& ChrW(&H627).ToString() & ChrW(&H21).ToString() & ChrW(&H20).ToString() _
& ChrW(&H627).ToString() & ChrW(&H644).ToString() & ChrW(&H630).ToString() _
& ChrW(&H647).ToString() & ChrW(&H627).ToString() & ChrW(&H628).ToString() _
& ChrW(&H21).ToString() & ChrW(&H20).ToString() & ChrW(&H627).ToString() _
& ChrW(&H644).ToString() & ChrW(&H630).ToString() & ChrW(&H647).ToString() _
& ChrW(&H627).ToString() & ChrW(&H628).ToString() & ChrW(&H21).ToString() _
& ChrW(&H20).ToString() & ChrW(&H627).ToString() & ChrW(&H644).ToString() _
& ChrW(&H630).ToString() & ChrW(&H647).ToString() & ChrW(&H627).ToString() _
& ChrW(&H628).ToString() & ChrW(&H21).ToString()
trueTypeFont = New PdfTrueTypeFont(font, True)
y = y + 16.0F
Dim rctg As New RectangleF(New PointF(0, y), page.Canvas.ClientSize)
Dim format As New PdfStringFormat(PdfTextAlignment.Right)
format.RightToLeft = True
page.Canvas.DrawString(arabicText, trueTypeFont, brush, rctg, format)
'true type font - not embedded
font = New System.Drawing.Font("Batang", 14.0F, FontStyle.Italic)
trueTypeFont = New PdfTrueTypeFont(font)
y = y + 16.0F
page.Canvas.DrawString("Font Family: Batang - Not Embedded", trueTypeFont, brush, 0, y)
'font file
Dim fontFileName As String = "Hawaii_Killer.ttf"
trueTypeFont = New PdfTrueTypeFont(fontFileName, 20.0F)
y = y + 16.0F
page.Canvas.DrawString("Hawaii Killer Font", trueTypeFont, brush, 0, y)
y = y + 20.0F
page.Canvas.DrawString("Hawaii Killer Font, from http://www.1001freefonts.com", _
New PdfFont(PdfFontFamily.Helvetica, 8.0F), brush, 10, y)
'cjk font
Dim cjkFont As New PdfCjkStandardFont(PdfCjkFontFamily.MonotypeHeiMedium, 14.0F)
y = y + 16.0F
page.Canvas.DrawString("How to say 'Font' in Chinese? " _
& ChrW(&H5B57).ToString() & ChrW(&H4F53).ToString(), cjkFont, brush, 0, y)
cjkFont = New PdfCjkStandardFont(PdfCjkFontFamily.HanyangSystemsGothicMedium, 14.0F)
y = y + 16.0F
page.Canvas.DrawString("How to say 'Font' in Japanese? " _
& ChrW(&H30D5).ToString() & ChrW(&H30A9).ToString() _
& ChrW(&H30F3).ToString() & ChrW(&H30C8).ToString(), cjkFont, brush, 0, y)
cjkFont = New PdfCjkStandardFont(PdfCjkFontFamily.HanyangSystemsShinMyeongJoMedium, 14.0F)
y = y + 16.0F
page.Canvas.DrawString("How to say 'Font' in Korean? " _
& ChrW(&HAE00).ToString() & ChrW(&HAF34).ToString(), cjkFont, brush, 0, y)
'Save pdf file.
doc.SaveToFile("Font.pdf")
doc.Close()
'Launching the Pdf file.
Process.Start("Font.pdf")
End Sub
End Class
End Namespace
Tuesday, 05 April 2011 08:46
PDF Graphics Overlay in C#, VB.NET
The sample demonstrates how to overlay one page on another and set transparency mode.

using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace Overlay
{
class Program
{
static void Main(string[] args)
{
//load two document
PdfDocument doc1 = new PdfDocument();
doc1.LoadFromFile("Sample1.pdf");
PdfDocument doc2 = new PdfDocument();
doc2.LoadFromFile("Sample3.pdf");
//Create page template
PdfTemplate template = doc1.Pages[0].CreateTemplate();
foreach (PdfPageBase page in doc2.Pages)
{
page.Canvas.SetTransparency(0.25f, 0.25f, PdfBlendMode.Overlay);
page.Canvas.DrawTemplate(template, PointF.Empty);
}
//Save pdf file.
doc2.SaveToFile("Overlay.pdf");
doc1.Close();
doc2.Close();
//Launching the Pdf file.
System.Diagnostics.Process.Start("Overlay.pdf");
}
}
}
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Namespace Overlay
Friend Class Program
Shared Sub Main(ByVal args() As String)
'load two document
Dim doc1 As New PdfDocument()
doc1.LoadFromFile("Sample1.pdf")
Dim doc2 As New PdfDocument()
doc2.LoadFromFile("Sample3.pdf")
'Create page template
Dim template As PdfTemplate = doc1.Pages(0).CreateTemplate()
For Each page As PdfPageBase In doc2.Pages
page.Canvas.SetTransparency(0.25F, 0.25F, PdfBlendMode.Overlay)
page.Canvas.DrawTemplate(template, PointF.Empty)
Next page
'Save pdf file.
doc2.SaveToFile("Overlay.pdf")
doc1.Close()
doc2.Close()
'Launching the Pdf file.
Process.Start("Overlay.pdf")
End Sub
End Class
End Namespace
Tuesday, 05 April 2011 07:42
PDF Graphics Transparency in C#, VB.NET
using System;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace Transparency
{
class Program
{
static void Main(string[] args)
{
//Create a pdf document.
PdfDocument doc = new PdfDocument();
// Create one section
PdfSection section = doc.Sections.Add();
//Load image
PdfImage image = PdfImage.FromFile("SalesReportChart.png");
float imageWidth = image.PhysicalDimension.Width / 2;
float imageHeight = image.PhysicalDimension.Height / 2;
foreach (PdfBlendMode mode in Enum.GetValues(typeof(PdfBlendMode)))
{
PdfPageBase page = section.Pages.Add();
float pageWidth = page.Canvas.ClientSize.Width;
float y = 0;
//title
y = y + 5;
PdfBrush brush = new PdfSolidBrush(Color.OrangeRed);
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 12f, FontStyle.Bold));
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Center);
String text = String.Format("Transparency Blend Mode: {0}", mode);
page.Canvas.DrawString(text, font, brush, pageWidth / 2, y, format);
SizeF size = font.MeasureString(text, format);
y = y + size.Height + 6;
page.Canvas.DrawImage(image, 0, y, imageWidth, imageHeight);
page.Canvas.Save();
float d = (page.Canvas.ClientSize.Width - imageWidth) / 5;
float x = d;
y = y + d / 2;
for (int i = 0; i < 5; i++)
{
float alpha = 1.0f / 6 * (5 - i);
page.Canvas.SetTransparency(alpha, alpha, mode);
page.Canvas.DrawImage(image, x, y, imageWidth, imageHeight);
x = x + d;
y = y + d / 2;
}
page.Canvas.Restore();
}
//Save pdf file.
doc.SaveToFile("Transparency.pdf");
doc.Close();
//Launching the Pdf file.
System.Diagnostics.Process.Start("Transparency.pdf");
}
}
}
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Namespace Transparency
Friend Class Program
Shared Sub Main(ByVal args() As String)
'Create a pdf document.
Dim doc As New PdfDocument()
' Create one section
Dim section As PdfSection = doc.Sections.Add()
'Load image
Dim image As PdfImage = PdfImage.FromFile("SalesReportChart.png")
Dim imageWidth As Single = image.PhysicalDimension.Width \ 2
Dim imageHeight As Single = image.PhysicalDimension.Height \ 2
For Each mode As PdfBlendMode In System.Enum.GetValues(GetType(PdfBlendMode))
Dim page As PdfPageBase = section.Pages.Add()
Dim pageWidth As Single = page.Canvas.ClientSize.Width
Dim y As Single = 0
'title
y = y + 5
Dim brush As PdfBrush = New PdfSolidBrush(Color.OrangeRed)
Dim font As New PdfTrueTypeFont(New Font("Arial", 12.0F, FontStyle.Bold))
Dim format As New PdfStringFormat(PdfTextAlignment.Center)
Dim text As String = String.Format("Transparency Blend Mode: {0}", mode)
page.Canvas.DrawString(text, font, brush, pageWidth / 2, y, format)
Dim size As SizeF = font.MeasureString(text, format)
y = y + size.Height + 6
page.Canvas.DrawImage(image, 0, y, imageWidth, imageHeight)
page.Canvas.Save()
Dim d As Single = (page.Canvas.ClientSize.Width - imageWidth) / 5
Dim x As Single = d
y = y + d / 2
For i As Integer = 0 To 4
Dim alpha As Single = 1.0F / 6 * (5 - i)
page.Canvas.SetTransparency(alpha, alpha, mode)
page.Canvas.DrawImage(image, x, y, imageWidth, imageHeight)
x = x + d
y = y + d / 2
Next i
page.Canvas.Restore()
Next mode
'Save pdf file.
doc.SaveToFile("Transparency.pdf")
doc.Close()
'Launching the Pdf file.
Process.Start("Transparency.pdf")
End Sub
End Class
End Namespace




