사전 정의 된 회사 템플릿을 사용하여 PDF로 송장 리포트를 생성해야한다는 요구 사항이 있습니다. 나는 iTextSharp를 사용하여 SINGLE PAGE PDF 보고서를 생성/생성 할 수 있습니다.미리 정의 된 템플릿에서 여러 페이지 PDF 문서
문제점 : 인보이스 명세서가 여러 페이지에 걸쳐 인 경우 문제가 발생합니다. 보고서 (송장 명세서)를 다음 (2 번째) 페이지까지 연장 할 수 없습니다. 모든 데이터를 한 페이지에 저장할 수없는 경우 회사 템플릿을 사용하면서 두 번째 페이지에 작성해야합니다.
템플릿은 다음 경로에 존재 : 나는 문서를 만들 iTextSharp 라이브러리를 사용하고
HostingEnvironment.MapPath("~/Content/InvoiceTemplate/invoiceTemplate.pdf")
. 다음은 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();
}
}
당신이 모든 페이지에 대한 ** 템플리트 ** 같은-사용하고, 또는 ** 다른를 사용하고 있습니까 * * 두 번째 페이지의 템플릿? – kuujinbo
모든 페이지에 동일한 템플릿을 사용하고 있습니다. – 14578446