Browse Source

Improved content-direction examples

MarcinZiabek 3 years ago
parent
commit
3ac91c4971
2 changed files with 43 additions and 46 deletions
  1. 42 45
      QuestPDF.Examples/ContentDirectionExamples.cs
  2. 1 1
      QuestPDF/Helpers/Placeholders.cs

+ 42 - 45
QuestPDF.Examples/ContentDirectionExamples.cs

@@ -17,30 +17,29 @@ namespace QuestPDF.Examples
             return container =>
             {
                 container
-                    .Padding(20)
                     .MinimalBox()
-                    .Border(1)
                     .ExtendHorizontal()
                     .Table(table =>
                     {
                         table.ColumnsDefinition(columns =>
                         {
                             columns.RelativeColumn();
+                            columns.ConstantColumn(1);
                             columns.RelativeColumn();
                         });
                         
                         table.Header(header =>
                         {
                             header.Cell().ContentFromLeftToRight().Element(HeaderCell("Left-to-right"));
+                            header.Cell().LineVertical(1).LineColor(Colors.Grey.Medium);
                             header.Cell().ContentFromRightToLeft().Element(HeaderCell("Right-to-left"));
 
                             static Action<IContainer> HeaderCell(string label)
                             {
                                 return container => container
-                                    .Border(1)
                                     .BorderColor(Colors.Grey.Medium)
-                                    .Background(Colors.Grey.Lighten3)
-                                    .PaddingHorizontal(10)
+                                    .Background(Colors.Grey.Lighten2)
+                                    .PaddingHorizontal(15)
                                     .PaddingVertical(5)
                                     .Text(label)
                                     .FontSize(18)
@@ -49,15 +48,12 @@ namespace QuestPDF.Examples
                         });
 
                         table.Cell().Element(TestCell).ContentFromLeftToRight().Element(content);
-                        
-                        table.Cell()
-                            .Element(TestCell)
-                            .ContentFromRightToLeft()
-                            .Element(content);
+                        table.Cell().LineVertical(1).LineColor(Colors.Grey.Medium);
+                        table.Cell().Element(TestCell).ContentFromRightToLeft().Element(content);
                         
                         static IContainer TestCell(IContainer container)
                         {
-                            return container.Border(1).BorderColor(Colors.Grey.Medium).Padding(10);
+                            return container.Padding(15);
                         }
                     });
             };
@@ -79,46 +75,47 @@ namespace QuestPDF.Examples
                         page.Margin(20);
                         page.PageColor(Colors.White);
                         
-                        //page.ContentFromRightToLeft();
+                        page.DefaultTextStyle(x => x.FontFamily("Calibri").FontSize(20));
+                        page.ContentFromRightToLeft();
                         
                         page.Content().Column(column =>
                         {
                             column.Spacing(20);
-                            
-                            column.Item().Row(row =>
-                            {
-                                row.Spacing(10);
-                                
-                                row.AutoItem().AlignMiddle().Width(20).Height(20).Image(Placeholders.Image);
-                                
-                                row.RelativeItem()
-                                    .Text("Document title")
-                                    .FontSize(24).FontColor(Colors.Blue.Accent1).SemiBold();
-                            });
+
+                            column.Item()
+                                .Text("مثال على الفاتورة") // example invoice
+                                .FontSize(32).FontColor(Colors.Blue.Darken2).SemiBold();
                             
                             column.Item().Table(table =>
                             {
                                 table.ColumnsDefinition(columns =>
                                 {
                                     columns.RelativeColumn();
-                                    columns.RelativeColumn();
-                                    columns.RelativeColumn();
-                                    columns.RelativeColumn();
+                                    columns.ConstantColumn(75);
+                                    columns.ConstantColumn(100);
                                 });
 
-                                foreach (var i in Enumerable.Range(0, 9))
-                                {
-                                    var width = (i % 4 == 0) ? 2 : 1;
+                                table.Cell().Element(HeaderStyle).Text("وصف السلعة"); // item description
+                                table.Cell().Element(HeaderStyle).Text("كمية"); // quantity
+                                table.Cell().Element(HeaderStyle).Text("سعر"); // price
 
-                                    table
-                                        .Cell()
-                                        .ColumnSpan((uint)width)
-                                        .Background(i % 4 == 0 ? Colors.Grey.Lighten1 : Colors.Grey.Lighten2)
-                                        .Padding(5)
-                                        .AlignCenter()
-                                        .Text(i)
-                                        .FontSize(20);
+                                var items = new[]
+                                {
+                                    "دورة البرمجة", // programming course
+                                    "دورة تصميم الرسومات", // graphics design course
+                                    "تحليل وتصميم الخوارزميات", // analysis and design of algorithms
+                                };
+                                
+                                foreach (var item in items)
+                                {
+                                    var price = Placeholders.Random.NextDouble() * 100;
+                                    
+                                    table.Cell().Text(item);
+                                    table.Cell().Text(Placeholders.Random.Next(1, 10));
+                                    table.Cell().Text($"USD${price:F2}");
                                 }
+
+                                static IContainer HeaderStyle(IContainer x) => x.BorderBottom(1).PaddingVertical(5);
                             });
                         });
                     });
@@ -265,16 +262,16 @@ namespace QuestPDF.Examples
                 {
                     column.Spacing(10);
 
-                    column.Item().Background(Colors.Grey.Lighten3).Text("Default alignment").FontSize(13);
+                    column.Item().Text("Default alignment").FontSize(14).SemiBold();
                     column.Item().Element(ContentWithAlignment(null));
                     
-                    column.Item().Background(Colors.Grey.Lighten3).Text("Left alignment").FontSize(14);
+                    column.Item().Text("Left alignment").FontSize(14).SemiBold();
                     column.Item().Element(ContentWithAlignment(InlinedAlignment.Left));
                     
-                    column.Item().Background(Colors.Grey.Lighten3).Text("Center alignment").FontSize(14);
+                    column.Item().Text("Center alignment").FontSize(14).SemiBold();
                     column.Item().Element(ContentWithAlignment(InlinedAlignment.Center));
                     
-                    column.Item().Background(Colors.Grey.Lighten3).Text("Right alignment").FontSize(14);
+                    column.Item().Text("Right alignment").FontSize(14).SemiBold();
                     column.Item().Element(ContentWithAlignment(InlinedAlignment.Right));
                 });
                 
@@ -315,16 +312,16 @@ namespace QuestPDF.Examples
                 {
                     column.Spacing(10);
 
-                    column.Item().Background(Colors.Grey.Lighten3).Text("Default alignment").FontSize(13);
+                    column.Item().Text("Default alignment").FontSize(14).SemiBold();
                     column.Item().Element(ContentWithAlignment(null));
                     
-                    column.Item().Background(Colors.Grey.Lighten3).Text("Left alignment").FontSize(14);
+                    column.Item().Text("Left alignment").FontSize(14).SemiBold();
                     column.Item().Element(ContentWithAlignment(HorizontalAlignment.Left));
                     
-                    column.Item().Background(Colors.Grey.Lighten3).Text("Center alignment").FontSize(14);
+                    column.Item().Text("Center alignment").FontSize(14).SemiBold();
                     column.Item().Element(ContentWithAlignment(HorizontalAlignment.Center));
                     
-                    column.Item().Background(Colors.Grey.Lighten3).Text("Right alignment").FontSize(14);
+                    column.Item().Text("Right alignment").FontSize(14).SemiBold();
                     column.Item().Element(ContentWithAlignment(HorizontalAlignment.Right));
                 });
 

+ 1 - 1
QuestPDF/Helpers/Placeholders.cs

@@ -7,7 +7,7 @@ namespace QuestPDF.Helpers
 {
     public static class Placeholders
     {
-        public static readonly Random Random = new Random(0);
+        public static readonly Random Random = new Random();
         
         #region Word Cache