PlainTable.cs
- //
- // This code is part of Document Solutions for PDF demos.
- // Copyright (c) MESCIUS inc. All rights reserved.
- //
- using System;
- using System.IO;
- using System.Drawing;
- using System.Numerics;
- using System.Collections.Generic;
- using GrapeCity.Documents.Pdf;
- using GrapeCity.Documents.Text;
- using GrapeCity.Documents.Common;
- using GrapeCity.Documents.Drawing;
- using GrapeCity.Documents.Layout;
- using GCTEXT = GrapeCity.Documents.Text;
- using GCDRAW = GrapeCity.Documents.Drawing;
-
- namespace DsPdfWeb.Demos
- {
- // This example shows how to draw a plain table with random data,
- // using the GrapeCity.Documents.Drawing.TableRenderer and related classes.
- public class PlainTable
- {
- public int CreatePDF(Stream stream)
- {
- var doc = new GcPdfDocument();
- var p = doc.NewPage();
- p.Size = new SizeF(p.Size.Height, p.Size.Width);
- var g = p.Graphics;
-
- DrawTable(g, g.CanvasSize.Width, g.CanvasSize.Height);
-
- // Save the PDF:
- doc.Save(stream);
- return doc.Pages.Count;
- }
-
- class Record
- {
- public Record(string name, int take1, int take2, int take3)
- {
- Name = name;
- Take1 = take1;
- Take2 = take2;
- Take3 = take3;
- }
- public string Name { get; }
- public int Take1 { get; }
- public int Take2 { get; }
- public int Take3 { get; }
- }
-
- static void DrawTable(GcGraphics g, float pageWidth, float pageHeight)
- {
- var rnd = Common.Util.NewRandom();
- var records = new List<Record>();
- for (int i = 0; i < 10; ++i)
- records.Add(new Record(Common.Util.LoremIpsum(1, 1, 1, 1, 4), rnd.Next(100), rnd.Next(100), rnd.Next(100)));
-
- var host = new LayoutHost();
- var view = host.CreateView(pageWidth, pageHeight);
-
- var rt = view.CreateRect();
- rt.AnchorTopLeft(null, 36, 36);
-
- var ta = new TableRenderer(g,
- rt, FixedTableSides.TopLeft,
- rowCount: records.Count + 1,
- columnCount: 4,
- gridLineColor: Color.DarkGray,
- gridLineWidth: 1,
- rowMinHeight: 10);
-
- var cs = new CellStyle
- {
- PaddingTopBottom = 3,
- PaddingLeftRight = 4,
- FixedWidth = false,
- TextFormat = new TextFormat
- {
- Font = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "calibri.ttf")),
- FontSize = 18,
- FontSizeInGraphicUnits = true
- }
- };
- var csHeader = new CellStyle(cs)
- {
- PaddingRight = 9,
- ParagraphAlignment = ParagraphAlignment.Center,
- TextAlignment = TextAlignment.Center,
- };
- var csName = new CellStyle(cs)
- {
- MaxWidth = pageWidth / 2,
- };
- var csNumber = new CellStyle(cs)
- {
- TextAlignment = TextAlignment.Trailing
- };
-
- ta.DefaultCellStyle = csHeader;
- ta.AddCell(0, 0, "Name");
- ta.AddCell(0, 1, "Take 1\nThe Good");
- ta.AddCell(0, 2, "Take 2\nThe Bad");
- ta.AddCell(0, 3, "Take 3\nThe Ugly");
-
- ta.DefaultCellStyle = csNumber;
- for (int i = 0; i < records.Count; i++)
- {
- var p = records[i];
- int r = i + 1;
- ta.AddCell(csName, r, 0, p.Name);
- ta.AddCell(r, 1, p.Take1.ToString());
- ta.AddCell(r, 2, p.Take2.ToString());
- ta.AddCell(r, 3, p.Take3.ToString());
- }
-
- ta.ApplyCellConstraints();
- ta.Render();
- }
- }
- }
-