2017-02-20 10 views
1

Получение проблемы, когда я связываю свой отчет для создания PDF с помощью itextsharp, когда мой отчет содержит более 80 или 100 строк, начиная со второй страницы, он пропускает первую страницу, но меньше его работы с первой страницы. Вот мой код добавления отчета с выпуском экраном-коротким Record bind from second page Код:Получение проблемы для привязки отчета для создания PDF с использованием itextsharp

   table = new PdfPTable(2); 
       table.TotalWidth = Size; 
       table.LockedWidth = true; 
       table.DefaultCell.Border = Rectangle.NO_BORDER; 
       table.SetWidths(new float[] { 265f, 265f }); 



       insideTable1 = new PdfPTable(1); 
       insideTable1.TotalWidth = 260f; 
       insideTable1.LockedWidth = true; 
       insideTable1.DefaultCell.Border = Rectangle.NO_BORDER; 
       insideTable1.SetWidths(new float[] { 260f }); 

       insideTable11 = new PdfPTable(widthArry); 
       insideTable11.TotalWidth = 260f; 
       insideTable11.LockedWidth = true; 
       insideTable11.SetWidths(widthArry); 



       for (int a = 0; a < colindexid.Count; a = a + 1) 
       { 
        #region addcolumnHeadeName 


        if (colindexid[a].ToString() == Convert.ToString(0)) 
        { 

         phrase = new Phrase(); 
         phrase.Add(new Chunk(H1, FontFactory.GetFont("Arial Unicode MS,Arial", 6, iTextSharp.text.Font.BOLD, iTextSharp.text.Color.BLACK))); 
         cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
         cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 
         cell.FixedHeight = 15f; 
         insideTable11.AddCell(cell); 


        } 
        else if (colindexid[a].ToString() == Convert.ToString(1)) 
        { 

         phrase = new Phrase(); 
         phrase.Add(new Chunk(H2, FontFactory.GetFont("Arial Unicode MS,Arial", 6, iTextSharp.text.Font.BOLD, iTextSharp.text.Color.BLACK))); 
         cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
         cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 
         cell.FixedHeight = 15f; 
         insideTable11.AddCell(cell); 



        } 
        else if (colindexid[a].ToString() == Convert.ToString(2)) 
        { 

         phrase = new Phrase(); 
         phrase.Add(new Chunk(H3, FontFactory.GetFont("Arial Unicode MS,Arial", 6, iTextSharp.text.Font.BOLD, iTextSharp.text.Color.BLACK))); 
         cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
         cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 
         cell.FixedHeight = 15f; 
         insideTable11.AddCell(cell); 


        } 
        else if (colindexid[a].ToString() == Convert.ToString(3)) 
        { 
         phrase = new Phrase(); 
         phrase.Add(new Chunk(H4, FontFactory.GetFont("Arial Unicode MS,Arial", 6, iTextSharp.text.Font.BOLD, iTextSharp.text.Color.BLACK))); 
         cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
         cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 
         cell.FixedHeight = 15f; 
         insideTable11.AddCell(cell); 



        } 
        #endregion addcolumnHeadeName 
       } 


       for (int i = 1; i <= 51; i++) 
       { 
        cnt++; 
        string Name = ""; 


        #region addrow 

        if (colindexid.Contains(Convert.ToInt32(0))) 
        { 


         phrase = new Phrase(); 
         phrase.Add(new Chunk(cnt.ToString(), f)); 
         cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
         cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 

         insideTable11.AddCell(cell); 

        } 
        else 
        { 

        } 
        if (colindexid.Contains(Convert.ToInt32(1))) 
        { 

         phrase = new Phrase(); 
         phrase.Add(new Chunk("E1", f)); 
         cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
         cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 
         insideTable11.AddCell(cell); 
        } 
        else 
        { 

        } 
        if (colindexid.Contains(Convert.ToInt32(2))) 
        { 

         phrase = new Phrase(); 
         //string SName = ""; 
         //if (!string.IsNullOrEmpty(Name.ToLower())) 
         //{ 
         // SName = textInfo.ToTitleCase(Name.ToLower()); 
         //} 
         phrase.Add(new Chunk("Ravi Shah", f)); 
         cell = PhraseCell(phrase, PdfPCell.ALIGN_LEFT); 
         cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 
         insideTable11.AddCell(cell); 


        } 
        else 
        { 

        } 
        if (colindexid.Contains(Convert.ToInt32(3))) 
        { 
         //string SC = ""; 
         //if (!string.IsNullOrEmpty(itm.ServiceCategory.ToLower())) 
         //{ 
         // SC = textInfo.ToTitleCase(itm.ServiceCategory.ToLower()); 
         //} 
         //string ST = ""; 
         //if (!string.IsNullOrEmpty(itm.ServiceType.ToLower())) 
         //{ 
         // ST = textInfo.ToTitleCase(itm.ServiceType.ToLower()); 
         //} 
         phrase = new Phrase(); 
         phrase.Add(new Chunk("Teacher" + "\n", f)); 
         phrase.Add(new Chunk("" + "\n", FontFactory.GetFont("Arial Unicode MS,Arial", 5, iTextSharp.text.Color.BLACK))); 
         cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
         cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 
         insideTable11.AddCell(cell); 


        } 
        else 
        { 

        } 


        #endregion addrow 
       } 


       insideTable1.AddCell(insideTable11); 
       table.AddCell(insideTable1); 



        insideTable2 = new PdfPTable(1); 
        insideTable2.TotalWidth = 260f; 
        insideTable2.LockedWidth = true; 
        insideTable2.DefaultCell.Border = Rectangle.NO_BORDER; 
        insideTable2.SetWidths(new float[] { 260f }); 




        insideTable22 = new PdfPTable(widthArry); 
        insideTable22.TotalWidth = 260f; 
        insideTable22.LockedWidth = true; 
        insideTable22.SetWidths(widthArry); 


        for (int a = 0; a < colindexid.Count; a = a + 1) 
        { 
         #region addcolumnHeadeName 


         if (colindexid[a].ToString() == Convert.ToString(0)) 
         { 

          phrase = new Phrase(); 
          phrase.Add(new Chunk(H1, FontFactory.GetFont("Arial Unicode MS,Arial", 6, iTextSharp.text.Font.BOLD, iTextSharp.text.Color.BLACK))); 
          cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
          cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 
          cell.FixedHeight = 15f; 
          insideTable22.AddCell(cell); 


         } 
         else if (colindexid[a].ToString() == Convert.ToString(1)) 
         { 

          phrase = new Phrase(); 
          phrase.Add(new Chunk(H2, FontFactory.GetFont("Arial Unicode MS,Arial", 6, iTextSharp.text.Font.BOLD, iTextSharp.text.Color.BLACK))); 
          cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
          cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 
          cell.FixedHeight = 15f; 
          insideTable22.AddCell(cell); 



         } 
         else if (colindexid[a].ToString() == Convert.ToString(2)) 
         { 

          phrase = new Phrase(); 
          phrase.Add(new Chunk(H3, FontFactory.GetFont("Arial Unicode MS,Arial", 6, iTextSharp.text.Font.BOLD, iTextSharp.text.Color.BLACK))); 
          cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
          cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 
          cell.FixedHeight = 15f; 
          insideTable22.AddCell(cell); 


         } 
         else if (colindexid[a].ToString() == Convert.ToString(3)) 
         { 
          phrase = new Phrase(); 
          phrase.Add(new Chunk(H4, FontFactory.GetFont("Arial Unicode MS,Arial", 6, iTextSharp.text.Font.BOLD, iTextSharp.text.Color.BLACK))); 
          cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
          cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 
          cell.FixedHeight = 15f; 
          insideTable22.AddCell(cell); 



         } 

         #endregion addcolumnHeadeName 
        } 

        for (int i = 1; i <= 50; i++) 
        { 
         cnt++; 
         string Name = ""; 


         #region addrow 

         if (colindexid.Contains(Convert.ToInt32(0))) 
         { 


          phrase = new Phrase(); 
          phrase.Add(new Chunk(cnt.ToString(), f)); 
          cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
          cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 

          insideTable22.AddCell(cell); 

         } 
         else 
         { 

         } 
         if (colindexid.Contains(Convert.ToInt32(1))) 
         { 

          phrase = new Phrase(); 
          phrase.Add(new Chunk("M1", f)); 
          cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
          cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 
          insideTable22.AddCell(cell); 
         } 
         else 
         { 

         } 
         if (colindexid.Contains(Convert.ToInt32(2))) 
         { 

          phrase = new Phrase(); 
          //string SName = ""; 
          //if (!string.IsNullOrEmpty(Name.ToLower())) 
          //{ 
          // SName = textInfo.ToTitleCase(Name.ToLower()); 
          //} 
          phrase.Add(new Chunk("Raj Patel", f)); 
          cell = PhraseCell(phrase, PdfPCell.ALIGN_LEFT); 
          cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 
          insideTable22.AddCell(cell); 


         } 
         else 
         { 

         } 
         if (colindexid.Contains(Convert.ToInt32(3))) 
         { 

          //string SC = ""; 
          //if (!string.IsNullOrEmpty(itm.ServiceCategory.ToLower())) 
          //{ 
          // SC = textInfo.ToTitleCase(itm.ServiceCategory.ToLower()); 
          //} 
          //string ST = ""; 
          //if (!string.IsNullOrEmpty(itm.ServiceType.ToLower())) 
          //{ 
          // ST = textInfo.ToTitleCase(itm.ServiceType.ToLower()); 
          //} 
          phrase = new Phrase(); 
          phrase.Add(new Chunk("Sir" + "\n", f)); 
          phrase.Add(new Chunk("" + "\n", FontFactory.GetFont("Arial Unicode MS,Arial", 5, iTextSharp.text.Color.BLACK))); 
          cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
          cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 
          insideTable22.AddCell(cell); 

         } 
         else 
         { 

         } 


         #endregion addrow 

        } 
        if (result11.Count == result22.Count + 1) 
        { 
         #region addrow 

         if (colindexid.Contains(Convert.ToInt32(0))) 
         { 


          phrase = new Phrase(); 
          phrase.Add(new Chunk("", f)); 
          cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
          cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 

          insideTable22.AddCell(cell); 

         } 
         else 
         { 

         } 
         if (colindexid.Contains(Convert.ToInt32(1))) 
         { 

          phrase = new Phrase(); 
          phrase.Add(new Chunk("", f)); 
          cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
          cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 

          insideTable22.AddCell(cell); 
         } 
         else 
         { 

         } 
         if (colindexid.Contains(Convert.ToInt32(2))) 
         { 

          phrase = new Phrase(); 
          phrase.Add(new Chunk("", f)); 
          cell = PhraseCell(phrase, PdfPCell.ALIGN_CENTER); 
          cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 

          insideTable22.AddCell(cell); 
         } 
         else 
         { 

         } 
         if (colindexid.Contains(Convert.ToInt32(3))) 
         { 
          phrase = new Phrase(); 

          phrase.Add(new Chunk("", f)); 
          cell = PhraseCell(phrase, PdfPCell.ALIGN_LEFT); 
          cell.BorderColor = new iTextSharp.text.Color(229, 229, 229); 

          insideTable22.AddCell(cell); 

         } 
         else 
         { 

         } 

         #endregion addrow 
        } 




        insideTable2.AddCell(insideTable22); 
        table.AddCell(insideTable2); 

       document.Add(table); 

Спасибо ..

+0

Вы пытались сделать это, не помещая таблицы внутри таблиц внутри таблиц, используя только один уровень таблиц? – mkl

+0

его работа с одним уровнем таблицы, но моя потребность разделена на две страницы на страницу, поэтому я делаю это – Herry

ответ

1

Добавьте эту строку:

table.SplitLate = false; 

по умолчанию для SplitLate является true, что означает, что iTextSharp попытается добавить полные строки на страницу. Если строка не подходит, она перейдет на следующую страницу. Это объясняет поведение, которое вы заметили.

+0

его произведения ... его работы ..от вас ..... – Herry