Skip to content

Instantly share code, notes, and snippets.

@omeraydemir
Created March 2, 2020 00:16
Show Gist options
  • Save omeraydemir/704dbfcb02ed289d0b9704b64571f872 to your computer and use it in GitHub Desktop.
Save omeraydemir/704dbfcb02ed289d0b9704b64571f872 to your computer and use it in GitHub Desktop.
static void CreateSection(string filePath, DataTable dataTable)
{
// Pdf belgemizin yönünü belirliyoruz (dikey, yatay)
document.DefaultPageSetup.Orientation = Orientation.Portrait;
Section section = document.AddSection();
Image image = section.AddImage(Path.Combine(Environment.CurrentDirectory, "ekmob_logo.jpg"));
image.Top = ShapePosition.Top;
image.Left = ShapePosition.Right;
image.Width = 150;
image.Height = 42;
//Sayfamıza bir "Image" yerleştiriyoruz.
Paragraph paragraph = section.AddParagraph();
paragraph.AddLineBreak();
paragraph.AddLineBreak();
//İki satırlık boşluk bırakıyoruz
table = section.AddTable();
table.Style = "Table";
//Section'a bir tablo olşturuyorum.
Column columnHeaderSub;
columnHeaderSub = table.AddColumn(Unit.FromCentimeter(5.43));
columnHeaderSub.Format.Alignment = ParagraphAlignment.Left;
columnHeaderSub = table.AddColumn(Unit.FromCentimeter(5.43));
columnHeaderSub.Format.Alignment = ParagraphAlignment.Left;
columnHeaderSub = table.AddColumn(Unit.FromCentimeter(5.43));
columnHeaderSub.Format.Alignment = ParagraphAlignment.Left;
//Tabloma Alıcı, Satıcı ve Satış bilgileri olacak şekilde 3 kolon oluşturuyorum.
//Sayfa genişliğini 16,3 olarak belirledim ve 3 kolon oluşturduğum için 16,3/3 = 5.43 olarak her kolona genişlik verdim.
Row rowHeaderSub = table.AddRow();
//Tablomdaki 3 kolona veri eklemek için satır oluşturuyorum.
rowHeaderSub.Cells[0].AddParagraph("Alıcı");
rowHeaderSub.Cells[0].Format.Font.Color = Color.FromRgb(190, 37, 76);
rowHeaderSub.Cells[0].Format.Font.Bold = true;
rowHeaderSub.Cells[0].Format.Alignment = ParagraphAlignment.Left;
rowHeaderSub.Cells[0].VerticalAlignment = VerticalAlignment.Center;
//Satırımın 0. index'ini oluşturuyorum.
rowHeaderSub.BottomPadding = 7;
rowHeaderSub.Cells[1].AddParagraph("Satıcı");
rowHeaderSub.Cells[1].Format.Font.Color = Color.FromRgb(190, 37, 76);
rowHeaderSub.Cells[1].Format.Font.Bold = true;
rowHeaderSub.Cells[1].Format.Alignment = ParagraphAlignment.Left;
rowHeaderSub.Cells[1].VerticalAlignment = VerticalAlignment.Center;
//Satırımın 1. index'ini oluşturuyorum.
rowHeaderSub.BottomPadding = 7;
rowHeaderSub.Cells[2].AddParagraph("Satış Bilgileri");
rowHeaderSub.Cells[2].Format.Font.Color = Color.FromRgb(190, 37, 76);
rowHeaderSub.Cells[2].Format.Font.Bold = true;
rowHeaderSub.Cells[2].Format.Alignment = ParagraphAlignment.Left;
rowHeaderSub.Cells[2].VerticalAlignment = VerticalAlignment.Center;
//Satırımın 2. index'ini oluşturuyorum.
rowHeaderSub = table.AddRow();
rowHeaderSub.VerticalAlignment = VerticalAlignment.Center;
rowHeaderSub.Format.Alignment = ParagraphAlignment.Left;
//Aynı tablomdali kolonlar için bir satır daha oluşturuyorum ve yatay da sola, dikey de ortaya hizalıyorum.
rowHeaderSub.Cells[0].AddParagraph(Faker.NameFaker.FirstName() + " " + Faker.NameFaker.LastName());
rowHeaderSub.Cells[1].AddParagraph(Faker.CompanyFaker.Name());
rowHeaderSub.Cells[2].AddParagraph("Tarih: " + Faker.DateTimeFaker.DateTime());
//Satırımın 0, 1 ve 2. indexlerine gerekli bilgileri veriyorum.
rowHeaderSub = table.AddRow();
rowHeaderSub.VerticalAlignment = VerticalAlignment.Center;
rowHeaderSub.Format.Alignment = ParagraphAlignment.Left;
//Aynı tablomdali kolonlar için bir satır daha oluşturuyorum ve yatay da sola, dikey de ortaya hizalıyorum.
rowHeaderSub.Cells[0].AddParagraph(Faker.LocationFaker.Country() + ", " + Faker.LocationFaker.City() + ", " + Faker.LocationFaker.StreetName());
rowHeaderSub.Cells[1].AddParagraph(Faker.LocationFaker.Country() + ", " + Faker.LocationFaker.City() + ", " + Faker.LocationFaker.StreetName());
rowHeaderSub.Cells[2].AddParagraph("Gerçekleşme Tarihi: " + DateTime.Now.ToShortDateString());
//Satırımın 0, 1 ve 2. indexlerine gerekli bilgileri veriyorum.
rowHeaderSub = table.AddRow();
rowHeaderSub.VerticalAlignment = VerticalAlignment.Center;
rowHeaderSub.Format.Alignment = ParagraphAlignment.Left;
//Aynı tablomdali kolonlar için bir satır daha oluşturuyorum ve yatay da sola, dikey de ortaya hizalıyorum.
rowHeaderSub.Cells[0].AddParagraph(Faker.PhoneFaker.Phone());
rowHeaderSub.Cells[1].AddParagraph(Faker.PhoneFaker.Phone());
rowHeaderSub.Cells[2].AddParagraph("Tutar: " + Faker.NumberFaker.Number(10000) + " TL");
//Satırımın 0, 1 ve 2. indexlerine gerekli bilgileri veriyorum.
paragraph = section.AddParagraph();
paragraph.AddLineBreak();
paragraph.AddLineBreak();
//İki satır booşluk bırakıyorum.
table = section.AddTable();
table.Style = "Table";
//Sipariş detaylarını yazdırabilmek için bir tablo daha oluşturuyorum.
Column column;
foreach (DataColumn col in dataTable.Columns)
{
column = table.AddColumn(Unit.FromCentimeter(16.3 / dataTable.Columns.Count)); //16,3 sayfa genişliğim / kolon sayısı
column.Format.Alignment = ParagraphAlignment.Left;
//GetInvoiceContent fonksiyonundan gelen kolon sayısı kadar tabloma kolon ekliyorum.
}
Row row = table.AddRow();
row.TopPadding = 7;
row.BottomPadding = 7;
//Yeni oluşturduğum tabloya ilk satırı ekliyorum. Bu satırı tablonun başlık kısmı olarak kullanacağım.
for (int i = 0; i < dataTable.Columns.Count; i++)
{
row.Cells[i].AddParagraph(dataTable.Columns[i].ColumnName);
row.Cells[i].Format.Font.Color = Colors.White;
row.Cells[i].Format.Font.Bold = true;
row.Cells[i].Format.Alignment = ParagraphAlignment.Left;
row.Cells[i].VerticalAlignment = VerticalAlignment.Center;
row.Cells[i].Shading.Color = Color.FromRgb(190, 37, 76);
//tablonun başlıklarını datatable da ki kolonların isimlerinden alıyorum
}
paragraph = section.Footers.Primary.AddParagraph();
paragraph.AddLineBreak();
paragraph.Format.SpaceBefore = "-1cm";
//Bölümüme bir paragraf ekliyorum ve bir satır boşluk bırakıyorum. Daha sonra 1 cm daha aşağıdan başlaması için üstten -1 cm veriyorum.
paragraph = section.Footers.Primary.AddParagraph();
paragraph.AddText("Örnek pdf belgesi - www.ekmob.com");
paragraph.Format.Font.Size = 10;
paragraph.Format.Font.Color = Colors.LightGray;
paragraph.Format.Alignment = ParagraphAlignment.Left;
//Bir paragraf daha oluşturuyorum ve istediğim bir metni yazıyorum.
paragraph = section.Footers.Primary.AddParagraph();
paragraph.AddPageField();
paragraph.Format.Font.Size = 10;
paragraph.Format.Font.Color = Colors.LightGray;
paragraph.Format.Alignment = ParagraphAlignment.Right;
//Bir paragraf daha ekliyorum ve sayfa numarasını yazdırıyorum.
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment