I have a requirement to generate invoice reports in PDF using some predefined company templates. I can create / generate SINGLE PAGE PDF reports using iTextSharp.
Problem: The problem occurs when the invoice operator covers MULTIFUNCTION PAGES . I cannot extend the report (invoice) to the next (second) page. If all the data cannot be placed on one page, this should be written on the 2nd page, while the company template is still used.
The template is present in the following way:
HostingEnvironment.MapPath("~/Content/InvoiceTemplate/invoiceTemplate.pdf")
I use the iTextSharp library to create documents. The following is the code used to generate the PDF:
public class pdfStatementController : Controller { Models.DYNAMICS_EXTEntities _db = new Models.DYNAMICS_EXTEntities(); // // GET: /pdfStatement/ public ActionResult SendPdfStatement(string InvoiceNumber) { try { InvoiceNumber = InvoiceNumber.Trim(); ObjectParameter[] parameters = new ObjectParameter[1]; parameters[0] = new ObjectParameter("InvoiceNumber", InvoiceNumber); List<Models.Statement> statementList = new List<Models.Statement>(); statementList = _db.ExecuteFunction<Models.Statement>("uspInvoiceStatement", parameters).ToList<Models.Statement>(); pdfStatementController.WriteInTemplate(statementList); return RedirectToAction("Invoice", "Invoice", new { id = statementList.FirstOrDefault().Customer_ID.ToString().Trim() }); } catch (Exception e) { return View("Error"); } } public static void WriteInTemplate(List<Models.Statement> statementList) { string invoiceNumber = statementList.FirstOrDefault().Invoice.ToString().Trim(); string month = null; string day = null; string year = null; PdfReader pdfReader = new PdfReader( HostingEnvironment.MapPath( "~/Content/InvoiceTemplate/invoiceTemplate.pdf")); FileStream fileStream = new FileStream( HostingEnvironment.MapPath( "~/Content/reports/" + invoiceNumber + ".pdf"), FileMode.Create); PdfStamper pdfStamper = new PdfStamper(pdfReader, fileStream); AcroFields pdfFields = pdfStamper.AcroFields; pdfFields.SetField("BillToCompany", statementList.FirstOrDefault().BillToCompany.ToString().Trim().ToUpper()); pdfFields.SetField("BillToContact", statementList.FirstOrDefault().BillToContact.ToString().Trim().ToUpper()); pdfFields.SetField("CustomerId", statementList.FirstOrDefault().Customer_ID); pdfFields.SetField("InvoiceNumber", statementList.FirstOrDefault().Invoice.ToString().Trim()); pdfFields.SetField("JobNumber", statementList.FirstOrDefault().JobNumber.ToString().Trim()); pdfFields.SetField("Caller", statementList.FirstOrDefault().Caller.ToString().Trim()); pdfStamper.FormFlattening = true; // generate a flat PDF pdfStamper.Close(); pdfReader.Close(); } }
source share