Dear asad.ali, here’s my sample code, it’s pretty straight forward
using Aspose.Pdf;
using Aspose.Pdf.Text;
namespace AsposePDFEval
{
public class GenerateTable
{
public byte[] GeneratePDF()
{
byte[] rv = null;
using(var doc = new Document())
{
var page = doc.Pages.Add();
doc.PageInfo.Width = 600;
doc.PageInfo.Height = 800;
doc.PageInfo.Margin = new MarginInfo(20, 30, 20, 30);
var signatureTextFragment = InsertTable(page, doc);
var footer = new TextFragment($"\r\n\r\n\r\n\r\nReport generated at {DateTime.Now.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss \"GMT\"zzz")}");
Console.Write("TextFragment Position: " + signatureTextFragment.Position); //always (0,0)
footer.TextState.FontStyle = FontStyles.Italic;
doc.Pages.Last().Paragraphs.Add(footer);
rv = doc.SaveAsByteArray();
}
return rv;
}
private TextFragment InsertTable(Page page, Document doc)
{
var table = InsertFieldValueTable(page, "Information", false);
NewRow(table, "Name", "my name");
NewRow(table, "Approval", "my approval");
NewRow(table, "Decision", "Pending");
var rv = NewRow(table, "Digital Signature", "Siganture placeholder");
return rv;
}
public Table InsertFieldValueTable(Page page, string headerText, bool withBorder = false)
{
TextFragment header = new TextFragment(headerText);
page.Paragraphs.Add(header);
var table = new Table
{
BackgroundColor = Color.White,
ColumnWidths = "150 450",
};
if (withBorder)
{
table.Border = new BorderInfo(BorderSide.All, Color.Gray);
table.DefaultCellBorder = new BorderInfo(BorderSide.All, Color.LightGray);
table.DefaultCellPadding = new MarginInfo(2, 1, 2, 1);
}
page.Paragraphs.Add(table);
return table;
}
protected void NewRow(Table table, string fieldLabel, BaseParagraph value)
{
var row = table.Rows.Add();
row.DefaultCellPadding = new MarginInfo(5, 5, 5, 5);
var c1= row.Cells.Add(fieldLabel);
c1.Border = new BorderInfo(BorderSide.Bottom, Color.White);
c1.VerticalAlignment = VerticalAlignment.Top;
var c2= row.Cells.Add();
c2.BackgroundColor = Color.White;
c2.Border = new BorderInfo(BorderSide.Bottom, Color.LightGray);
c2.Paragraphs.Add(value);
}
/// <summary>
/// insert a row with field name column and a value column
/// </summary>
/// <param name="table"></param>
/// <param name="fieldLabel"></param>
/// <param name="value"></param>
protected TextFragment NewRow(Table table, string fieldLabel, string value)
{
var text = new TextFragment(value ?? string.Empty);
NewRow(table, fieldLabel, text);
return text;
}
}
public static class ExtensionClasses
{
public static byte[] SaveAsByteArray(this Aspose.Pdf.Document doc)
{
using (var rv = new MemoryStream())
{
doc.Save(rv);
return rv.ToArray();
}
}
}
}
Of course the entry point will call the GeneratePDF() function and save it to a file:
var outputFile = new GenerateTable().GeneratePDF();
System.IO.File.WriteAllBytes("out.pdf", outputFile);
System.Diagnostics.Process.Start("out.pdf");
out.pdf (2.5 KB)