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); }
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); }
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); }