/***************************************************************************
Copyright (c) Microsoft Corporation 2011.
This code is licensed using the Microsoft Public License (Ms-PL). The text of the license can be found here:
http://www.microsoft.com/resources/sharedsource/licensingbasics/publiclicense.mspx
***************************************************************************/
using System.Linq;
using System.Xml.Linq;
using DocumentFormat.OpenXml.Packaging;
namespace OpenXmlPowerTools
{
///
/// Provides access to setting operations
///
public class SettingAccessor
{
private static XNamespace ns;
private static XNamespace settingsns;
private static XNamespace relationshipns;
static SettingAccessor()
{
ns = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
settingsns = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings";
relationshipns = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
}
///
/// Nodes list with displayBackgroundShape elements
///
public static XElement DisplayBackgroundShapeElements(WordprocessingDocument document)
{
XDocument settingsDocument = document.MainDocumentPart.DocumentSettingsPart.GetXDocument();
return settingsDocument.Descendants(settingsns + "displayBackgroundShape").FirstOrDefault();
}
///
/// Adds a displayBackgroundShape element to the settings file
///
public static void AddBackgroundShapeElement(WordprocessingDocument document)
{
XDocument settingsDocument = document.MainDocumentPart.DocumentSettingsPart.GetXDocument();
settingsDocument.Root.Add(
new XElement(ns + "displayBackgroundShape")
);
document.MainDocumentPart.DocumentSettingsPart.PutXDocument();
}
///
/// Adds a the evenAndOddHeaders element, which allows to define distinct headers and footers for odd and even pages
///
public static void AddEvenAndOddHeadersElement(WordprocessingDocument document)
{
XDocument settingsDocument = document.MainDocumentPart.DocumentSettingsPart.GetXDocument();
if (settingsDocument.Descendants(ns + "evenAndOddHeaders").FirstOrDefault() == null)
{
settingsDocument.Root.Add(
new XElement(ns + "evenAndOddHeaders"));
document.MainDocumentPart.DocumentSettingsPart.PutXDocument();
}
}
///
/// Creates an empty base structure for a settings part
///
///
private static XDocument CreateEmptySettings()
{
XDocument document =
new XDocument(
new XElement(ns + "settings",
new XAttribute(XNamespace.Xmlns + "w", ns),
new XAttribute(XNamespace.Xmlns + "r", relationshipns)
)
);
return document;
}
}
}