Ejemplo n.º 1
0
        /// <summary>
        /// If this document does not contain a /word/styles.xml add the default one generated by Microsoft Word.
        /// </summary>
        /// <param name="package"></param>
        /// <returns></returns>
        internal static XDocument AddDefaultStylesXml(Package package)
        {
            XDocument stylesDoc;
            // Create the main document part for this package
            var word_styles = package.CreatePart(new Uri("/word/styles.xml", UriKind.Relative), "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml", CompressionOption.Maximum);

            stylesDoc = HelperFunctions.DecompressXMLResource("Xceed.Words.NET.Resources.default_styles.xml.gz");
            var lang = stylesDoc.Root.Element(XName.Get("docDefaults", DocX.w.NamespaceName)).Element(XName.Get("rPrDefault", DocX.w.NamespaceName)).Element(XName.Get("rPr", DocX.w.NamespaceName)).Element(XName.Get("lang", DocX.w.NamespaceName));

            lang.SetAttributeValue(XName.Get("val", DocX.w.NamespaceName), CultureInfo.CurrentCulture);

            // Save /word/styles.xml
            using (TextWriter tw = new StreamWriter(new PackagePartStream(word_styles.GetStream(FileMode.Create, FileAccess.Write))))
            {
                stylesDoc.Save(tw, SaveOptions.None);
            }

            var mainDocumentPart = package.GetParts().Single
                                   (
                p => p.ContentType.Equals(DOCUMENT_DOCUMENTTYPE, StringComparison.CurrentCultureIgnoreCase) ||
                p.ContentType.Equals(TEMPLATE_DOCUMENTTYPE, StringComparison.CurrentCultureIgnoreCase)
                                   );

            mainDocumentPart.CreateRelationship(word_styles.Uri, TargetMode.Internal, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles");
            return(stylesDoc);
        }
Ejemplo n.º 2
0
        internal void CreateNewNumberingNumId(int level = 0, ListItemType listType = ListItemType.Numbered, int?startNumber = null, bool continueNumbering = false)
        {
            ValidateDocXNumberingPartExists();
            if (Document._numbering.Root == null)
            {
                throw new InvalidOperationException("Numbering section did not instantiate properly.");
            }

            ListType = listType;

            var numId         = GetMaxNumId() + 1;
            var abstractNumId = GetMaxAbstractNumId() + 1;

            XDocument listTemplate;

            switch (listType)
            {
            case ListItemType.Bulleted:
                listTemplate = HelperFunctions.DecompressXMLResource("Xceed.Words.NET.Resources.numbering.default_bullet_abstract.xml.gz");
                break;

            case ListItemType.Numbered:
                listTemplate = HelperFunctions.DecompressXMLResource("Xceed.Words.NET.Resources.numbering.default_decimal_abstract.xml.gz");
                break;

            default:
                throw new InvalidOperationException(string.Format("Unable to deal with ListItemType: {0}.", listType.ToString()));
            }
            var abstractNumTemplate = listTemplate.Descendants().Single(d => d.Name.LocalName == "abstractNum");

            abstractNumTemplate.SetAttributeValue(DocX.w + "abstractNumId", abstractNumId);
            var abstractNumXml = GetAbstractNumXml(abstractNumId, numId, startNumber, continueNumbering);

            var abstractNumNode = Document._numbering.Root.Descendants().LastOrDefault(xElement => xElement.Name.LocalName == "abstractNum");
            var numXml          = Document._numbering.Root.Descendants().LastOrDefault(xElement => xElement.Name.LocalName == "num");

            if (abstractNumNode == null || numXml == null)
            {
                Document._numbering.Root.Add(abstractNumTemplate);
                Document._numbering.Root.Add(abstractNumXml);
            }
            else
            {
                abstractNumNode.AddAfterSelf(abstractNumTemplate);
                numXml.AddAfterSelf(
                    abstractNumXml
                    );
            }

            NumId = numId;
        }