Многостраничный документ PDF из предопределенного шаблона

У меня есть требование создавать отчеты о счетах в формате PDF с использованием некоторых предопределенных шаблонов компании. Я могу создавать / генерировать ОДНОСТРАНИЧНЫЕ отчеты в формате PDF с помощью iTextSharp.

Проблема: проблема возникает, когда выписка по счету охватывает НЕСКОЛЬКО СТРАНИЦ . Я не могу перенести отчет (счет-фактуру) на следующую (вторую) страницу. Если все данные не могут быть размещены на одной странице, их следует записать на 2-й странице, по-прежнему используя шаблон компании.

Шаблон находится по следующему пути:

HostingEnvironment.MapPath("~/Content/InvoiceTemplate/invoiceTemplate.pdf")

Я использую библиотеку iTextSharp для создания документов. Ниже приведен код, использованный для создания 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();
    }
}
6
задан Perception 7 May 2012 в 22:11
поделиться