Maheswar Tripathy Ответов: 1

Как добавить некоторые ячейки в верхний и Нижний колонтитулы в 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 на довольно глубоком уровне, я удивлен, что вы изо всех сил пытаетесь сделать что-то сравнительно простое, например добавить что-то в верхний и Нижний колонтитулы.

1 Ответов

Рейтинг:
1

Gerry Schmitz

Учитывая объем кода, который вы написали, itextSharp не был подходящим инструментом для этой работы.

Вы могли бы использовать любой другой язык или средство записи отчетов; использовать меньше кода и чтобы другие могли понять; и просто "печатать" на драйвере PDF-принтера, который даже MS поставляет сейчас.