jt
2021-06-10 5d0d028456874576560552f5a5c4e8b801786f11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
using System;
using System.Data;
using System.Collections;
using System.Drawing;
using Gios.Pdf;
 
namespace Pdf_Example2
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
 
            // Starting instantiate the document.
            // Remember to set the Docuement Format. In this case, we specify width and height.
            PdfDocument myPdfDocument=new PdfDocument(PdfDocumentFormat.InCentimeters(29.7,21));
            
            // Now we create a Table of 300 lines, 4 columns and 4 points of Padding.
            PdfTable myPdfTable=myPdfDocument.NewTable(new Font("Verdana",8),1000,4,3);
 
            // Importing datas from the datatables... (also column names for the headers!)
            myPdfTable.ImportDataTable(Table);
 
            // Now we set our Graphic Design: Colors and Borders...
            myPdfTable.HeadersRow.SetColors(Color.White,Color.Navy);
            myPdfTable.SetColors(Color.Black,Color.White,Color.Gainsboro);
            myPdfTable.SetBorders(Color.Black,1,BorderType.CompleteGrid);
 
            // With just one method we can set the proportional width of the columns.
            // It's a "percentage like" assignment, but the sum can be different from 100.
            myPdfTable.SetColumnsWidth(new int[]{5,25,14,20});
 
            // Sets the format for correct date-time representation
            myPdfTable.Columns[2].SetContentFormat("{0:dd/MM}");
 
            // You can also set colors for a range of cells, in this case, a row:
            myPdfTable.Rows[9].SetColors(Color.Black,Color.LightGreen);
                    
        
            // Now we set some alignment... for the whole table and then, for a column.
            myPdfTable.SetContentAlignment(ContentAlignment.TopCenter);
            myPdfTable.Columns[1].SetContentAlignment(ContentAlignment.TopLeft);
            
            // This will load the image without placing into the document. The good thing
            // is that the image will be written into the document just once even if we put it
            // more times and in different sizes and places!
            PdfImage LogoImage=myPdfDocument.NewImage(@"..\..\logo.jpg");
 
            // Here we start the loop to generate the table...
            while (!myPdfTable.AllTablePagesCreated)
            {
                // we create a new page to put the generation of the new TablePage:
                PdfPage newPdfPage=myPdfDocument.NewPage();
                
                // now we start putting the logo into the right place with a high resoluton...
                newPdfPage.Add(LogoImage,60,60,300);
                
                // then we create the first table of the Page adding it to the layout.
                PdfTablePage newPdfTablePage1=
                    myPdfTable.CreateTablePage(new PdfArea(myPdfDocument, 50,140,200,420));
                newPdfPage.Add(newPdfTablePage1);
                
                // now, if we don't have finished yet...
                if (!myPdfTable.AllTablePagesCreated) 
                {
                    // we create a second table for putting it into the page...
                    PdfTablePage newPdfTablePage2=
                        myPdfTable.CreateTablePage(new PdfArea(myPdfDocument,280,40,240,520));
                    newPdfPage.Add(newPdfTablePage2);
                }
 
                // and again...
                if (!myPdfTable.AllTablePagesCreated) 
                {
                    // we put the third table into the page.
                    PdfTablePage newPdfTablePage3=
                        myPdfTable.CreateTablePage(new PdfArea(myPdfDocument,550,40,240,520));
                    newPdfPage.Add(newPdfTablePage3);
                }
                // remember to save the page to the document!
                newPdfPage.SaveToDocument();            
            }
            // and now we are ready to export the PDF!
            myPdfDocument.SaveToFile("Example2.pdf");
        }
        #region 1000 Rows Datatable Generation
        static System.Random r=new Random();
        static string GetAName
        {
            get
            {
                ArrayList al=new ArrayList();
                al.Add("John Doe");
                al.Add("Perry White");
                al.Add("Jackson");
                al.Add("Henry James Junior Ford");
                al.Add("Bill Norton");
                al.Add("Michal Johnathan Stewart ");
                al.Add("George Wilson");
                al.Add("Steven Edwards");
                return al[r.Next(0,al.Count)].ToString();
            }
        }
        static DataTable Table
        {
            get
            {
                DataTable dt=new DataTable();
                dt.Columns.Add("ID");
                dt.Columns.Add("Name");
                dt.Columns.Add("Date of Birth",typeof(DateTime));
                dt.Columns.Add("Phone Number");
                dt.Columns.Add("Mobile Phone");
                dt.Columns.Add("Password");
                
                for (int x=0;x<=1000;x++)
                {
                    DataRow dr=dt.NewRow();
                    dr["ID"]=x.ToString();
                    dr["Name"]=GetAName;
                    dr["Date of Birth"]=new DateTime(r.Next(1940,1984),r.Next(1,12),r.Next(1,28));
                    dr["Phone Number"]="555-"+r.Next(100000,999999).ToString();
                    dr["Mobile Phone"]="444-"+r.Next(100000,999999).ToString();
                    dr["Password"]=r.Next(10000000,99999999).ToString();
                    dt.Rows.Add(dr);
                }
 
                return dt;
            }
        }
        #endregion
    }
}