troubles with header and footer

1 posts, 0 answers
  1. Mathieu
    Mathieu avatar
    5 posts
    Member since:
    Mar 2013

    Posted 24 Apr 2013 Link to this post

    Hello ,

    I try to add custom header and footer  in a radDocument, but when I do , i can only write a single page . When going to the second page the editor disappears here's the function i'd like to use 

    public void InsertPageLayout()
            {
                Section section = this.RichTextBox.Document.Sections.First;
                section.HasDifferentFirstPageHeaderFooter = false;
                this.RichTextBox.Document.HasDifferentEvenAndOddHeadersFooters = false;
                RadDocument footerBody = new RadDocument();
     
                footerBody.LineSpacing = 1.15;
                footerBody.ParagraphDefaultSpacingBefore = 5;
                footerBody.ParagraphDefaultSpacingAfter = 5;
                footerBody.SectionDefaultPageMargin = new Padding(95);
     
                Section sectionF = new Section();
                Paragraph p = new Paragraph();
                Span s = new Span();
                s.Text = "Footer";
                p.Inlines.Add(s);
                sectionF.Blocks.Add(p);
     
                RadDocument headerBody = new RadDocument();
                headerBody.LineSpacing = 1.15;
                headerBody.ParagraphDefaultSpacingBefore = 5;
                headerBody.ParagraphDefaultSpacingAfter = 5;
                headerBody.SectionDefaultPageMargin = new Padding(95);
                Section sectionH = new Section();
                Paragraph ph = new Paragraph();
                //ph.LeftIndent = 0;
                ImageInline im = new ImageInline(this.GetResourceUri("images/Lighthouse.jpg"));
     
     
                /*if (im.UriSource == null
                {
                    BitmapImage imSource = new BitmapImage();               
                }*/
     
                 
                double pixelHeight = im.ImageSource.PixelHeight;
                double pixelWidth = im.ImageSource.PixelWidth;
     
                double proportion = pixelHeight / pixelWidth;
                bool portrait = true;
                double largeur;
                if (portrait)
                {
                    largeur = 21 / 0.0264;
                }
                else
                {
                    largeur = 29.7 / 0.0264;
                }
     
                double margeHaut = 1;
                double margeBas = 1;
                double margeGauche = 1 / 0.0264;
                double margeDroite = 12 / 0.0264;
     
                double largeurImg = largeur - (margeGauche + margeDroite);
                double hauteurImg = largeurImg * proportion;
     
                // Convertir cm en unité px
                im.Width = largeurImg;
                im.Height = hauteurImg;
     
                Span sh = new Span();
                sh.Text = "Header";
                //ph.Inlines.Add(im);
                ph.Inlines.Add(sh);
                sectionH.Blocks.Add(ph);
                //sectionH.ActualPageMargin = new Padding(0, 0, 0, 0);
                headerBody.Sections.Add(sectionH);
                footerBody.Sections.Add(sectionF);
     
                Header header = new Header() { Body = headerBody, IsLinkedToPrevious = false };
     
                Footer footer = new Footer() { Body = footerBody, IsLinkedToPrevious = false };
                //document is an instance of RadDocument, representing the content of the footer,
     
                //document is an instance of RadDocument, representing the content of a Header,
                //typically contains a few paragraphs
                //section.Headers.First = header;
                //section.Footers.First = footer;
     
     
                //header.Body.InsertReadOnlyRange(startPosition:new DocumentPosition(headerBody), endPosition:new DocumentPosition(headerBody));
                //footer.Body.InsertReadOnlyRange(startPosition: new DocumentPosition(footerBody), endPosition: new DocumentPosition(footerBody));
     
                RadDocument footerBody2 = new RadDocument();
                Section sectionF2 = new Section();
                Paragraph pf2 = new Paragraph();
                Span sf2 = new Span();
                sf2.Text = "Footer 2";
                pf2.Inlines.Add(sf2);
                sectionF2.Blocks.Add(pf2);
     
                RadDocument headerBody2 = new RadDocument();
                Section sectionH2 = new Section();
                Paragraph ph2 = new Paragraph();
     
     
                //ph2.Inlines.Add(im);
     
                Span sh2 = new Span();
                sh2.Text = "Header 2";
                ph2.Inlines.Add(sh2);
                sectionH2.Blocks.Add(ph2);
                headerBody2.Sections.Add(sectionH2);
     
                Header header2 = new Header() { Body = headerBody2, IsLinkedToPrevious = true };
                Footer footer2 = new Footer() { Body = footerBody2, IsLinkedToPrevious = true };
     
                //Section section2 = new Section();
                //section2.Blocks.Add(new Paragraph());
     
                //section.Headers.Even = header2;
                //section.Footers.Even = footer2;
                //section.Headers.Default = header;
                //section.Footers.Default = footer;
                this.RichTextBox.UpdateFooter(section, HeaderFooterType.Default, footer);
                this.RichTextBox.UpdateHeader(section, HeaderFooterType.Default, header);
     
                this.InsertPageLayoutResponseComplete(this, null);
            }
    public event DownloadStringCompletedEventHandler InsertPageLayoutResponseComplete;
            private void OnInsertPageLayoutResponseComplete(object sender, DownloadStringCompletedEventArgs e)
            {
                if (InsertPageLayoutResponseComplete != null)
                {
                    InsertPageLayoutResponseComplete(this, e);
                }
            }


    The exeption is 
    Uncaught Error: Unhandled Error in Silverlight Application
    Code: 4004   
    Category: ManagedRuntimeError      
    Message: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
       à Telerik.Windows.Documents.Model.RadDocument.get_ParagraphDefaultSpacingBefore()
       à Telerik.Windows.Documents.Model.RadDocument.CopyPropertiesFromOverride(DocumentElement element)
       à Telerik.Windows.Documents.Model.DocumentElement.CopyPropertiesFrom(DocumentElement fromElement)
       à Telerik.Windows.Documents.Model.DocumentElement.CreateElementCopy()
       à Telerik.Windows.Documents.Model.DocumentElement.CreateShallowCopy(DocumentElement documentElement)
       à Telerik.Windows.Documents.Model.DocumentElement.CreateShallowCopy()
       à Telerik.Windows.Documents.Model.DocumentElement.CreateDeepCopy(DocumentElement root)
       à Telerik.Windows.Documents.Model.DocumentElement.CreateDeepCopy()
       à Telerik.Windows.Documents.Model.RadDocument.CreateDeepCopy(Boolean copyStyles)
       à Telerik.Windows.Documents.UI.HeaderPresenter.GetBody()
       à Telerik.Windows.Documents.UI.HeaderFooterPresenterBase.UpdateBody()
       à Telerik.Windows.Documents.UI.HeaderFooterPresenterBase.OnApplyTemplate()
       à System.Windows.FrameworkElement.OnApplyTemplate(IntPtr nativeTarget)
    :



    Thank you for your attention.

    Mathieu 
Back to Top