Пример #1
0
        public void Prepare(
            PageRegion previousSection,
            PageMargin previousSectionMargin,
            DocumentVariables documentVariables)
        {
            var sectionBreak = _properties.StartOnNextPage
                ? SectionContentBreak.Page
                : SectionContentBreak.None;

            IPage contentPageRequest(PageNumber pageNumber) =>
            this.OnPageRequest(pageNumber, previousSection.PagePosition.PageNumber, previousSectionMargin, documentVariables);

            var contentLastPosition = previousSection;

            foreach (var content in _contents)
            {
                content.Prepare(previousSection, contentLastPosition, sectionBreak, contentPageRequest);
                contentLastPosition = content.LastPageRegion;
                sectionBreak        = content.SectionBreak;
            }

            var pr = _contents
                     .SelectMany(c => c.PageRegions)
                     .UnionThroughColumns()
                     .ToArray();

            this.ResetPageRegions(pr);
        }
Пример #2
0
        private IPage OnPageRequest(
            PageNumber pageNumber,
            PageNumber previousSectionLastPage,
            PageMargin previousSectionMargin,
            DocumentVariables documentVariables)
        {
            var page = _pages.SingleOrDefault(p => p.PageNumber == pageNumber);

            if (page == null)
            {
                page = new Page(pageNumber, _properties.PageConfiguration);
                page.SetHorizontalMargins(_properties.Margin.Left, _properties.Margin.Right);
                _pages.Add(page);
            }

            page.DocumentVariables = documentVariables;

            this.CreateOrUpdateHeader(page, previousSectionLastPage, previousSectionMargin);
            var header = _headers[pageNumber];

            page.SetTopMargins(header.TopY, header.BottomY);

            this.CreateOrUpdateFooter(page, previousSectionLastPage, previousSectionMargin);
            var footer = _footers[pageNumber];

            page.SetBottomMargins(footer.FooterMargin, footer.HeightWithFooterMargin);

            return(page);
        }
Пример #3
0
 public PageContext(
     PagePosition pagePosition,
     Rectangle region,
     DocumentVariables variables)
 {
     this.Region        = region;
     this.PagePosition  = pagePosition;
     this.PageVariables = new PageVariables(pagePosition.PageNumber, variables.TotalPages);
     this.TopLeft       = new DocumentPosition(pagePosition, this.Region.TopLeft);
 }
        /// <summary>
        /// Retrieves a document variable by its name
        /// </summary>
        /// <param name="name">The name of the document variable (case sensitive)</param>
        /// <param name="document">The wordprocessing document</param>
        /// <returns>The document variable if found, other wise it returns null</returns>
        public static DocumentVariable GetVariableByName(string name, WordprocessingDocument document)
        {
            // Get the document settings part
            DocumentSettingsPart documentSettings = document.MainDocumentPart.DocumentSettingsPart;
            // Get the settings element
            Settings settings = documentSettings.Settings;
            // Get the DocumentVariables element
            DocumentVariables variables = settings.Elements <DocumentVariables>().FirstOrDefault();

            // check if the variables are not null
            if (variables != null)
            {
                return(variables.Elements <DocumentVariable>().Where(v => v.Name == name)
                       .FirstOrDefault());
            }
            return(null);
        }