internal void AddHyperlinkStyleIfNotPresent()
{
Uri word_styles_Uri = new Uri("/word/styles.xml", UriKind.Relative);
// If the internal document contains no /word/styles.xml create one.
if (!package.PartExists(word_styles_Uri))
HelperFunctions.AddDefaultStylesXml(package);
// Load the styles.xml into memory.
XDocument word_styles;
using (TextReader tr = new StreamReader(package.GetPart(word_styles_Uri).GetStream()))
word_styles = XDocument.Load(tr);
bool hyperlinkStyleExists =
(
from s in word_styles.Element(w + "styles").Elements()
let styleId = s.Attribute(XName.Get("styleId", w.NamespaceName))
where (styleId != null && styleId.Value == "Hyperlink")
select s
).Count() > 0;
if (!hyperlinkStyleExists)
{
XElement style = new XElement
(
w + "style",
new XAttribute(w + "type", "character"),
new XAttribute(w + "styleId", "Hyperlink"),
new XElement(w + "name", new XAttribute(w + "val", "Hyperlink")),
new XElement(w + "basedOn", new XAttribute(w + "val", "DefaultParagraphFont")),
new XElement(w + "uiPriority", new XAttribute(w + "val", "99")),
new XElement(w + "unhideWhenUsed"),
new XElement(w + "rsid", new XAttribute(w + "val", "0005416C")),
new XElement
(
w + "rPr",
new XElement(w + "color", new XAttribute(w + "val", "0000FF"), new XAttribute(w + "themeColor", "hyperlink")),
new XElement
(
w + "u",
new XAttribute(w + "val", "single")
)
)
);
word_styles.Element(w + "styles").Add(style);
// Save the styles document.
using (TextWriter tw = new StreamWriter(new PackagePartStream(package.GetPart(word_styles_Uri).GetStream())))
word_styles.Save(tw);
}
}