public static MemoryStream Generate(DPPVATBankExpenditureNoteDto data, int timezoneOffset) { var document = new Document(PageSize.A4.Rotate(), 20, 20, 20, 20); var stream = new MemoryStream(); var writer = PdfWriter.GetInstance(document, stream); document.Open(); SetTitle(document, data, timezoneOffset); SetTable(document, data, timezoneOffset); SetFooter(document); document.Close(); byte[] byteInfo = stream.ToArray(); stream.Write(byteInfo, 0, byteInfo.Length); stream.Position = 0; return(stream); }
private static void SetTitle(Document document, DPPVATBankExpenditureNoteDto data, int timezoneOffset) { var table = new PdfPTable(3) { WidthPercentage = 100, HorizontalAlignment = Element.ALIGN_LEFT }; table.SetWidths(new float[] { 6f, 3f, 3f }); var cellCenter = new PdfPCell() { Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_CENTER, VerticalAlignment = Element.ALIGN_CENTER }; var cellLeft = new PdfPCell() { Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_LEFT, VerticalAlignment = Element.ALIGN_CENTER }; cellCenter.Colspan = 3; cellCenter.Phrase = new Phrase("BUKTI PENGELUARAN BANK", _headerFont); table.AddCell(cellCenter); cellCenter.Phrase = new Phrase("\n", _headerFont); table.AddCell(cellCenter); cellCenter.Colspan = 1; cellLeft.Phrase = new Phrase("PT DAN LIRIS", _subHeaderFont); table.AddCell(cellLeft); cellLeft.Phrase = new Phrase("Tanggal", _subHeaderFont); table.AddCell(cellLeft); cellLeft.Phrase = new Phrase($": {data.Date.AddHours(timezoneOffset).ToString("dd/MMMM/yyyy")}", _subHeaderFont); table.AddCell(cellLeft); cellLeft.Phrase = new Phrase("Kel. Banaran, Kec. Grogol", _subHeaderFont); table.AddCell(cellLeft); cellLeft.Phrase = new Phrase("NO", _subHeaderFont); table.AddCell(cellLeft); cellLeft.Phrase = new Phrase($": {data.DocumentNo}", _subHeaderFont); table.AddCell(cellLeft); cellLeft.Phrase = new Phrase("Sukoharjo - 57100", _subHeaderFont); table.AddCell(cellLeft); cellLeft.Phrase = new Phrase("Dibayarkan ke", _subHeaderFont); table.AddCell(cellLeft); cellLeft.Phrase = new Phrase($": {data.Supplier.Name}", _subHeaderFont); table.AddCell(cellLeft); cellLeft.Phrase = new Phrase("", _subHeaderFont); table.AddCell(cellLeft); cellLeft.Phrase = new Phrase("Bank", _subHeaderFont); table.AddCell(cellLeft); cellLeft.Phrase = new Phrase($": {data.Bank.BankName} {data.Currency.Code} - A/C : {data.Bank.AccountNumber}", _subHeaderFont); table.AddCell(cellLeft); document.Add(table); }
private static void SetTable(Document document, DPPVATBankExpenditureNoteDto data, int timezoneOffset) { var table = new PdfPTable(5) { WidthPercentage = 100, HorizontalAlignment = Element.ALIGN_LEFT }; table.SetWidths(new float[] { 1f, 3f, 3f, 2f, 6f }); var cellCenter = new PdfPCell() { HorizontalAlignment = Element.ALIGN_CENTER, VerticalAlignment = Element.ALIGN_CENTER }; var cellCenterBorderless = new PdfPCell() { HorizontalAlignment = Element.ALIGN_CENTER, VerticalAlignment = Element.ALIGN_CENTER, Border = Rectangle.NO_BORDER }; var cellLeft = new PdfPCell() { HorizontalAlignment = Element.ALIGN_LEFT, VerticalAlignment = Element.ALIGN_CENTER }; var cellLeftBorderless = new PdfPCell() { HorizontalAlignment = Element.ALIGN_LEFT, VerticalAlignment = Element.ALIGN_CENTER, Border = Rectangle.NO_BORDER }; var cellRight = new PdfPCell() { HorizontalAlignment = Element.ALIGN_RIGHT, VerticalAlignment = Element.ALIGN_CENTER }; cellCenter.Phrase = new Phrase("No.", _subHeaderFont); table.AddCell(cellCenter); cellCenter.Phrase = new Phrase("No. SPB", _subHeaderFont); table.AddCell(cellCenter); cellCenter.Phrase = new Phrase("Kategori Barang", _subHeaderFont); table.AddCell(cellCenter); cellCenter.Phrase = new Phrase("Mata Uang", _subHeaderFont); table.AddCell(cellCenter); cellCenter.Phrase = new Phrase("Jumlah", _subHeaderFont); table.AddCell(cellCenter); var rowNumber = 1; var total = 0.0; foreach (var item in data.Items) { cellCenter.Phrase = new Phrase(rowNumber.ToString(), _normalFont); table.AddCell(cellCenter); cellLeft.Phrase = new Phrase(item.InternalNote.DocumentNo, _normalFont); table.AddCell(cellLeft); cellLeft.Phrase = new Phrase(string.Join("\n", item.InternalNote.Items.Select(element => $"- {element.Invoice.Category.Name}")), _subHeaderFont); table.AddCell(cellLeft); cellCenter.Phrase = new Phrase(item.InternalNote.Currency.Code, _subHeaderFont); table.AddCell(cellCenter); cellCenter.Phrase = new Phrase(item.InternalNote.Items.Sum(itemInvoice => itemInvoice.Invoice.Amount).ToString(), _subHeaderFont); table.AddCell(cellCenter); total += item.InternalNote.Items.Sum(itemInvoice => itemInvoice.Invoice.Amount); } cellCenter.Phrase = new Phrase("", _normalFont); table.AddCell(cellCenter); cellCenter.Phrase = new Phrase("", _normalFont); table.AddCell(cellCenter); cellCenter.Phrase = new Phrase("", _normalFont); table.AddCell(cellCenter); cellRight.Phrase = new Phrase("Total", _normalBoldFont); table.AddCell(cellRight); cellRight.Phrase = new Phrase(total.ToString(), _normalBoldFont); table.AddCell(cellRight); cellLeftBorderless.Colspan = 5; cellLeftBorderless.Phrase = new Phrase("\n", _normalBoldFont); table.AddCell(cellLeftBorderless); cellLeftBorderless.Colspan = 2; cellLeftBorderless.Phrase = new Phrase("Terbilang", _normalBoldFont); table.AddCell(cellLeftBorderless); cellLeftBorderless.Colspan = 3; cellLeftBorderless.Phrase = new Phrase($": {data.Currency.Code} {NumberToTextIDN.terbilang(total)}", _normalBoldFont); table.AddCell(cellLeftBorderless); cellLeftBorderless.Colspan = 5; cellLeftBorderless.Phrase = new Phrase("\n", _normalBoldFont); table.AddCell(cellLeftBorderless); document.Add(table); }