PDFsharp & MigraDoc Foundation
http://forum.pdfsharp.com/

Table row bottom border gets duplicated on page split
http://forum.pdfsharp.com/viewtopic.php?f=3&t=2957
Page 1 of 1

Author:  NickYoung68 [ Fri Oct 17, 2014 9:02 pm ]
Post subject:  Table row bottom border gets duplicated on page split

I have attached the PDF print outs of the report I want to generate. I would like to have a line separating each test result (bottom border). I have found that when the results span multiple pages, the last border on the page gets duplicated at the top of the next page.

**EDIT: Just uploaded the PDFs as a ZIP**

One report shows how it looks if I remove the last row bottom border for each category's results. The code below has this logic commented out... (count < itemCount).

I did a test to make sure it is actually this chunk of code that is causing the bottom border to be rendered. I replaced the (if (count < itemCount) with this:

Code:
if (r.QuestionName != "Vitamin B12")
{
                    hRow.Borders.Bottom.Color = Colors.Black;
                    hRow.Borders.Bottom.Width = "0.05cm";
                }


This removed the bottom border right below the Vitamin B12 on the first page, and there was no duplicate either...

Here is the full chunk of code that is generating the table:

Code:
var section = doc.LastSection;

            section.AddParagraph("Health Profile", "Heading3");

            //create table header and column definitions
            var tableHeader = section.AddTable();

            //add columns, plus extra at begining for result name
            var column = tableHeader.AddColumn("5cm");
            column.Format.Alignment = ParagraphAlignment.Left;
            column = tableHeader.AddColumn("2.75cm");
            column.LeftPadding = "0.2cm";
            column.RightPadding = "0.2cm";
            column.Format.Alignment = ParagraphAlignment.Center;
            column = tableHeader.AddColumn("2.75cm");
            column.LeftPadding = "0.2cm";
            column.RightPadding = "0.2cm";
            column.Format.Alignment = ParagraphAlignment.Center;
            column = tableHeader.AddColumn("2.75cm");
            column.LeftPadding = "0.2cm";
            column.RightPadding = "0.2cm";
            column.Format.Alignment = ParagraphAlignment.Center;
            column = tableHeader.AddColumn("2.75cm");
            column.LeftPadding = "0.2cm";
            column.RightPadding = "0.2cm";
            column.Format.Alignment = ParagraphAlignment.Center;
            column = tableHeader.AddColumn("2.5cm");
            column.LeftPadding = "0.2cm";
            column.RightPadding = "0.2cm";
            column.Format.Alignment = ParagraphAlignment.Center;
            column = tableHeader.AddColumn("1.2cm");
            column.LeftPadding = "0.2cm";
            column.RightPadding = "0.2cm";
            column.Format.Alignment = ParagraphAlignment.Center;

            //add dynamic column headers
            var hRow = tableHeader.AddRow();
            int count = 1;
            foreach (var e in _events)
            {             
                var colHeader = String.IsNullOrEmpty(e.Name) ? " " : e.Name;

                //var para = hRow.Cells[count].AddParagraph();
                Paragraph p = AddTextToCell(colHeader, hRow.Cells[count], "Verdana", Unit.FromPoint(8));

                count++;
            }

            //add static column headers
            var para2 = hRow.Cells[5].AddParagraph();
            para2.AddFormattedText("PNSF Optimal Healthy Score", "TextLabel");
            para2 = hRow.Cells[6].AddParagraph();
            para2.AddFormattedText("Units", "TextLabel");

            //add header row of table to every page
            hRow.HeadingFormat = true;


            //add dynamic column dates
            hRow = tableHeader.AddRow();
            count = 1;
            foreach (var e in _events)
            {
                var p = hRow.Cells[count].AddParagraph();
                p.AddFormattedText(e.Date.Year < 1900 ? String.Empty : "(" + e.Date.ToString("yyyy/MM/dd") + ")", "DateLabel");

                count++;
            }

            //add dates row to heading of every page.
            hRow.HeadingFormat = true;


            //add categories and results
            var itemsToIterate = _results.OrderBy(x => x.CategoryOrder).ThenBy(x => x.QuestionOrder);
            var currentCategory = itemsToIterate.ToList()[0].Category;

            //add first category header
            hRow = tableHeader.AddRow();
            var categoryHeader = hRow.Cells[0].AddParagraph();
            categoryHeader.AddFormattedText(currentCategory, "CategoryLabel");
            //hRow.Format.SpaceAfter = "0.1cm";
            hRow.Format.SpaceBefore = "0.5cm";

            int itemCount = itemsToIterate.Count(x => x.Category == currentCategory);
            count = 1;
            foreach (var r in itemsToIterate)
            {
                //set category header               
                if (r.Category != currentCategory)
                {
                    ////add space after last row
                    //hRow.Format.SpaceAfter = "0.5cm";

                    hRow = tableHeader.AddRow();
                    categoryHeader = hRow.Cells[0].AddParagraph();
                    categoryHeader.AddFormattedText(r.Category, "CategoryLabel");
                    //hRow.Format.SpaceAfter = "0.2cm";
                    hRow.Format.SpaceBefore = "0.5cm";

                    //set the KeepWith property to keep sections together if they span multiple pages
                    hRow.KeepWith = itemsToIterate.Count(x => x.Category == r.Category);

                    //reset item count for this category
                    itemCount = itemsToIterate.Count(x => x.Category == r.Category);
                    count = 1;
                }   
               
                //add result
                hRow = tableHeader.AddRow();

                var para3 = hRow.Cells[0].AddParagraph();
                para3.AddFormattedText(r.QuestionName, "ResultsText");
                para3 = hRow.Cells[1].AddParagraph();
                para3.AddFormattedText(r.Response1, "ResultsText");
                para3 = hRow.Cells[2].AddParagraph();
                para3.AddFormattedText(r.Response2, "ResultsText");
                para3 = hRow.Cells[3].AddParagraph();
                para3.AddFormattedText(r.Response3, "ResultsText");
                para3 = hRow.Cells[4].AddParagraph();
                para3.AddFormattedText(r.Response4, "ResultsText");
                para3 = hRow.Cells[5].AddParagraph();
                para3.AddFormattedText(r.OptimalScore, "ResultsText");
                para3 = hRow.Cells[6].AddParagraph();
                para3.AddFormattedText(r.Unit, "ResultsText");

                //if (count < itemCount)
                //{
                    hRow.Borders.Bottom.Color = Colors.Black;
                    hRow.Borders.Bottom.Width = "0.05cm";
                //}

                //set vertical alignment
                hRow.VerticalAlignment = VerticalAlignment.Center;
                hRow.TopPadding = "0.1cm";
                hRow.BottomPadding = "0.1cm";

                //add highlighting
                HighlightCell(hRow, 1, r.Highlighting1);
                HighlightCell(hRow, 2, r.Highlighting2);
                HighlightCell(hRow, 3, r.Highlighting3);
                HighlightCell(hRow, 4, r.Highlighting4);


                //update category
                currentCategory = r.Category;
                count++;
            }


Attachments:
File comment: both reports zipped.
SCPHIPPReports.zip [68.21 KiB]
Downloaded 473 times
File comment: This file I have removed the bottom border for the last item in each category's group of results. As you can see there is no extra bottom border being rendered.
report_noBottomBorderForLastItem.PNG
report_noBottomBorderForLastItem.PNG [ 78.82 KiB | Viewed 8305 times ]
File comment: This PDF has a bottom border for every test result. As you can see in the image, there is an extra bottom border being rendered for the "Vitamin B12" result.
report_duplicateBorder.PNG
report_duplicateBorder.PNG [ 59.32 KiB | Viewed 8305 times ]

Author:  Thomas Hoevel [ Mon Oct 20, 2014 7:53 am ]
Post subject:  Re: Table row bottom border gets duplicated on page split

NickYoung68 wrote:
Okay, I am trying to upload a PDF attachement of the reports but it says it's not allowed...??
Look here:
viewtopic.php?f=2&t=832

Author:  NickYoung68 [ Mon Oct 20, 2014 4:04 pm ]
Post subject:  Re: Table row bottom border gets duplicated on page split

Thomas Hoevel wrote:
NickYoung68 wrote:
Okay, I am trying to upload a PDF attachement of the reports but it says it's not allowed...??
Look here:
http://forum.pdfsharp.net/viewtopic.php?f=2&t=832


Thanks. I just uploaded both PDF reports. Any help fixing this issue is greatly appreciated.


Regards,
Nick

Page 1 of 1 All times are UTC
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/