Wednesday, 06 April 2011 09:16
PDF Link in C#, VB.NET
The sample demonstrates how to add link to PDF document.
using System; using System.Drawing; using Spire.Pdf; using Spire.Pdf.Actions; using Spire.Pdf.Annotations; using Spire.Pdf.Graphics; namespace Link { 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; float x = 0; PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 12)); String label = "Simple Link: "; PdfStringFormat format = new PdfStringFormat(); format.MeasureTrailingSpaces = true; page.Canvas.DrawString(label, font, PdfBrushes.OrangeRed, 0, y, format); x = font.MeasureString(label, format).Width; PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 12, FontStyle.Underline)); String url1 = "http://www.e-iceblue.com"; page.Canvas.DrawString(url1, font1, PdfBrushes.Blue, x, y); y = y + font1.MeasureString(url1).Height; label = "Web Link: "; page.Canvas.DrawString(label, font, PdfBrushes.OrangeRed, 0, y, format); x = font.MeasureString(label, format).Width; String text = "e-iceblue"; PdfTextWebLink link2 = new PdfTextWebLink(); link2.Text = text; link2.Url = url1; link2.Font = font1; link2.Brush = PdfBrushes.Blue; link2.DrawTextWebLink(page.Canvas, new PointF(x, y)); y = y + font1.MeasureString(text).Height; label = "URI Annonationa: "; page.Canvas.DrawString(label, font, PdfBrushes.OrangeRed, 0, y, format); x = font.MeasureString(label, format).Width; text = "Google"; PointF location = new PointF(x, y); SizeF size = font1.MeasureString(text); RectangleF linkBounds = new RectangleF(location, size); PdfUriAnnotation link3 = new PdfUriAnnotation(linkBounds); link3.Border = new PdfAnnotationBorder(0); link3.Uri = "http://www.google.com"; (page as PdfNewPage).Annotations.Add(link3); page.Canvas.DrawString(text, font1, PdfBrushes.Blue, x, y); y = y + size.Height; label = "URI Annonationa Action: "; page.Canvas.DrawString(label, font, PdfBrushes.OrangeRed, 0, y, format); x = font.MeasureString(label, format).Width; text = "JavaScript Action (Click Me)"; location = new PointF(x, y); size = font1.MeasureString(text); linkBounds = new RectangleF(location, size); PdfUriAnnotation link4 = new PdfUriAnnotation(linkBounds); link4.Border = new PdfAnnotationBorder(0.75f); link4.Color = Color.LightGray; //script String script = "app.alert({" + " cMsg: \"Hello.\"," + " nIcon: 3," + " cTitle: \"JavaScript Action\"" + "});"; PdfJavaScriptAction action = new PdfJavaScriptAction(script); link4.Action = action; (page as PdfNewPage).Annotations.Add(link4); page.Canvas.DrawString(text, font1, PdfBrushes.Blue, x, y); y = y + size.Height; //Save pdf file. doc.SaveToFile("Link.pdf"); doc.Close(); //Launching the Pdf file. System.Diagnostics.Process.Start("Link.pdf"); } } }
Imports System.Drawing Imports Spire.Pdf Imports Spire.Pdf.Actions Imports Spire.Pdf.Annotations Imports Spire.Pdf.Graphics Namespace Link 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 Dim x As Single = 0 Dim font As New PdfTrueTypeFont(New Font("Arial", 12)) Dim label As String = "Simple Link: " Dim format As New PdfStringFormat() format.MeasureTrailingSpaces = True page.Canvas.DrawString(label, font, PdfBrushes.OrangeRed, 0, y, format) x = font.MeasureString(label, format).Width Dim font1 As New PdfTrueTypeFont(New Font("Arial", 12, FontStyle.Underline)) Dim url1 As String = "http://www.e-iceblue.com" page.Canvas.DrawString(url1, font1, PdfBrushes.Blue, x, y) y = y + font1.MeasureString(url1).Height label = "Web Link: " page.Canvas.DrawString(label, font, PdfBrushes.OrangeRed, 0, y, format) x = font.MeasureString(label, format).Width Dim text As String = "e-iceblue" Dim link2 As New PdfTextWebLink() link2.Text = text link2.Url = url1 link2.Font = font1 link2.Brush = PdfBrushes.Blue link2.DrawTextWebLink(page.Canvas, New PointF(x, y)) y = y + font1.MeasureString(text).Height label = "URI Annonationa: " page.Canvas.DrawString(label, font, PdfBrushes.OrangeRed, 0, y, format) x = font.MeasureString(label, format).Width text = "Google" Dim location As New PointF(x, y) Dim size As SizeF = font1.MeasureString(text) Dim linkBounds As New RectangleF(location, size) Dim link3 As New PdfUriAnnotation(linkBounds) link3.Border = New PdfAnnotationBorder(0) link3.Uri = "http://www.google.com" TryCast(page, PdfNewPage).Annotations.Add(link3) page.Canvas.DrawString(text, font1, PdfBrushes.Blue, x, y) y = y + size.Height label = "URI Annonationa Action: " page.Canvas.DrawString(label, font, PdfBrushes.OrangeRed, 0, y, format) x = font.MeasureString(label, format).Width text = "JavaScript Action (Click Me)" location = New PointF(x, y) size = font1.MeasureString(text) linkBounds = New RectangleF(location, size) Dim link4 As New PdfUriAnnotation(linkBounds) link4.Border = New PdfAnnotationBorder(0.75F) link4.Color = Color.LightGray 'script Dim script As String _ = "app.alert({" _ & " cMsg: ""Hello.""," _ & " nIcon: 3," _ & " cTitle: ""JavaScript Action""" _ & "});" Dim action As New PdfJavaScriptAction(script) link4.Action = action TryCast(page, PdfNewPage).Annotations.Add(link4) page.Canvas.DrawString(text, font1, PdfBrushes.Blue, x, y) y = y + size.Height 'Save pdf file. doc.SaveToFile("Link.pdf") doc.Close() 'Launching the Pdf file. Process.Start("Link.pdf") End Sub End Class End Namespace
Published in
Interaction
Wednesday, 06 April 2011 09:02
PDF ActionChain in C#, VB.NET
The sample demonstrates how to work with action, javascript action, page destination action and action annotation in PDF document.
using System; using System.Drawing; using Spire.Pdf; using Spire.Pdf.Graphics; using Spire.Pdf.Actions; using Spire.Pdf.General; using Spire.Pdf.Tables; using System.Data.OleDb; using System.Data; namespace ActionChain { class Program { static void Main(string[] args) { //Create a pdf document. PdfDocument doc = new PdfDocument(); //Draw pages PdfPageBase lastPage = DrawPages(doc); //script String script = "app.alert({" + " cMsg: \"I'll lead; you must follow me.\"," + " nIcon: 3," + " cTitle: \"JavaScript Action\"" + "});"; PdfJavaScriptAction action1 = new PdfJavaScriptAction(script); doc.AfterOpenAction = action1; //script script = "app.alert({" + " cMsg: \"The firt page!\"," + " nIcon: 3," + " cTitle: \"JavaScript Action\"" + "});"; PdfJavaScriptAction action2 = new PdfJavaScriptAction(script); action1.NextAction = action2; PdfDestination dest = new PdfDestination(lastPage); dest.Zoom = 1; PdfGoToAction action3 = new PdfGoToAction(dest); action2.NextAction = action3; //script script = "app.alert({" + " cMsg: \"Oh sorry, it's the last page. I'm missing!\"," + " nIcon: 3," + " cTitle: \"JavaScript Action\"" + "});"; PdfJavaScriptAction action4 = new PdfJavaScriptAction(script); action3.NextAction = action4; //Save pdf file. doc.SaveToFile("ActionChain.pdf"); doc.Close(); //Launching the Pdf file. System.Diagnostics.Process.Start("ActionChain.pdf"); } private static PdfPageBase DrawPages(PdfDocument doc) { //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("Part List", font1, brush1, page.Canvas.ClientSize.Width / 2, y, format1); y = y + font1.MeasureString("Part List", format1).Height; y = y + 5; //create data table PdfTable table = new PdfTable(); table.Style.CellPadding = 2; table.Style.BorderPen = new PdfPen(brush1, 0.75f); table.Style.DefaultStyle.BackgroundBrush = PdfBrushes.SkyBlue; table.Style.DefaultStyle.Font = new PdfTrueTypeFont(new Font("Arial", 10f)); table.Style.AlternateStyle = new PdfCellStyle(); table.Style.AlternateStyle.BackgroundBrush = PdfBrushes.LightYellow; table.Style.AlternateStyle.Font = new PdfTrueTypeFont(new Font("Arial", 10f)); table.Style.HeaderSource = PdfHeaderSource.ColumnCaptions; table.Style.HeaderStyle.BackgroundBrush = PdfBrushes.CadetBlue; table.Style.HeaderStyle.Font = new PdfTrueTypeFont(new Font("Arial", 11f, FontStyle.Bold)); table.Style.HeaderStyle.StringFormat = new PdfStringFormat(PdfTextAlignment.Center); table.Style.ShowHeader = true; using (OleDbConnection conn = new OleDbConnection()) { conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\..\..\..\..\..\Data\demo.mdb"; OleDbCommand command = new OleDbCommand(); command.CommandText = " select Description, OnHand, OnOrder, Cost, ListPrice from parts "; command.Connection = conn; using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(command)) { DataTable dataTable = new DataTable(); dataAdapter.Fill(dataTable); table.DataSourceType = PdfTableDataSourceType.TableDirect; table.DataSource = dataTable; } } float width = page.Canvas.ClientSize.Width - (table.Columns.Count + 1) * table.Style.BorderPen.Width; for (int i = 0; i < table.Columns.Count; i++) { if (i == 0) { table.Columns[i].Width = width * 0.40f * width; table.Columns[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle); } else { table.Columns[i].Width = width * 0.15f * width; table.Columns[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle); } } PdfTableLayoutFormat tableLayout = new PdfTableLayoutFormat(); tableLayout.Break = PdfLayoutBreakType.FitElement; tableLayout.Layout = PdfLayoutType.Paginate; PdfLayoutResult result = table.Draw(page, new PointF(0, y), tableLayout); y = result.Bounds.Bottom + 3; PdfBrush brush2 = PdfBrushes.Gray; PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 9f)); result.Page.Canvas.DrawString(String.Format("* {0} parts in the list.", table.Rows.Count), font2, brush2, 5, y); return result.Page; } } }
Imports System.Data.OleDb Imports System.Drawing Imports Spire.Pdf Imports Spire.Pdf.Graphics Imports Spire.Pdf.Actions Imports Spire.Pdf.General Imports Spire.Pdf.Tables Namespace ActionChain Friend Class Program Shared Sub Main(ByVal args() As String) 'Create a pdf document. Dim doc As New PdfDocument() 'Draw pages Dim lastPage As PdfPageBase = DrawPages(doc) 'script Dim script As String _ = "app.alert({" _ & " cMsg: ""I'll lead; you must follow me.""," _ & " nIcon: 3," _ & " cTitle: ""JavaScript Action""" _ & "});" Dim action1 As New PdfJavaScriptAction(script) doc.AfterOpenAction = action1 'script script _ = "app.alert({" _ & " cMsg: ""The firt page!""," _ & " nIcon: 3," _ & " cTitle: ""JavaScript Action""" _ & "});" Dim action2 As New PdfJavaScriptAction(script) action1.NextAction = action2 Dim dest As New PdfDestination(lastPage) dest.Zoom = 1 Dim action3 As New PdfGoToAction(dest) action2.NextAction = action3 'script script _ = "app.alert({" _ & " cMsg: ""Oh sorry, it's the last page. I'm missing!""," _ & " nIcon: 3," _ & " cTitle: ""JavaScript Action""" _ & "});" Dim action4 As New PdfJavaScriptAction(script) action3.NextAction = action4 'Save pdf file. doc.SaveToFile("ActionChain.pdf") doc.Close() 'Launching the Pdf file. Process.Start("ActionChain.pdf") End Sub Private Shared Function DrawPages(ByVal doc As PdfDocument) As PdfPageBase '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("Part List", font1, brush1, page.Canvas.ClientSize.Width \ 2, y, format1) y = y + font1.MeasureString("Part List", format1).Height y = y + 5 'create data table Dim table As New PdfTable() table.Style.CellPadding = 2 table.Style.BorderPen = New PdfPen(brush1, 0.75F) table.Style.DefaultStyle.BackgroundBrush = PdfBrushes.SkyBlue table.Style.DefaultStyle.Font = New PdfTrueTypeFont(New Font("Arial", 10.0F)) table.Style.AlternateStyle = New PdfCellStyle() table.Style.AlternateStyle.BackgroundBrush = PdfBrushes.LightYellow table.Style.AlternateStyle.Font = New PdfTrueTypeFont(New Font("Arial", 10.0F)) table.Style.HeaderSource = PdfHeaderSource.ColumnCaptions table.Style.HeaderStyle.BackgroundBrush = PdfBrushes.CadetBlue table.Style.HeaderStyle.Font = New PdfTrueTypeFont(New Font("Arial", 11.0F, FontStyle.Bold)) table.Style.HeaderStyle.StringFormat = New PdfStringFormat(PdfTextAlignment.Center) table.Style.ShowHeader = True Using conn As New OleDbConnection() conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=demo.mdb" Dim command As New OleDbCommand() command.CommandText = " select Description, OnHand, OnOrder, Cost, ListPrice from parts " command.Connection = conn Using dataAdapter As New OleDbDataAdapter(command) Dim dataTable As New DataTable() dataAdapter.Fill(dataTable) table.DataSourceType = PdfTableDataSourceType.TableDirect table.DataSource = dataTable End Using End Using Dim width As Single _ = page.Canvas.ClientSize.Width - (table.Columns.Count + 1) * table.Style.BorderPen.Width For i As Integer = 0 To table.Columns.Count - 1 If i = 0 Then table.Columns(i).Width = width * 0.4F * width table.Columns(i).StringFormat _ = New PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle) Else table.Columns(i).Width = width * 0.15F * width table.Columns(i).StringFormat _ = New PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle) End If Next i Dim tableLayout As New PdfTableLayoutFormat() tableLayout.Break = PdfLayoutBreakType.FitElement tableLayout.Layout = PdfLayoutType.Paginate Dim result As PdfLayoutResult = table.Draw(page, New PointF(0, y), tableLayout) y = result.Bounds.Bottom + 3 Dim brush2 As PdfBrush = PdfBrushes.Gray Dim font2 As New PdfTrueTypeFont(New Font("Arial", 9.0F)) result.Page.Canvas.DrawString(String.Format("* {0} parts in the list.", table.Rows.Count), _ font2, brush2, 5, y) Return result.Page End Function End Class End Namespace
Published in
Interaction
Wednesday, 06 April 2011 08:55
PDF Action in C#, VB.NET
The sample demonstrates how to work with action, javascript action, page destination action and action annotation in PDF document.
using System; using System.Data; using System.Data.OleDb; using System.Drawing; using Spire.Pdf; using Spire.Pdf.Actions; using Spire.Pdf.Annotations; using Spire.Pdf.General; using Spire.Pdf.Graphics; using Spire.Pdf.Tables; namespace Action { 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("Part List", font1, brush1, page.Canvas.ClientSize.Width / 2, y, format1); y = y + font1.MeasureString("Part List", format1).Height; y = y + 2; //table top PdfDestination tableTopDest = new PdfDestination(page); tableTopDest.Location = new PointF(0, y); tableTopDest.Mode = PdfDestinationMode.Location; tableTopDest.Zoom = 1f; //Draw table PdfTrueTypeFont buttonFont = new PdfTrueTypeFont(new Font("Arial", 10f, FontStyle.Bold)); float buttonWidth = 70; float buttonHeight = buttonFont.Height * 1.5f; float tableTop = y; PdfLayoutResult tableLayoutResult = DrawTable(page, y + buttonHeight + 5); //table bottom PdfDestination tableBottomDest = new PdfDestination(tableLayoutResult.Page); tableBottomDest.Location = new PointF(0, tableLayoutResult.Bounds.Bottom); tableBottomDest.Mode = PdfDestinationMode.Location; tableBottomDest.Zoom = 1f; //go to table bottom float x = page.Canvas.ClientSize.Width - buttonWidth; PdfStringFormat format2 = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle); RectangleF buttonBounds = new RectangleF(x, tableTop, buttonWidth, buttonHeight); page.Canvas.DrawRectangle(PdfBrushes.DarkGray, buttonBounds); page.Canvas.DrawString("To Bottom", buttonFont, PdfBrushes.CadetBlue, buttonBounds, format2); PdfGoToAction action1 = new PdfGoToAction(tableBottomDest); PdfActionAnnotation annotation1 = new PdfActionAnnotation(buttonBounds, action1); annotation1.Border = new PdfAnnotationBorder(0.75f); annotation1.Color = Color.LightGray; (page as PdfNewPage).Annotations.Add(annotation1); //go to table top float tableBottom = tableLayoutResult.Bounds.Bottom + 5; buttonBounds = new RectangleF(x, tableBottom, buttonWidth, buttonHeight); tableLayoutResult.Page.Canvas.DrawRectangle(PdfBrushes.DarkGray, buttonBounds); tableLayoutResult.Page.Canvas.DrawString("To Top", buttonFont, PdfBrushes.CadetBlue, buttonBounds, format2); PdfGoToAction action2 = new PdfGoToAction(tableTopDest); PdfActionAnnotation annotation2 = new PdfActionAnnotation(buttonBounds, action2); annotation2.Border = new PdfAnnotationBorder(0.75f); annotation2.Color = Color.LightGray; (tableLayoutResult.Page as PdfNewPage).Annotations.Add(annotation2); //goto last page PdfNamedAction action3 = new PdfNamedAction(PdfActionDestination.LastPage); doc.AfterOpenAction = action3; //script String script = "app.alert({" + " cMsg: \"Oh no, you want to leave me.\"," + " nIcon: 3," + " cTitle: \"JavaScript Action\"" + "});"; PdfJavaScriptAction action4 = new PdfJavaScriptAction(script); doc.BeforeCloseAction = action4; //Save pdf file. doc.SaveToFile("Action.pdf"); doc.Close(); //Launching the Pdf file. System.Diagnostics.Process.Start("Action.pdf"); } private static PdfLayoutResult DrawTable(PdfPageBase page, float y) { PdfBrush brush1 = PdfBrushes.Black; //create data table PdfTable table = new PdfTable(); table.Style.CellPadding = 2; table.Style.BorderPen = new PdfPen(brush1, 0.75f); table.Style.DefaultStyle.BackgroundBrush = PdfBrushes.SkyBlue; table.Style.DefaultStyle.Font = new PdfTrueTypeFont(new Font("Arial", 10f)); table.Style.AlternateStyle = new PdfCellStyle(); table.Style.AlternateStyle.BackgroundBrush = PdfBrushes.LightYellow; table.Style.AlternateStyle.Font = new PdfTrueTypeFont(new Font("Arial", 10f)); table.Style.HeaderSource = PdfHeaderSource.ColumnCaptions; table.Style.HeaderStyle.BackgroundBrush = PdfBrushes.CadetBlue; table.Style.HeaderStyle.Font = new PdfTrueTypeFont(new Font("Arial", 11f, FontStyle.Bold)); table.Style.HeaderStyle.StringFormat = new PdfStringFormat(PdfTextAlignment.Center); table.Style.ShowHeader = true; using (OleDbConnection conn = new OleDbConnection()) { conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=demo.mdb"; OleDbCommand command = new OleDbCommand(); command.CommandText = " select Description, OnHand, OnOrder, Cost, ListPrice from parts "; command.Connection = conn; using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(command)) { DataTable dataTable = new DataTable(); dataAdapter.Fill(dataTable); table.DataSourceType = PdfTableDataSourceType.TableDirect; table.DataSource = dataTable; } } float width = page.Canvas.ClientSize.Width - (table.Columns.Count + 1) * table.Style.BorderPen.Width; for (int i = 0; i < table.Columns.Count; i++) { if (i == 0) { table.Columns[i].Width = width * 0.40f * width; table.Columns[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle); } else { table.Columns[i].Width = width * 0.15f * width; table.Columns[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle); } } PdfTableLayoutFormat tableLayout = new PdfTableLayoutFormat(); tableLayout.Break = PdfLayoutBreakType.FitElement; tableLayout.Layout = PdfLayoutType.Paginate; PdfLayoutResult result = table.Draw(page, new PointF(0, y), tableLayout); y = result.Bounds.Bottom + 3; PdfBrush brush2 = PdfBrushes.Gray; PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 9f)); result.Page.Canvas.DrawString(String.Format("* {0} parts in the list.", table.Rows.Count), font2, brush2, 5, y); return result; } } }
Imports System.Data Imports System.Data.OleDb Imports System.Drawing Imports Spire.Pdf Imports Spire.Pdf.Actions Imports Spire.Pdf.Annotations Imports Spire.Pdf.General Imports Spire.Pdf.Graphics Imports Spire.Pdf.Tables Namespace Action 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("Part List", font1, brush1, page.Canvas.ClientSize.Width \ 2, y, format1) y = y + font1.MeasureString("Part List", format1).Height y = y + 2 'table top Dim tableTopDest As New PdfDestination(page) tableTopDest.Location = New PointF(0, y) tableTopDest.Mode = PdfDestinationMode.Location tableTopDest.Zoom = 1.0F 'Draw table Dim buttonFont As New PdfTrueTypeFont(New Font("Arial", 10.0F, FontStyle.Bold)) Dim buttonWidth As Single = 70 Dim buttonHeight As Single = buttonFont.Height * 1.5F Dim tableTop As Single = y Dim tableLayoutResult As PdfLayoutResult = DrawTable(page, y + buttonHeight + 5) 'table bottom Dim tableBottomDest As New PdfDestination(tableLayoutResult.Page) tableBottomDest.Location = New PointF(0, tableLayoutResult.Bounds.Bottom) tableBottomDest.Mode = PdfDestinationMode.Location tableBottomDest.Zoom = 1.0F 'go to table bottom Dim x As Single = page.Canvas.ClientSize.Width - buttonWidth Dim format2 As New PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle) Dim buttonBounds As New RectangleF(x, tableTop, buttonWidth, buttonHeight) page.Canvas.DrawRectangle(PdfBrushes.DarkGray, buttonBounds) page.Canvas.DrawString("To Bottom", buttonFont, PdfBrushes.CadetBlue, buttonBounds, format2) Dim action1 As New PdfGoToAction(tableBottomDest) Dim annotation1 As New PdfActionAnnotation(buttonBounds, action1) annotation1.Border = New PdfAnnotationBorder(0.75F) annotation1.Color = Color.LightGray TryCast(page, PdfNewPage).Annotations.Add(annotation1) 'go to table top Dim tableBottom As Single = tableLayoutResult.Bounds.Bottom + 5 buttonBounds = New RectangleF(x, tableBottom, buttonWidth, buttonHeight) tableLayoutResult.Page.Canvas.DrawRectangle(PdfBrushes.DarkGray, buttonBounds) tableLayoutResult.Page.Canvas.DrawString("To Top", buttonFont, _ PdfBrushes.CadetBlue, buttonBounds, format2) Dim action2 As New PdfGoToAction(tableTopDest) Dim annotation2 As New PdfActionAnnotation(buttonBounds, action2) annotation2.Border = New PdfAnnotationBorder(0.75F) annotation2.Color = Color.LightGray TryCast(tableLayoutResult.Page, PdfNewPage).Annotations.Add(annotation2) 'goto last page Dim action3 As New PdfNamedAction(PdfActionDestination.LastPage) doc.AfterOpenAction = action3 'script Dim script As String _ = "app.alert({" & " cMsg: ""Oh no, you want to leave me.""," _ & " nIcon: 3," & " cTitle: ""JavaScript Action""" & "});" Dim action4 As New PdfJavaScriptAction(script) doc.BeforeCloseAction = action4 'Save pdf file. doc.SaveToFile("Action.pdf") doc.Close() 'Launching the Pdf file. Process.Start("Action.pdf") End Sub Private Shared Function DrawTable(ByVal page As PdfPageBase, ByVal y As Single) As PdfLayoutResult Dim brush1 As PdfBrush = PdfBrushes.Black 'create data table Dim table As New PdfTable() table.Style.CellPadding = 2 table.Style.BorderPen = New PdfPen(brush1, 0.75F) table.Style.DefaultStyle.BackgroundBrush = PdfBrushes.SkyBlue table.Style.DefaultStyle.Font = New PdfTrueTypeFont(New Font("Arial", 10.0F)) table.Style.AlternateStyle = New PdfCellStyle() table.Style.AlternateStyle.BackgroundBrush = PdfBrushes.LightYellow table.Style.AlternateStyle.Font = New PdfTrueTypeFont(New Font("Arial", 10.0F)) table.Style.HeaderSource = PdfHeaderSource.ColumnCaptions table.Style.HeaderStyle.BackgroundBrush = PdfBrushes.CadetBlue table.Style.HeaderStyle.Font = New PdfTrueTypeFont(New Font("Arial", 11.0F, FontStyle.Bold)) table.Style.HeaderStyle.StringFormat = New PdfStringFormat(PdfTextAlignment.Center) table.Style.ShowHeader = True Using conn As New OleDbConnection() conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=demo.mdb" Dim command As New OleDbCommand() command.CommandText = " select Description, OnHand, OnOrder, Cost, ListPrice from parts " command.Connection = conn Using dataAdapter As New OleDbDataAdapter(command) Dim dataTable As New DataTable() dataAdapter.Fill(dataTable) table.DataSourceType = PdfTableDataSourceType.TableDirect table.DataSource = dataTable End Using End Using Dim width As Single _ = page.Canvas.ClientSize.Width - (table.Columns.Count + 1) * table.Style.BorderPen.Width For i As Integer = 0 To table.Columns.Count - 1 If i = 0 Then table.Columns(i).Width = width * 0.4F * width table.Columns(i).StringFormat _ = New PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle) Else table.Columns(i).Width = width * 0.15F * width table.Columns(i).StringFormat _ = New PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Middle) End If Next i Dim tableLayout As New PdfTableLayoutFormat() tableLayout.Break = PdfLayoutBreakType.FitElement tableLayout.Layout = PdfLayoutType.Paginate Dim result As PdfLayoutResult = table.Draw(page, New PointF(0, y), tableLayout) y = result.Bounds.Bottom + 3 Dim brush2 As PdfBrush = PdfBrushes.Gray Dim font2 As New PdfTrueTypeFont(New Font("Arial", 9.0F)) result.Page.Canvas.DrawString(String.Format("* {0} parts in the list.", _ table.Rows.Count), font2, brush2, 5, y) Return result End Function End Class End Namespace
Published in
Interaction