Как добавить некоторые ячейки в верхний и Нижний колонтитулы в pdf с помощью itextsharp . Пожалуйста, найдите мой код ниже
protected void generatepdfBtn_Click(object sender, EventArgs e) { try { gvSampleReport.Visible = true; gvSampleReportQuality.Visible = true; gvPageLoad.Visible = false; if (ValidateDataPDF()) { DataTable dtQPDF = new DataTable(); dtQPDF = BindPDFData(Convert.ToString(ViewState["txtMemoNo"])); DataTable dtRange = new DataTable(); DataTable dtRawWithRounded = new DataTable(); DataTable dtQualityWithRaounded = new DataTable(); dtRange = objRMNAS004_BAL.GetReportRange(txtMemoNo.Text.Trim(), ddlNRDLab.SelectedValue); DataTable dtOre = new DataTable(); dtOre = objRMNAS004_BAL.GetDisplayResult(txtMemoNo.Text.Trim(), string.Empty, ddlNRDLab.SelectedValue); DataTable dtRangeOre = new DataTable(); dtRangeOre = objRMNAS004_BAL.GetOreNABLRange_BAL(ddlNRDLab.SelectedValue, dtOre.Rows[0]["SMA_ORE_TYPE"].ToString()); for (int rowNo = 0; rowNo < dtQPDF.Rows.Count; rowNo++) { int columnNo = 14; for (columnNo = 14; columnNo < dtQPDF.Columns.Count; columnNo++) { var paramname = dtQPDF.Columns[columnNo].ColumnName; var roundupNo = (from x in dtRange.AsEnumerable() where x.Field<string>("LPA_PARAM_CD") == paramname.ToString() && x.Field<string>("lpa_test_id") == dtQPDF.Rows[rowNo]["sma_test_id"].ToString() select x.Field<string>("LPA_UOM")).ToList<string>(); if ((roundupNo != null) && (roundupNo.Count > 0)) { if (dtQPDF.Rows[rowNo][columnNo].ToString() != "") { dtQPDF.Rows[rowNo][columnNo] = Math.Round(Convert.ToDecimal(dtQPDF.Rows[rowNo][columnNo].ToString()), Convert.ToInt16(roundupNo[0])); } } } } //IsDisplayClicked = true; if (dtQPDF.Rows.Count > 0) { using (MemoryStream ms = new MemoryStream()) { string lab = ddlNRDLab.SelectedItem.Value; DataTable dtHeader1 = new DataTable(); DataTable dtHeader2 = new DataTable(); dtHeader1 = objRMNAS004_BAL.GetReportHeader1(lab, ddlSPUArea.SelectedValue); dtHeader2 = objRMNAS004_BAL.GetReportHeader2(lab, dtQPDF.Rows[0]["SMA_TEST_ID"].ToString()); Document document = new Document(PageSize.A3, 15, 15, 30, 30); PdfWriter writer = PdfWriter.GetInstance(document, ms); PageEventHelper pageEventHelper = new PageEventHelper(); writer.PageEvent = pageEventHelper; document.Open(); var Contenttable = new PdfPTable(3); Contenttable.WidthPercentage = 100f; PdfPCell cell1 = new PdfPCell(); cell1.Border = Rectangle.NO_BORDER; var cell1para1 = new Paragraph(dtHeader1.Rows[0]["rma_rept_hdr"].ToString()); cell1para1.Alignment = Element.ALIGN_LEFT; var cell1para2 = new Paragraph(dtHeader1.Rows[0][0].ToString()); cell1para2.Alignment = Element.ALIGN_LEFT; var cell1para3 = new Paragraph(dtHeader1.Rows[0][1].ToString()); cell1para3.Alignment = Element.ALIGN_LEFT; /////Added by Satyajit var cell1para4 = new Paragraph(dtHeader1.Rows[0][7].ToString()); cell1para4.Alignment = Element.ALIGN_LEFT; cell1.AddElement(cell1para1); cell1.AddElement(cell1para3); cell1.AddElement(cell1para2); cell1.AddElement(cell1para4); Contenttable.AddCell(cell1); PdfPCell cell2 = new PdfPCell(); cell2.Border = Rectangle.NO_BORDER; string imageURL = Server.MapPath(".") + "/images/images.png"; iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(imageURL); jpg.ScaleToFit(100f, 140f); jpg.Alignment = Element.ALIGN_CENTER; var cell2para2 = new Paragraph("TEST REPORT"); cell2para2.Alignment = Element.ALIGN_CENTER; cell2para2.Font = FontFactory.GetFont("Verdana", 18f, iTextSharp.text.Font.BOLD); cell2.AddElement(jpg); cell2.AddElement(cell2para2); Contenttable.AddCell(cell2); PdfPCell cell3 = new PdfPCell(); cell3.Border = Rectangle.NO_BORDER; var cell3para3 = new Paragraph("FORMAT NO: " + dtHeader2.Rows[0]["LTM_FORMAT_NO"].ToString()); cell3para3.Alignment = Element.ALIGN_LEFT; var cell3para4 = new Paragraph("REVISION NO: " + dtHeader1.Rows[0][3].ToString()); cell3para4.Alignment = Element.ALIGN_LEFT; cell3.AddElement(cell3para3); if (ddlNRDLab.SelectedValue != "E" && ddlNRDLab.SelectedValue != "W") { cell3.AddElement(cell3para4); } if (!string.IsNullOrEmpty(dtHeader2.Rows[0]["LTM_NABL_URL"].ToString())) { string imageURLNABL = Server.MapPath(".") + "/images/" + dtHeader2.Rows[0]["LTM_NABL_URL"].ToString(); iTextSharp.text.Image jpgNABL = iTextSharp.text.Image.GetInstance(imageURLNABL); jpgNABL.ScaleToFit(100f, 100f); jpgNABL.Alignment = Element.ALIGN_CENTER; jpgNABL.PaddingTop = 20; cell3.AddElement(jpgNABL); } Contenttable.AddCell(cell3); var headertable = new PdfPTable(2); headertable.WidthPercentage = 100f; headertable.SetTotalWidth(new float[] { 30f, 70f }); PdfPCell cell4 = new PdfPCell(); cell4.PaddingBottom = 40; cell4.PaddingTop = 40; cell4.Border = Rectangle.NO_BORDER; var cell4_0 = new Paragraph("UNIQUE LAB REPORT NO."); cell4_0.Alignment = Element.ALIGN_LEFT; var cell4_1 = new Paragraph("TEST REPORT NO.");//Generate PDF cell4_1.Alignment = Element.ALIGN_LEFT; var cell4_2_1 = new Paragraph("DATE OF ANALYSIS"); cell4_2_1.Alignment = Element.ALIGN_LEFT; var cell4_2 = new Paragraph("DATE OF REPORTING"); cell4_2.Alignment = Element.ALIGN_LEFT; var cell4_3 = new Paragraph("NAME & ADDRESS OF CUSTOMER"); cell4_3.Alignment = Element.ALIGN_LEFT; var cell4_4 = new Paragraph("CUSTOMER REFERENCE NO"); cell4_4.Alignment = Element.ALIGN_LEFT; var cell4_5 = new Paragraph("SAMPLE PARTICULAR"); cell4_5.Alignment = Element.ALIGN_LEFT; var cell4_6 = new Paragraph("DATE OF RECEIPT"); cell4_6.Alignment = Element.ALIGN_LEFT; var cell4_7 = new Paragraph("NO. OF SAMPLES"); cell4_7.Alignment = Element.ALIGN_LEFT; var cell4_8 = new Paragraph("CONDITION OF SAMPLES"); cell4_8.Alignment = Element.ALIGN_LEFT; var cell4_9 = new Paragraph("TEST METHOD"); cell4_9.Alignment = Element.ALIGN_LEFT; PdfPCell cell5 = new PdfPCell(); cell5.PaddingBottom = 40; cell5.PaddingTop = 40; var t = DateTime.ParseExact(dtQPDF.Rows[0][0].ToString().Substring(7, 2), "mm", System.Globalization.CultureInfo.InvariantCulture); DateTime Date = new DateTime(2000, Convert.ToInt32(dtQPDF.Rows[0][0].ToString().Substring(7, 2)), 1); var strDate = Date.ToString("MMM").ToUpper(); cell5.Border = Rectangle.NO_BORDER; var cell5_0 = new Paragraph(": " + dtQPDF.Rows[0][10].ToString()); cell5_0.Alignment = Element.ALIGN_LEFT; var cell5_1 = new Paragraph(": TSL/LAB/" + dtHeader1.Rows[0][5] + "/" + ddlSPUArea.SelectedItem.Value + "/" + dtQPDF.Rows[0][0].ToString().Substring(3, 4) + "/" + strDate + "/" + dtQPDF.Rows[0][0].ToString().Substring(10)); cell5_1.Alignment = Element.ALIGN_LEFT; string[] TobeDistinctAnalysisDate = { "SMA_ANAL_DT" }; DataTable dtDistinctReportingDate = GetDistinctRecords(dtQPDF, TobeDistinctAnalysisDate); string ReportingDates = string.Empty; for (int i = 0; i <= dtDistinctReportingDate.Rows.Count - 1; i++) { if (i == 0) { ReportingDates = ReportingDates + dtDistinctReportingDate.Rows[i][0].ToString(); } else { ReportingDates = ReportingDates + " & " + dtDistinctReportingDate.Rows[i][0].ToString(); } } var cell5_2_1 = new Paragraph(": " + ReportingDates); cell5_2_1.Alignment = Element.ALIGN_LEFT; DataTable dt = new DataTable(); dt = objRMNAS004_BAL.GetDisplayResult(txtMemoNo.Text.Trim(), string.Empty, ddlNRDLab.SelectedValue); string[] TobeDistinctReportingDate = { "SMA_REPT_DT" }; dtDistinctReportingDate = GetDistinctRecords(dtQPDF, TobeDistinctReportingDate); ReportingDates = string.Empty; for (int i = 0; i <= dtDistinctReportingDate.Rows.Count - 1; i++) { if (i == 0) { ReportingDates = ReportingDates + dtDistinctReportingDate.Rows[i][0].ToString(); } else { ReportingDates = ReportingDates + " & " + dtDistinctReportingDate.Rows[i][0].ToString(); } } var cell5_2 = new Paragraph(": " + ReportingDates); cell5_2.Alignment = Element.ALIGN_LEFT; //var cell5_3 = new Paragraph(": NATURAL RESOURCE DIVISION"); var cell5_3 = new Paragraph(": " + dtHeader1.Rows[0][6]); cell5_3.Alignment = Element.ALIGN_LEFT; var cell5_4 = new Paragraph(": " + dtQPDF.Rows[0][0].ToString()); cell5_4.Alignment = Element.ALIGN_LEFT; string sampleParticular = dtQPDF.Rows[0][6].ToString().ToUpper() + " ORE"; if (ddlNRDLab.SelectedValue == "W") { if (dt.Rows.Count > 0 && dt.Rows[0]["SMA_ORE_TYPE"].ToString().Trim() == "Manganese") { sampleParticular = dtQPDF.Rows[0][6].ToString().ToUpper() + " ORE"; } else sampleParticular = dtQPDF.Rows[0][6].ToString().ToUpper(); } var cell5_5 = new Paragraph(": " + sampleParticular); cell5_5.Alignment = Element.ALIGN_LEFT; var cell5_6 = new Paragraph(": " + DateTime.Parse(dtQPDF.Rows[0][4].ToString()).ToString("dd MMM yyyy")); cell5_6.Alignment = Element.ALIGN_LEFT; var cell5_7 = new Paragraph(": " + dtQPDF.Rows.Count); cell5_7.Alignment = Element.ALIGN_LEFT; var cell5_8 = new Paragraph(": " + dtQPDF.Rows[0][7].ToString().ToUpper()); cell5_8.Alignment = Element.ALIGN_LEFT; string TestMethod = ddlNRDLab.SelectedValue == "S" ? dtRangeOre.Rows[0]["OPA_Test_Method"].ToString() : dtHeader2.Rows[0]["LTM_TEST_METHOD"].ToString(); var cell5_9 = new Paragraph(": " + TestMethod);//dtHeader2.Rows[0]["LTM_TEST_METHOD"] cell5_9.Alignment = Element.ALIGN_LEFT; //cell4.AddElement(cell4_0); if ((ddlSPUArea.SelectedValue != "J3" && ddlSPUArea.SelectedValue != "N3" && ddlSPUArea.SelectedValue != "W3" && ddlSPUArea.SelectedValue != "S3")) //&& (dt.Rows.Count > 0 && dt.Rows[0]["SMA_ORE_TYPE"].ToString().Trim() == "Manganese" && ddlNRDLab.SelectedValue == "W")) { if(dtRangeOre.Rows[0]["OPA_ULR_ACTIVE"].ToString().Trim()=="Y") { cell4.AddElement(cell4_0); } // if (ddlNRDLab.SelectedValue == "W") //{ // if (dt.Rows.Count > 0 && dt.Rows[0]["SMA_ORE_TYPE"].ToString().Trim() == "Manganese") // { // cell4.AddElement(cell4_0); // } //} //else // cell4.AddElement(cell4_0); } if (ddlNRDLab.SelectedValue == "S") { if (dtRangeOre.Rows[0]["OPA_ULR_ACTIVE"].ToString().Trim() == "N") { cell4.AddElement(cell4_1); } } else cell4.AddElement(cell4_1); cell4.AddElement(cell4_2_1); cell4.AddElement(cell4_2); cell4.AddElement(cell4_3); cell4.AddElement(cell4_4); cell4.AddElement(cell4_5); cell4.AddElement(cell4_6); cell4.AddElement(cell4_7); cell4.AddElement(cell4_8); cell4.AddElement(cell4_9); //cell5.AddElement(cell5_0); if ((ddlSPUArea.SelectedValue != "J3" && ddlSPUArea.SelectedValue != "N3" && ddlSPUArea.SelectedValue != "W3" && ddlSPUArea.SelectedValue != "S3")) //&& (dt.Rows.Count > 0 && dt.Rows[0]["SMA_ORE_TYPE"].ToString().Trim() == "Manganese" && ddlNRDLab.SelectedValue == "W")) { if (dtRangeOre.Rows[0]["OPA_ULR_ACTIVE"].ToString().Trim() == "Y") { cell5.AddElement(cell5_0); } } if (ddlNRDLab.SelectedValue == "S") { if (dtRangeOre.Rows[0]["OPA_ULR_ACTIVE"].ToString().Trim() == "N") { cell5.AddElement(cell5_1); } } else cell5.AddElement(cell5_1); cell5.AddElement(cell5_2_1); cell5.AddElement(cell5_2); cell5.AddElement(cell5_3); cell5.AddElement(cell5_4); cell5.AddElement(cell5_5); cell5.AddElement(cell5_6); cell5.AddElement(cell5_7); cell5.AddElement(cell5_8); cell5.AddElement(cell5_9); headertable.AddCell(cell4); headertable.AddCell(cell5); var GridTable = new PdfPTable(1); int ColCount; if (ddlSPUArea.SelectedValue == "W2") { ColCount = 13; GridTable = new PdfPTable(dtQPDF.Columns.Count - 12); } else { ColCount = 14; GridTable = new PdfPTable(dtQPDF.Columns.Count - 13); } GridTable.WidthPercentage = 100f; PdfPCell cell45 = new PdfPCell(new Phrase("Sl No.")); cell45.BackgroundColor = new iTextSharp.text.BaseColor(204, 204, 204); cell45.NoWrap = true; cell45.VerticalAlignment = Element.ALIGN_CENTER; cell45.HorizontalAlignment = Element.ALIGN_CENTER; cell45.Padding = 5f; GridTable.AddCell(cell45); for (int j = 0; j < dtQPDF.Columns.Count; j++) { string colName = string.Empty; if (j != 0 && !(j > 1 && j <= 13)) { if (j == 1) { colName = "Sample No"; PdfPCell cell = new PdfPCell(new Phrase(colName)); cell.BackgroundColor = new iTextSharp.text.BaseColor(204, 204, 204); //cell.NoWrap = true; cell.VerticalAlignment = Element.ALIGN_CENTER; cell.HorizontalAlignment = Element.ALIGN_CENTER; cell.Padding = 2f; GridTable.AddCell(cell); } else if (j == 14) { if (ddlSPUArea.SelectedValue == "W2") { colName = "Lot No"; PdfPCell cell = new PdfPCell(new Phrase(colName)); cell.BackgroundColor = new iTextSharp.text.BaseColor(204, 204, 204); cell.NoWrap = false; cell.VerticalAlignment = Element.ALIGN_CENTER; cell.HorizontalAlignment = Element.ALIGN_CENTER; cell.Padding = 2f; GridTable.AddCell(cell); } } else { if (dtQPDF.Columns[j].ColumnName != "Cr/Fe" && dtQPDF.Columns[j].ColumnName != "Cr+6") { PdfPCell cell = new PdfPCell(new Phrase(dtQPDF.Columns[j].ColumnName + "%")); cell.BackgroundColor = new iTextSharp.text.BaseColor(204, 204, 204); cell.NoWrap = true; cell.VerticalAlignment = Element.ALIGN_CENTER; cell.HorizontalAlignment = Element.ALIGN_CENTER; cell.Padding = 2f; GridTable.AddCell(cell); } else { PdfPCell cell = new PdfPCell(new Phrase(dtQPDF.Columns[j].ColumnName)); cell.BackgroundColor = new iTextSharp.text.BaseColor(204, 204, 204); cell.NoWrap = true; cell.VerticalAlignment = Element.ALIGN_CENTER; cell.HorizontalAlignment = Element.ALIGN_CENTER; cell.Padding = 2f; GridTable.AddCell(cell); } } } } GridTable.HeaderRows = 1; for (int rowNo = 0; rowNo < dtQPDF.Rows.Count; rowNo++) { PdfPCell cellrow = new PdfPCell(new Phrase((rowNo + 1).ToString())); cellrow.NoWrap = true; cellrow.VerticalAlignment = Element.ALIGN_CENTER; cellrow.HorizontalAlignment = Element.ALIGN_CENTER; cellrow.Padding = 2f; GridTable.AddCell(cellrow); for (int columnNo = 0; columnNo < dtQPDF.Columns.Count; columnNo++) { if (columnNo != 0 && !(columnNo > 1 && columnNo <= ColCount))//FAP Joda 13 { if (dtRange.AsEnumerable().Any(row => dtQPDF.Columns[columnNo].ColumnName == row.Field<String>("LPA_PARAM_CD"))) { //DataTable dtOre = new DataTable(); //dtOre = objRMNAS004_BAL.GetDisplayResult(txtMemoNo.Text.Trim(), string.Empty, ddlNRDLab.SelectedValue); //if ((ddlNRDLab.SelectedValue == "W" && dtOre.Rows.Count > 0 && dtOre.Rows[0]["SMA_ORE_TYPE"].ToString().Trim() == "Manganese") || (ddlNRDLab.SelectedValue == "N") || (ddlNRDLab.SelectedValue == "S") || (ddlNRDLab.SelectedValue == "E")) //{ if (!String.IsNullOrEmpty(dtQPDF.Rows[rowNo][columnNo].ToString())) { if (Convert.ToString(dtRangeOre.Rows.OfType<DataRow>(). Where(r => (string)r["opa_param_cd"] == dtQPDF.Columns[columnNo].ColumnName).Select(r => r["opa_nabl_rnge_to"]).FirstOrDefault()) != "" && Convert.ToString(dtRangeOre.Rows.OfType<DataRow>(). Where(r => (string)r["opa_param_cd"] == dtQPDF.Columns[columnNo].ColumnName).Select(r => r["opa_nabl_rnge_fr"]).FirstOrDefault()) != "" && Convert.ToDouble(dtQPDF.Rows[rowNo][columnNo]) >= dtRangeOre.Rows.OfType<DataRow>(). Where(r => (string)r["opa_param_cd"] == dtQPDF.Columns[columnNo].ColumnName).Where(h => (string)h["opa_ore_type"] == dtOre.Rows[0]["SMA_ORE_TYPE"].ToString()).Select(r => (double)r["opa_nabl_rnge_fr"]).First() && Convert.ToDouble(dtQPDF.Rows[rowNo][columnNo]) <= dtRangeOre.Rows.OfType<DataRow>(). Where(r => (string)r["opa_param_cd"] == dtQPDF.Columns[columnNo].ColumnName).Where(h => (string)h["opa_ore_type"] == dtOre.Rows[0]["SMA_ORE_TYPE"].ToString()).Select(r => (double)r["opa_nabl_rnge_to"]).First() ) //if (Convert.ToString(dtRangeOre.Rows.OfType<DataRow>(). //Where(r => (string)r["opa_param_cd"] == dtQPDF.Columns[columnNo].ColumnName).Select(r => r["opa_nabl_rnge_to"]).FirstOrDefault()) != "" && Convert.ToString(dtRangeOre.Rows.OfType<DataRow>(). //Where(r => (string)r["opa_param_cd"] == dtQPDF.Columns[columnNo].ColumnName).Select(r => r["opa_nabl_rnge_fr"]).FirstOrDefault()) != "" //&& //Convert.ToDouble(dtQPDF.Rows[rowNo][columnNo]) >= dtRangeOre.Rows.OfType<DataRow>(). //Where(r => (string)r["opa_param_cd"] == dtQPDF.Columns[columnNo].ColumnName).Where(h => (string)h["lpa_test_id"] == dtQPDF.Rows[rowNo][9].ToString()).Select(r => (double)r["opa_nabl_rnge_fr"]).First() && //Convert.ToDouble(dtQPDF.Rows[rowNo][columnNo]) <= dtRangeOre.Rows.OfType<DataRow>(). //Where(r => (string)r["opa_param_cd"] == dtQPDF.Columns[columnNo].ColumnName).Where(h => (string)h["lpa_test_id"] == dtQPDF.Rows[rowNo][9].ToString()).Select(r => (double)r["opa_nabl_rnge_to"]).First() //) { PdfPCell cell = new PdfPCell(new Phrase(dtQPDF.Rows[rowNo][columnNo].ToString())); cell.NoWrap = true; cell.VerticalAlignment = Element.ALIGN_CENTER; cell.HorizontalAlignment = Element.ALIGN_CENTER; cell.Padding = 2f; GridTable.AddCell(cell); } else { PdfPCell cell = new PdfPCell(new Phrase("*" + dtQPDF.Rows[rowNo][columnNo].ToString())); cell.NoWrap = true; cell.VerticalAlignment = Element.ALIGN_CENTER; cell.HorizontalAlignment = Element.ALIGN_CENTER; cell.Padding = 2f; GridTable.AddCell(cell); } } else { PdfPCell cell = new PdfPCell(new Phrase(dtQPDF.Rows[rowNo][columnNo].ToString())); cell.NoWrap = true; cell.VerticalAlignment = Element.ALIGN_CENTER; cell.HorizontalAlignment = Element.ALIGN_CENTER; cell.Padding = 2f; GridTable.AddCell(cell); } } else { if (columnNo == 13) { if (ddlNRDLab.SelectedValue == "W") { PdfPCell cell = new PdfPCell(new Phrase(dtQPDF.Rows[rowNo][columnNo].ToString())); //cell.NoWrap = true; cell.VerticalAlignment = Element.ALIGN_CENTER; cell.HorizontalAlignment = Element.ALIGN_LEFT; cell.Padding = 2f; GridTable.AddCell(cell); } } else { PdfPCell cell = new PdfPCell(new Phrase(dtQPDF.Rows[rowNo][columnNo].ToString())); //cell.NoWrap = true; cell.VerticalAlignment = Element.ALIGN_CENTER; cell.HorizontalAlignment = Element.ALIGN_LEFT; cell.Padding = 2f; GridTable.AddCell(cell); } // } } } //else //{ // PdfPCell cell = new PdfPCell(new Phrase(dtQPDF.Rows[rowNo][columnNo].ToString())); // //cell.NoWrap = true; // cell.VerticalAlignment = Element.ALIGN_CENTER; // cell.HorizontalAlignment = Element.ALIGN_LEFT; // cell.Padding = 2f; // GridTable.AddCell(cell); //} } } //OuterGridTable.AddCell(GridTable); //var OutersignatureTable = new PdfPTable(1); //OutersignatureTable.WidthPercentage = 100f; var signatureTable = new PdfPTable(1); signatureTable.WidthPercentage = 95f; HRServices.ServiceSoapClient objHRService = new HRServices.ServiceSoapClient(); HRServices.EmpDetails[] objEmpDetails; HRServices.ArrayOfString objPerNo = new HRServices.ArrayOfString(); objPerNo.Add(objRMNAS004_BAL.GetReportedById(txtMemoNo.Text.Trim(), ddlNRDLab.SelectedValue)); string perno = objPerNo[0]; objEmpDetails = objHRService.getDetails(objPerNo); string RepByName = objEmpDetails[0].getsetFname + " " + objEmpDetails[0].getsetLname + " (" + objEmpDetails[0].getsetDesgDesc + " )"; PdfPCell cell6 = new PdfPCell(); cell6.Border = Rectangle.NO_BORDER; //cell6.PaddingBottom = 40; cell6.PaddingTop = 80f; var cell6_1_2 = new Paragraph(RepByName); cell6_1_2.Alignment = Element.ALIGN_RIGHT; var cell6_1_1 = new Paragraph("(" + objPerNo[0] + ")"); cell6_1_1.Alignment = Element.ALIGN_RIGHT; var cell6_1 = new Paragraph("AUTHORISED SIGNATORY"); cell6_1.Alignment = Element.ALIGN_RIGHT; //cell6.AddElement(cell6_1); LineSeparator underline = new LineSeparator(1, 20, BaseColor.BLACK, Element.ALIGN_RIGHT, -4); //cell6_1.Add(underline); cell6.AddElement(cell6_1_2); cell6.AddElement(cell6_1_1); cell6.AddElement(underline); cell6.AddElement(cell6_1); //cell6.DisableBorderSide(1); //cell6.DisableBorderSide(2); signatureTable.AddCell(cell6); //var OuterfooterTable = new PdfPTable(1); //OuterfooterTable.WidthPercentage = 100f; var footerTable = new PdfPTable(1); footerTable.WidthPercentage = 100f; PdfPCell cell7 = new PdfPCell(); cell7.Border = Rectangle.NO_BORDER; //cell7.PaddingBottom = 40; cell7.PaddingTop = 40f; //string s = dtHeader1.Rows[0][8].ToString(); //string Foo = ""; //// Split string on spaces. //// ... This will separate all the words. //string[] words = s.Split('.'); //foreach (string word in words) //{ // Foo = Foo + word + System.Environment.NewLine; //} //var cell7_1 = new Paragraph("THE RESULT RELATE ONLY TO THE SAMPLE TESTED"); //cell7_1.Alignment = Element.ALIGN_LEFT; //var cell7_2 = new Paragraph("* NOT IN THE SCOPE OF NABL"); //cell7_2.Alignment = Element.ALIGN_LEFT; var cell7_1 = new Paragraph(dtHeader1.Rows[0][8].ToString()); cell7_1.Alignment = Element.ALIGN_LEFT; cell7.AddElement(cell7_1); //System.Text.StringBuilder strRange = new System.Text.StringBuilder(); //for (int param = 0; param < dtRange.Rows.Count; param++) //{ // if (!String.IsNullOrEmpty(dtRange.Rows[param][1].ToString()) && !String.IsNullOrEmpty(dtRange.Rows[param][2].ToString())) // { // strRange.Append(dtRange.Rows[param][0] + "(" + dtRange.Rows[param][1] + "-" + dtRange.Rows[param][2] + ")."); // } //} //var cell7_3 = new Paragraph("RANGE IN %- " + strRange); if (ddlNRDLab.SelectedValue=="W" && dtOre.Rows[0]["SMA_ORE_TYPE"].ToString() == "Ferro Manganese" || dtOre.Rows[0]["SMA_ORE_TYPE"].ToString() == "Ferro Manganese Slag") { } else { var cell7_3 = new Paragraph(dtHeader1.Rows[0]["RMA_RPT_FTR3"].ToString()); cell7_3.Alignment = Element.ALIGN_LEFT; cell7.AddElement(cell7_3); } footerTable.AddCell(cell7); //var endOfPageTable = new PdfPTable(1); //endOfPageTable.WidthPercentage = 100f; //PdfPCell cell8 = new PdfPCell(); //cell8.Border = Rectangle.NO_BORDER; //cell8.PaddingTop = 40f; ////var cell8_1 = new Paragraph("***** End of Report *****"); ////cell8_1.Alignment = Element.ALIGN_CENTER; ////cell8.AddElement(cell8_1); //endOfPageTable.AddCell(cell8); document.Add(Contenttable); document.Add(headertable); document.Add(GridTable); document.Add(signatureTable); document.Add(footerTable); //document.Add(endOfPageTable); //Add border to page PdfContentByte content = writer.DirectContent; Rectangle rectangle = new Rectangle(document.PageSize); rectangle.Left = document.LeftMargin; rectangle.Right = document.RightMargin; rectangle.Top = document.TopMargin; rectangle.Bottom = document.BottomMargin; content.SetColorStroke(BaseColor.BLACK); content.Rectangle(rectangle.Left, rectangle.Bottom, rectangle.Width, rectangle.Height); content.Stroke(); document.Close(); writer.Close(); //sendEmail(dtQPDF); Response.AddHeader("content-disposition", "attachment;filename=Test_Report_" + dtQPDF.Rows[0][0].ToString() + ".pdf"); Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length); } } else { gvSampleReport.Visible = false; gvSampleReportQuality.Visible = false; ShowModalMessage("Either Memo No. is incorrect or Sample(s) have not been reported yet"); } } } catch (Exception ex) { CommonMethods_DAL objCommonMethods_DAL = new CommonMethods_DAL(); System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(); System.Diagnostics.StackFrame sf = st.GetFrame(0); System.Reflection.MethodBase currentMethodName = sf.GetMethod(); objCommonMethods_DAL.LogError_DAL(this.GetType().Name, currentMethodName.Name, ex.Message, Session["SESSION_USER_ID"].ToString()); ShowModalMessage("Error while generating pdf on button click : " + ex.Message); } } public class PageEventHelper : PdfPageEventHelper { PdfContentByte cb; PdfTemplate headerTemplate, footerTemplate; public override void OnOpenDocument(PdfWriter writer, Document document) { cb = writer.DirectContent; //template = cb.CreateTemplate(100, 50); headerTemplate = cb.CreateTemplate(100, 50); footerTemplate = cb.CreateTemplate(100, 50); } public override void OnStartPage(PdfWriter writer, Document document) { base.OnStartPage(writer, document); } public override void OnEndPage(PdfWriter writer, Document document) { base.OnEndPage(writer, document); iTextSharp.text.Font baseFontNormal = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 12f, iTextSharp.text.Font.NORMAL, iTextSharp.text.BaseColor.BLACK); iTextSharp.text.Font baseFontBig = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 12f, iTextSharp.text.Font.BOLD, iTextSharp.text.BaseColor.BLACK); base.OnEndPage(writer, document); PdfPTable tabFot = new PdfPTable(new float[] { 1F }); PdfPCell cell; tabFot.TotalWidth = 300F; cell = new PdfPCell(new Phrase("Footer")); tabFot.AddCell(cell); tabFot.WriteSelectedRows(0, -1, 150, document.Bottom, writer.DirectContent); String text = "Page " + writer.PageNumber + " of " ; BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); //Add paging to header { cb.BeginText(); cb.SetFontAndSize(bf, 12); cb.SetTextMatrix(document.PageSize.GetRight(200), document.PageSize.GetTop(45)); cb.EndText(); float len = bf.GetWidthPoint(text, 12); //Adds "12" in Page 1 of 12 cb.AddTemplate(headerTemplate, document.PageSize.GetRight(200) + len, document.PageSize.GetTop(45)); } //Add paging to footer { cb.BeginText(); cb.SetFontAndSize(bf, 12); cb.SetTextMatrix(document.PageSize.GetRight(180), document.PageSize.GetBottom(30)); cb.ShowText(text); cb.EndText(); float len = bf.GetWidthPoint(text, 12); cb.AddTemplate(footerTemplate, document.PageSize.GetRight(180) + len, document.PageSize.GetBottom(30)); } //float len = this.RunDateFont.BaseFont.GetWidthPoint(text, this.RunDateFont.Size); iTextSharp.text.Rectangle pageSize = document.PageSize; cb.SetRGBColorFill(100, 100, 100); cb.BeginText(); //cb.SetFontAndSize(8.0,8); cb.SetFontAndSize(bf, 12); //cb.SetTextMatrix(document.RightMargin, pageSize.GetBottom(document.BottomMargin + 10f)); //cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, text, 400f, 10f, 0); //cb.ShowText(text); cb.EndText(); //cb.AddTemplate(template, document.LeftMargin + 2, pageSize.GetBottom(document.BottomMargin)); } public override void OnCloseDocument(PdfWriter writer, Document document) { base.OnCloseDocument(writer, document); //template.BeginText(); BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); //template.SetFontAndSize(bf, 12); ////template.SetTextMatrix(-50f, 10f); ////template.ShowText("" + (writer.PageNumber - 1)); //template.EndText(); headerTemplate.BeginText(); headerTemplate.SetFontAndSize(bf, 12); headerTemplate.SetTextMatrix(0, 0); //headerTemplate.ShowText((writer.PageNumber - 1).ToString()); headerTemplate.EndText(); footerTemplate.BeginText(); footerTemplate.SetFontAndSize(bf, 12); footerTemplate.SetTextMatrix(0, 0); footerTemplate.ShowText((writer.PageNumber ).ToString()); footerTemplate.EndText(); } }
Что я уже пробовал:
Пожалуйста, помогите мне.
Заранее спасибо.
Maciej Los
Если вы хотите нанять кого-то для проверки вашего кода, это неправильный форум. Если у вас есть какой-то конкретный вопрос, пожалуйста, задайте его.
F-ES Sitecore
Там очень много кода, Вы должны действительно понимать itextsharp на довольно глубоком уровне, я удивлен, что вы изо всех сил пытаетесь сделать что-то сравнительно простое, например добавить что-то в верхний и Нижний колонтитулы.