public static MemoryStream Generate(UnitAccountingDto unit, DateTimeOffset dueDate, int offset, List <BudgetCashflowItemDto> data)
        {
            var document = new Document(PageSize.A4, 20, 20, 20, 20);
            var stream   = new MemoryStream();
            var writer   = PdfWriter.GetInstance(document, stream);

            document.Open();

            SetTitle(document, unit, dueDate, offset);
            SetTable(document, data);

            document.Close();
            byte[] byteInfo = stream.ToArray();
            stream.Write(byteInfo, 0, byteInfo.Length);
            stream.Position = 0;

            return(stream);
        }
        private static void SetTitle(Document document, UnitAccountingDto unit, DateTimeOffset dueDate, int offset)
        {
            var company  = "PT DAN LIRIS";
            var title    = "LAPORAN BUDGET CASHFLOW";
            var unitName = "UNIT: ";

            if (unit != null)
            {
                unitName += unit.Name;
            }

            var cultureInfo = new CultureInfo("id-ID");
            var date        = $"PERIODE {dueDate.AddMonths(1).AddHours(offset).DateTime.ToString("MMMM yyyy", cultureInfo)}";

            var table = new PdfPTable(1)
            {
                WidthPercentage     = 100,
                HorizontalAlignment = Element.ALIGN_LEFT
            };

            var cell = new PdfPCell()
            {
                Border = Rectangle.NO_BORDER,
                HorizontalAlignment = Element.ALIGN_LEFT,
                Phrase = new Phrase(company, _headerFont),
            };

            table.AddCell(cell);

            cell.Phrase = new Phrase(title, _headerFont);
            table.AddCell(cell);

            cell.Phrase = new Phrase(unitName, _headerFont);
            table.AddCell(cell);

            cell.Phrase = new Phrase(date, _headerFont);
            table.AddCell(cell);

            cell.Phrase = new Phrase("\n", _headerFont);
            table.AddCell(cell);

            document.Add(table);
        }