PDFsharp & MigraDoc Foundation

PDFsharp - A .NET library for processing PDF & MigraDoc Foundation - Creating documents on the fly
It is currently Sat Jun 25, 2022 1:06 am

All times are UTC


Forum rules


Please read this before posting on this forum: Forum Rules



Post new topic Reply to topic  [ 2 posts ] 
Author Message
PostPosted: Mon May 23, 2022 9:55 am 
Offline

Joined: Mon May 23, 2022 9:40 am
Posts: 1
Hi,

I am new to migradoc/pdfsharp, but have successfully created my document. But I have problems in formatting my migradoc. Especially setting margins in Migradoc. The funny thing is, I am able to set top margin successfully but not bottommargin.

Code:
       
            PdfDocument pdf = new PdfDocument();
            PdfPage page = pdf.AddPage(template.Pages[0]);
            XGraphics gfx = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Append);
            gfx.MUH = PdfFontEncoding.Unicode;

            XFont font = new XFont("Verdana", 13, XFontStyle.Bold);

            //gfx.DrawString("The following paragraph was rendered using MigraDoc:", font, XBrushes.Black,new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);

            this.doc = new Document();
            //DefineStyles();
           
            //Create invoice table
            Section section = doc.AddSection();
         
           
           
           
            PageSetup pageSetup = new PageSetup();
            pageSetup.BottomMargin = "5.0cm";
            pageSetup.TopMargin = "12cm";
           
            section.PageSetup = pageSetup;
           //section.PageSetup.HeaderDistance = "8.0cm";

           Paragraph paragraph = new Paragraph();
            paragraph.AddTab();
            paragraph.AddPageField();

            // Add paragraph to footer for odd pages.
            section.Footers.Primary.Add(paragraph);

            section.PageSetup.FooterDistance = "4.0cm";

            //section.PageSetup.DifferentFirstPageHeaderFooter = true;
           


            Table table = section.AddTable();

            table.Style = "Table";
            table.Borders.Color = Colors.Gray;
            table.Borders.Visible = false;
            table.Borders.Width = 0.25;
            table.Borders.Left.Width = 0.5;
            table.Borders.Right.Width = 0.5;
            table.Rows.LeftIndent = 0;
         
           

            //Add cols before rows
            Column column = table.AddColumn("1cm");
            column.Format.Alignment = ParagraphAlignment.Center;
            column = table.AddColumn("7cm");
            column.Format.Alignment = ParagraphAlignment.Left;
            column = table.AddColumn("2cm");
            column.Format.Alignment = ParagraphAlignment.Right;
            column = table.AddColumn("2cm");
            column.Format.Alignment = ParagraphAlignment.Right;
            column = table.AddColumn("1cm");
            column.Format.Alignment = ParagraphAlignment.Right;
            column = table.AddColumn("2cm");
            column.Format.Alignment = ParagraphAlignment.Right;
            column = table.AddColumn("2cm");
            column.Format.Alignment = ParagraphAlignment.Right;

            //Create header row
            Row row = table.AddRow();
            row.HeadingFormat = true;
            row.Format.Font.Bold = true;
            row.Shading.Color = Colors.LightGray;
            row.HeightRule = RowHeightRule.Exactly;
            row.Height = "0.5cm";
            row.Borders.Style = BorderStyle.None;

            row.Cells[0].AddParagraph("No");
            row.Cells[1].AddParagraph("Description");
            row.Cells[2].AddParagraph("Price");
            row.Cells[3].AddParagraph("Quantity");
            row.Cells[4].AddParagraph("VAT");
            row.Cells[5].AddParagraph("Amount");
            row.Cells[6].AddParagraph("Currency");

            int rowCount = 1;
            Decimal netSum = 0;
            Decimal vatSum = 0;
            Decimal grossSum = 0;

            foreach (RCInvoiceDataRecord data in ssData)
            {
                row = table.AddRow();
                row.HeightRule = RowHeightRule.Auto;
                //row.Height =  "1cm";
                rowCount++;
                row.Cells[0].AddParagraph(data.ssSTInvoiceData.ssNo.ToString());
                row.Cells[1].AddParagraph(data.ssSTInvoiceData.ssDescription);
                row.Cells[2].AddParagraph(data.ssSTInvoiceData.ssPrice.ToString());
                row.Cells[3].AddParagraph(data.ssSTInvoiceData.ssQuantity.ToString());
                row.Cells[4].AddParagraph(data.ssSTInvoiceData.ssVAT.ToString());
                row.Cells[5].AddParagraph(data.ssSTInvoiceData.ssAmount.ToString());
                row.Cells[6].AddParagraph(data.ssSTInvoiceData.ssCurrency);
                netSum = netSum + data.ssSTInvoiceData.ssAmount;
            }
            table.SetEdge(0, 0, 7, rowCount, Edge.Box, BorderStyle.Single, 0.75, Color.Empty);

            //Add Net Sum Row
            row = table.AddRow();
            row.Borders.Visible = false;
            row.Cells[0].AddParagraph("Net Sum");
            row.Cells[0].Format.Font.Bold = false;
            row.Cells[0].Format.Alignment = ParagraphAlignment.Right;
            row.Cells[0].MergeRight = 4;
            row.Cells[5].AddParagraph(netSum.ToString("0.00") + " " + ssCurrency);
            row.Cells[5].MergeRight = 1;


            //Add Sum VAT Row
            row = table.AddRow();
            row.Borders.Visible = false;
            row.Cells[0].AddParagraph("Sum VAT");
            row.Cells[0].Format.Font.Bold = false;
            row.Cells[0].Format.Alignment = ParagraphAlignment.Right;
            row.Cells[0].MergeRight = 4;
            row.Cells[5].AddParagraph(vatSum.ToString("0.00") + " " + ssCurrency);
            row.Cells[5].MergeRight = 1;


            //Add Gross Sum Row
            row = table.AddRow();
            row.Borders.Visible = false;
            row.Cells[0].AddParagraph("Gross Sum");
            row.Cells[0].Format.Font.Bold = true;
            row.Cells[0].Format.Alignment = ParagraphAlignment.Right;
            row.Cells[0].MergeRight = 4;
            row.Cells[5].AddParagraph(netSum.ToString("0.00") + " " + ssCurrency);
            row.Cells[5].MergeRight = 1;
            row.Cells[5].Format.Font.Bold = true;

            // Create a renderer and prepare (=layout) the document
            MigraDoc.Rendering.DocumentRenderer docRenderer = new DocumentRenderer(doc);
            docRenderer.PrepareDocument();

            // Render the paragraph. You can render tables or shapes the same way.
            //docRenderer.RenderObject(gfx, XUnit.FromCentimeter(2.5), XUnit.FromCentimeter(14), "2cm", table);
            //docRenderer.RenderObject(gfx, XUnit.FromCentimeter(16), XUnit.FromCentimeter(25), "11cm", paragraph.Clone());
             gfx.Dispose();
             int pages = docRenderer.FormattedDocument.PageCount;
           
             for (int i = 1; i <= pages; ++i)
             {
                 PdfPage curr_page = pdf.AddPage(template.Pages[0]);

                 PageInfo pageInfo = docRenderer.FormattedDocument.GetPageInfo(i);
                 curr_page.Width = pageInfo.Width;
                curr_page.Height = pageInfo.Height;
                 
                 page.Orientation = pageInfo.Orientation;

                 using (XGraphics gfx1 = XGraphics.FromPdfPage(curr_page))
                 {
                     // HACKĀ²
                     gfx1.MUH = PdfFontEncoding.Unicode;
                     //gfx1.MFEH = PdfFontEmbedding.Default;

                     docRenderer.RenderPage(gfx1, i);
                 }
             }

            ssPDF_Output = pdf;


- does not work as i see the table in this section overlaps with the footer of my default template. Will be great if someone can help me. Thanks and have a nice day
Pav


Attachments:
File comment: Output where table data overlaps with the footer in pdf template
Capture.PNG
Capture.PNG [ 107.04 KiB | Viewed 151 times ]
Top
 Profile  
Reply with quote  
PostPosted: Mon May 23, 2022 12:59 pm 
Offline
PDFsharp Expert
User avatar

Joined: Sat Mar 14, 2015 10:15 am
Posts: 726
Location: CCAA
Not much I can say with just a bitmap and some code snippets.

Table rows will not break across pages. If table rows are larger than the body of the page then they may exceed the body and overlap with the footer. Could this be the case here?
Are you using the latest version?

_________________
Best regards
Thomas
(Freelance Software Developer with several years of MigraDoc/PDFsharp experience)


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

All times are UTC


Who is online

Users browsing this forum: No registered users and 15 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