PDFsharp & MigraDoc Foundation

PDFsharp - A .NET library for processing PDF & MigraDoc Foundation - Creating documents on the fly
It is currently Thu Mar 28, 2024 2:36 pm

All times are UTC


Forum rules


Please read this before posting on this forum: Forum Rules



Post new topic Reply to topic  [ 3 posts ] 
Author Message
PostPosted: Fri Oct 17, 2014 9:02 pm 
Offline

Joined: Fri Oct 17, 2014 8:30 pm
Posts: 4
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 451 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 8081 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 8081 times ]


Last edited by NickYoung68 on Mon Oct 20, 2014 4:02 pm, edited 1 time in total.
Top
 Profile  
Reply with quote  
PostPosted: Mon Oct 20, 2014 7:53 am 
Offline
PDFsharp Guru
User avatar

Joined: Mon Oct 16, 2006 8:16 am
Posts: 3095
Location: Cologne, Germany
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

_________________
Regards
Thomas Hoevel
PDFsharp Team


Top
 Profile  
Reply with quote  
PostPosted: Mon Oct 20, 2014 4:04 pm 
Offline

Joined: Fri Oct 17, 2014 8:30 pm
Posts: 4
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


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 3 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 44 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Privacy Policy, Data Protection Declaration, Impressum
Powered by phpBB® Forum Software © phpBB Group