public static void GenerateCustomXmlPart1Content(CustomXmlPart customXmlPart1)
 {
     System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(customXmlPart1.GetStream(System.IO.FileMode.Create), System.Text.Encoding.UTF8);
     writer.WriteRaw("<?xml version=\"1.0\" encoding=\"utf-8\"?><p:properties xmlns:p=\"http://schemas.microsoft.com/office/2006/metadata/properties\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:pc=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\"><documentManagement/></p:properties>");
     writer.Flush();
     writer.Close();
 }
 public static void GenerateCustomXmlPart2Content(CustomXmlPart customXmlPart2)
 {
     System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(customXmlPart2.GetStream(System.IO.FileMode.Create), System.Text.Encoding.UTF8);
     writer.WriteRaw("<?xml version=\"1.0\" encoding=\"utf-8\"?><ct:contentTypeSchema ct:_=\"\" ma:_=\"\" ma:contentTypeName=\"Document\" ma:contentTypeID=\"0x0101004B3CC135CC07AD41A19C6A3D7A557156\" ma:contentTypeVersion=\"\" ma:contentTypeDescription=\"Create a new document.\" ma:contentTypeScope=\"\" ma:versionID=\"ed709af8e00f2f37000702baf4108691\" xmlns:ct=\"http://schemas.microsoft.com/office/2006/metadata/contentType\" xmlns:ma=\"http://schemas.microsoft.com/office/2006/metadata/properties/metaAttributes\">\r\n<xsd:schema targetNamespace=\"http://schemas.microsoft.com/office/2006/metadata/properties\" ma:root=\"true\" ma:fieldsID=\"6d238f72868eae9cb05cfc0c92331025\" ns2:_=\"\" ns3:_=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:p=\"http://schemas.microsoft.com/office/2006/metadata/properties\" xmlns:ns2=\"4fc81810-4f98-4e7e-b20e-7b2a690091c4\" xmlns:ns3=\"067d236f-0129-4702-b692-531fc2f871d2\">\r\n<xsd:import namespace=\"4fc81810-4f98-4e7e-b20e-7b2a690091c4\"/>\r\n<xsd:import namespace=\"067d236f-0129-4702-b692-531fc2f871d2\"/>\r\n<xsd:element name=\"properties\">\r\n<xsd:complexType>\r\n<xsd:sequence>\r\n<xsd:element name=\"documentManagement\">\r\n<xsd:complexType>\r\n<xsd:all>\r\n<xsd:element ref=\"ns2:MediaServiceMetadata\" minOccurs=\"0\"/>\r\n<xsd:element ref=\"ns2:MediaServiceFastMetadata\" minOccurs=\"0\"/>\r\n<xsd:element ref=\"ns2:MediaServiceDateTaken\" minOccurs=\"0\"/>\r\n<xsd:element ref=\"ns2:MediaServiceAutoTags\" minOccurs=\"0\"/>\r\n<xsd:element ref=\"ns2:MediaServiceOCR\" minOccurs=\"0\"/>\r\n<xsd:element ref=\"ns2:MediaServiceLocation\" minOccurs=\"0\"/>\r\n<xsd:element ref=\"ns3:SharedWithUsers\" minOccurs=\"0\"/>\r\n<xsd:element ref=\"ns3:SharedWithDetails\" minOccurs=\"0\"/>\r\n</xsd:all>\r\n</xsd:complexType>\r\n</xsd:element>\r\n</xsd:sequence>\r\n</xsd:complexType>\r\n</xsd:element>\r\n</xsd:schema>\r\n<xsd:schema targetNamespace=\"4fc81810-4f98-4e7e-b20e-7b2a690091c4\" elementFormDefault=\"qualified\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:dms=\"http://schemas.microsoft.com/office/2006/documentManagement/types\" xmlns:pc=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\">\r\n<xsd:import namespace=\"http://schemas.microsoft.com/office/2006/documentManagement/types\"/>\r\n<xsd:import namespace=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\"/>\r\n<xsd:element name=\"MediaServiceMetadata\" ma:index=\"8\" nillable=\"true\" ma:displayName=\"MediaServiceMetadata\" ma:hidden=\"true\" ma:internalName=\"MediaServiceMetadata\" ma:readOnly=\"true\">\r\n<xsd:simpleType>\r\n<xsd:restriction base=\"dms:Note\"/>\r\n</xsd:simpleType>\r\n</xsd:element>\r\n<xsd:element name=\"MediaServiceFastMetadata\" ma:index=\"9\" nillable=\"true\" ma:displayName=\"MediaServiceFastMetadata\" ma:hidden=\"true\" ma:internalName=\"MediaServiceFastMetadata\" ma:readOnly=\"true\">\r\n<xsd:simpleType>\r\n<xsd:restriction base=\"dms:Note\"/>\r\n</xsd:simpleType>\r\n</xsd:element>\r\n<xsd:element name=\"MediaServiceDateTaken\" ma:index=\"10\" nillable=\"true\" ma:displayName=\"MediaServiceDateTaken\" ma:hidden=\"true\" ma:internalName=\"MediaServiceDateTaken\" ma:readOnly=\"true\">\r\n<xsd:simpleType>\r\n<xsd:restriction base=\"dms:Text\"/>\r\n</xsd:simpleType>\r\n</xsd:element>\r\n<xsd:element name=\"MediaServiceAutoTags\" ma:index=\"11\" nillable=\"true\" ma:displayName=\"Tags\" ma:internalName=\"MediaServiceAutoTags\" ma:readOnly=\"true\">\r\n<xsd:simpleType>\r\n<xsd:restriction base=\"dms:Text\"/>\r\n</xsd:simpleType>\r\n</xsd:element>\r\n<xsd:element name=\"MediaServiceOCR\" ma:index=\"12\" nillable=\"true\" ma:displayName=\"Extracted Text\" ma:internalName=\"MediaServiceOCR\" ma:readOnly=\"true\">\r\n<xsd:simpleType>\r\n<xsd:restriction base=\"dms:Note\">\r\n<xsd:maxLength value=\"255\"/>\r\n</xsd:restriction>\r\n</xsd:simpleType>\r\n</xsd:element>\r\n<xsd:element name=\"MediaServiceLocation\" ma:index=\"13\" nillable=\"true\" ma:displayName=\"Location\" ma:internalName=\"MediaServiceLocation\" ma:readOnly=\"true\">\r\n<xsd:simpleType>\r\n<xsd:restriction base=\"dms:Text\"/>\r\n</xsd:simpleType>\r\n</xsd:element>\r\n</xsd:schema>\r\n<xsd:schema targetNamespace=\"067d236f-0129-4702-b692-531fc2f871d2\" elementFormDefault=\"qualified\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:dms=\"http://schemas.microsoft.com/office/2006/documentManagement/types\" xmlns:pc=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\">\r\n<xsd:import namespace=\"http://schemas.microsoft.com/office/2006/documentManagement/types\"/>\r\n<xsd:import namespace=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\"/>\r\n<xsd:element name=\"SharedWithUsers\" ma:index=\"14\" nillable=\"true\" ma:displayName=\"Shared With\" ma:internalName=\"SharedWithUsers\" ma:readOnly=\"true\">\r\n<xsd:complexType>\r\n<xsd:complexContent>\r\n<xsd:extension base=\"dms:UserMulti\">\r\n<xsd:sequence>\r\n<xsd:element name=\"UserInfo\" minOccurs=\"0\" maxOccurs=\"unbounded\">\r\n<xsd:complexType>\r\n<xsd:sequence>\r\n<xsd:element name=\"DisplayName\" type=\"xsd:string\" minOccurs=\"0\"/>\r\n<xsd:element name=\"AccountId\" type=\"dms:UserId\" minOccurs=\"0\" nillable=\"true\"/>\r\n<xsd:element name=\"AccountType\" type=\"xsd:string\" minOccurs=\"0\"/>\r\n</xsd:sequence>\r\n</xsd:complexType>\r\n</xsd:element>\r\n</xsd:sequence>\r\n</xsd:extension>\r\n</xsd:complexContent>\r\n</xsd:complexType>\r\n</xsd:element>\r\n<xsd:element name=\"SharedWithDetails\" ma:index=\"15\" nillable=\"true\" ma:displayName=\"Shared With Details\" ma:internalName=\"SharedWithDetails\" ma:readOnly=\"true\">\r\n<xsd:simpleType>\r\n<xsd:restriction base=\"dms:Note\">\r\n<xsd:maxLength value=\"255\"/>\r\n</xsd:restriction>\r\n</xsd:simpleType>\r\n</xsd:element>\r\n</xsd:schema>\r\n<xsd:schema targetNamespace=\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" blockDefault=\"#all\" xmlns=\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:odoc=\"http://schemas.microsoft.com/internal/obd\">\r\n<xsd:import namespace=\"http://purl.org/dc/elements/1.1/\" schemaLocation=\"http://dublincore.org/schemas/xmls/qdc/2003/04/02/dc.xsd\"/>\r\n<xsd:import namespace=\"http://purl.org/dc/terms/\" schemaLocation=\"http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcterms.xsd\"/>\r\n<xsd:element name=\"coreProperties\" type=\"CT_coreProperties\"/>\r\n<xsd:complexType name=\"CT_coreProperties\">\r\n<xsd:all>\r\n<xsd:element ref=\"dc:creator\" minOccurs=\"0\" maxOccurs=\"1\"/>\r\n<xsd:element ref=\"dcterms:created\" minOccurs=\"0\" maxOccurs=\"1\"/>\r\n<xsd:element ref=\"dc:identifier\" minOccurs=\"0\" maxOccurs=\"1\"/>\r\n<xsd:element name=\"contentType\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xsd:string\" ma:index=\"0\" ma:displayName=\"Content Type\"/>\r\n<xsd:element ref=\"dc:title\" minOccurs=\"0\" maxOccurs=\"1\" ma:index=\"4\" ma:displayName=\"Title\"/>\r\n<xsd:element ref=\"dc:subject\" minOccurs=\"0\" maxOccurs=\"1\"/>\r\n<xsd:element ref=\"dc:description\" minOccurs=\"0\" maxOccurs=\"1\"/>\r\n<xsd:element name=\"keywords\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xsd:string\"/>\r\n<xsd:element ref=\"dc:language\" minOccurs=\"0\" maxOccurs=\"1\"/>\r\n<xsd:element name=\"category\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xsd:string\"/>\r\n<xsd:element name=\"version\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xsd:string\"/>\r\n<xsd:element name=\"revision\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xsd:string\">\r\n<xsd:annotation>\r\n<xsd:documentation>\r\n                        This value indicates the number of saves or revisions. The application is responsible for updating this value after each revision.\r\n                    </xsd:documentation>\r\n</xsd:annotation>\r\n</xsd:element>\r\n<xsd:element name=\"lastModifiedBy\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xsd:string\"/>\r\n<xsd:element ref=\"dcterms:modified\" minOccurs=\"0\" maxOccurs=\"1\"/>\r\n<xsd:element name=\"contentStatus\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xsd:string\"/>\r\n</xsd:all>\r\n</xsd:complexType>\r\n</xsd:schema>\r\n<xs:schema targetNamespace=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" xmlns:pc=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\r\n<xs:element name=\"Person\">\r\n<xs:complexType>\r\n<xs:sequence>\r\n<xs:element ref=\"pc:DisplayName\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:AccountId\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:AccountType\" minOccurs=\"0\"></xs:element>\r\n</xs:sequence>\r\n</xs:complexType>\r\n</xs:element>\r\n<xs:element name=\"DisplayName\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"AccountId\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"AccountType\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"BDCAssociatedEntity\">\r\n<xs:complexType>\r\n<xs:sequence>\r\n<xs:element ref=\"pc:BDCEntity\" minOccurs=\"0\" maxOccurs=\"unbounded\"></xs:element>\r\n</xs:sequence>\r\n<xs:attribute ref=\"pc:EntityNamespace\"></xs:attribute>\r\n<xs:attribute ref=\"pc:EntityName\"></xs:attribute>\r\n<xs:attribute ref=\"pc:SystemInstanceName\"></xs:attribute>\r\n<xs:attribute ref=\"pc:AssociationName\"></xs:attribute>\r\n</xs:complexType>\r\n</xs:element>\r\n<xs:attribute name=\"EntityNamespace\" type=\"xs:string\"></xs:attribute>\r\n<xs:attribute name=\"EntityName\" type=\"xs:string\"></xs:attribute>\r\n<xs:attribute name=\"SystemInstanceName\" type=\"xs:string\"></xs:attribute>\r\n<xs:attribute name=\"AssociationName\" type=\"xs:string\"></xs:attribute>\r\n<xs:element name=\"BDCEntity\">\r\n<xs:complexType>\r\n<xs:sequence>\r\n<xs:element ref=\"pc:EntityDisplayName\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:EntityInstanceReference\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:EntityId1\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:EntityId2\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:EntityId3\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:EntityId4\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:EntityId5\" minOccurs=\"0\"></xs:element>\r\n</xs:sequence>\r\n</xs:complexType>\r\n</xs:element>\r\n<xs:element name=\"EntityDisplayName\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"EntityInstanceReference\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"EntityId1\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"EntityId2\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"EntityId3\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"EntityId4\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"EntityId5\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"Terms\">\r\n<xs:complexType>\r\n<xs:sequence>\r\n<xs:element ref=\"pc:TermInfo\" minOccurs=\"0\" maxOccurs=\"unbounded\"></xs:element>\r\n</xs:sequence>\r\n</xs:complexType>\r\n</xs:element>\r\n<xs:element name=\"TermInfo\">\r\n<xs:complexType>\r\n<xs:sequence>\r\n<xs:element ref=\"pc:TermName\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:TermId\" minOccurs=\"0\"></xs:element>\r\n</xs:sequence>\r\n</xs:complexType>\r\n</xs:element>\r\n<xs:element name=\"TermName\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"TermId\" type=\"xs:string\"></xs:element>\r\n</xs:schema>\r\n</ct:contentTypeSchema>");
     writer.Flush();
     writer.Close();
 }
 public static void GenerateCustomXmlPart3Content(CustomXmlPart customXmlPart3)
 {
     System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(customXmlPart3.GetStream(System.IO.FileMode.Create), System.Text.Encoding.UTF8);
     writer.WriteRaw("<?mso-contentType?><FormTemplates xmlns=\"http://schemas.microsoft.com/sharepoint/v3/contenttype/forms\"><Display>DocumentLibraryForm</Display><Edit>DocumentLibraryForm</Edit><New>DocumentLibraryForm</New></FormTemplates>");
     writer.Flush();
     writer.Close();
 }
예제 #4
0
        /// <summary>
        /// Gets the first element from custom XML part.
        /// </summary>
        /// <param name="customXmlPart">The custom XML part.</param>
        /// <param name="elementName">Name of the element.</param>
        /// <returns></returns>
        public XElement GetFirstElementFromCustomXmlPart(CustomXmlPart customXmlPart, string elementName)
        {
            if (customXmlPart == null)
            {
                throw new ArgumentNullException("customXmlPart");
            }

            if (string.IsNullOrEmpty(elementName))
            {
                throw new ArgumentNullException("elementName");
            }

            XDocument customPartDoc = null;

            using (XmlReader reader = XmlReader.Create(customXmlPart.GetStream(FileMode.Open, FileAccess.Read)))
            {
                customPartDoc = XDocument.Load(reader);
            }

            XElement element = null;

            if (customPartDoc != null)
            {
                XName elementXName = XName.Get(elementName, this.namespaceUri);
                element = (from e in customPartDoc.Descendants(elementXName)
                           select e).FirstOrDefault();
            }

            return(element);
        }
예제 #5
0
        /// <summary>
        /// Removes the content controls and keep contents.
        /// </summary>
        /// <param name="document">The document.</param>
        public void RemoveContentControlsAndKeepContents(Document document)
        {
            if (document == null)
            {
                throw new ArgumentNullException("document");
            }

            CustomXmlPartCore customXmlPartCore = new CustomXmlPartCore(this.NamespaceUri);
            CustomXmlPart     customXmlPart     = customXmlPartCore.GetCustomXmlPart(document.MainDocumentPart);
            XmlDocument       customPartDoc     = new XmlDocument();

            if (customXmlPart != null)
            {
                using (XmlReader reader = XmlReader.Create(customXmlPart.GetStream(FileMode.Open, FileAccess.Read)))
                {
                    customPartDoc.Load(reader);
                }
            }

            RemoveContentControlsAndKeepContents(document.Body, customPartDoc.DocumentElement);
            foreach (OpenXmlCompositeElement headerPart in document.MainDocumentPart.HeaderParts.SelectMany(hp => hp.RootElement))
            {
                RemoveContentControlsAndKeepContents(headerPart, customPartDoc.DocumentElement);
            }
            document.Save();
        }
        /// <summary>
        /// update the treeview with the customxmlpart nodes
        /// </summary>
        /// <param name="c"></param>
        public void DisplayBaseNodes(CustomXmlPart c)
        {
            treeView1.Nodes.Clear();
            nodeNames.Clear();
            XmlDocument xDoc = new XmlDocument();

            xDoc.Load(c.GetStream());
            PopulateBaseNodes(xDoc);
        }
예제 #7
0
        /// <summary>
        /// 向制定的部件中写数据
        /// </summary>
        /// <param name="xmlPart"></param>
        /// <param name="xdoc"></param>
        public static void WriteXml(this CustomXmlPart xmlPart, XDocument xdoc)
        {
            Stream stream = xmlPart.GetStream(FileMode.Create, FileAccess.Write);
            var    writer = new XmlTextWriter(stream, Encoding.UTF8);

            xdoc.Save(writer);
            writer.Flush();
            writer.Close();
            stream.Close();
        }
예제 #8
0
 /// <summary>
 /// 获取用户自定义部件XML数据
 /// </summary>
 /// <param name="xmlPart"></param>
 /// <returns></returns>
 public static XDocument GetXDocument(this CustomXmlPart xmlPart)
 {
     using (Stream stream = xmlPart.GetStream(FileMode.Open, FileAccess.Read))
     {
         using (XmlReader xReader = XmlReader.Create(stream, new XmlReaderSettings()))
         {
             XDocument xDocument = XDocument.Load(xReader);
             return(xDocument);
         }
     }
 }
예제 #9
0
 /// <summary>
 /// Replaces the custom XML in the main document mainPart.
 /// </summary>
 /// <param name="mainPart">The main document part.</param>
 /// <param name="customXml">The custom XML.</param>
 public static void ReplaceCustomXml(this MainDocumentPart mainPart, XElement customXml)
 {
     if (customXml != null)
     {
         mainPart.RemoveCustomXmlParts();
         CustomXmlPart customXmlPart = mainPart.AddNewPart <CustomXmlPart>();
         using (Stream stream = customXmlPart.GetStream(FileMode.Create, FileAccess.ReadWrite))
             using (XmlWriter writer = XmlWriter.Create(stream))
             {
                 customXml.Save(writer);
             }
     }
 }
 public void CanCreateLargeCustomXmlParts(int size)
 {
     int desiredStreamLength = size * 1024 * 1024;
     string path = $"Document_{size:D2}MB.docm";
     // Create a macro-enabled Word document with a custom XML part having
     // at least the desired size in MB.
     CreateMacroEnabledWordDocument(path, size);
     // Assert that the document does have a custom XML part with at least
     // the desired size.
     using WordprocessingDocument wordDocument = WordprocessingDocument.Open(path, false);
     CustomXmlPart customXmlPart = wordDocument.MainDocumentPart.CustomXmlParts.First();
     using Stream stream = customXmlPart.GetStream(FileMode.Open, FileAccess.Read);
     Assert.True(stream.Length > desiredStreamLength);
 }
예제 #11
0
    protected void ReplaceCustomXML(string fileName, string customXML)
    {
        using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(fileName, true))
        {
            MainDocumentPart mainPart = wordDoc.MainDocumentPart;

            mainPart.DeleteParts <CustomXmlPart>(mainPart.CustomXmlParts);

            //Add a new customXML part and then add content
            CustomXmlPart customXmlPart = mainPart.AddNewPart <CustomXmlPart>();

            //copy the XML into the new part...
            using (StreamWriter ts = new StreamWriter(customXmlPart.GetStream()))
                ts.Write(customXML);
        }
    }
예제 #12
0
        static Uri CreateCustomXML(WordprocessingDocument document, XElement customXML, out string guid)
        {
            CustomXmlPart XMLPart = document.MainDocumentPart.AddCustomXmlPart(CustomXmlPartType.CustomXml);
            StreamWriter  sw      = new StreamWriter(XMLPart.GetStream(FileMode.Create, FileAccess.ReadWrite));

            sw.Write(customXML.ToString());
            sw.Flush();
            sw.Close();
            guid = "{" + Guid.NewGuid().ToString().ToUpper() + "}";
            CustomXmlPropertiesPart propPart = XMLPart.AddNewPart <CustomXmlPropertiesPart>();

            propPart.DataStoreItem = new DataStoreItem(new SchemaReferences())
            {
                ItemId = guid
            };
            return(XMLPart.Uri);
        }
예제 #13
0
        /// <summary>
        /// Writes the element to custom XML part.
        /// </summary>
        /// <param name="customXmlPart">The custom XML part.</param>
        /// <param name="rootElement">The root element.</param>
        public void WriteElementToCustomXmlPart(CustomXmlPart customXmlPart, XElement rootElement)
        {
            if (customXmlPart == null)
            {
                throw new ArgumentNullException("customXmlPart");
            }

            if (rootElement == null)
            {
                throw new ArgumentNullException("rootElement");
            }

            using (XmlWriter writer = XmlWriter.Create(customXmlPart.GetStream(FileMode.Create, FileAccess.Write)))
            {
                rootElement.WriteTo(writer);
                writer.Flush();
            }
        }
예제 #14
0
        /// <summary>
        /// Refreshes the document command bar button_ click.
        /// </summary>
        /// <param name="cmdBarbutton">The CMD barbutton.</param>
        /// <param name="cancel">if set to <c>true</c> [cancel].</param>
        private void RefreshDocumentCommandBarButton_Click(CommandBarButton cmdBarbutton, ref bool cancel)
        {
            app.ScreenUpdating = false;
            Microsoft.Office.Interop.Word.Document doc = app.ActiveDocument;

            // Get the active documents as stream of bytes
            byte[] input = doc.GetPackageStream();

            // Generate document on the Server. AddInService can be a proxy to service, however here it's direct call
            byte[] output = AddInService.GenerateDocument(input);

            if (output != null)
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    ms.Write(output, 0, output.Length);

                    using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(ms, true))
                    {
                        XDocument xDoc    = OPCHelper.OpcToFlatOpc(wordDocument.Package);
                        string    openxml = xDoc.ToString();
                        doc.Range().InsertXML(openxml);

                        // Add CustomXmlPart
                        CustomXmlPartCore customXmlPartCore = new CustomXmlPartCore(DocumentGenerationInfo.NamespaceUri);
                        CustomXmlPart     customPart        = customXmlPartCore.GetCustomXmlPart(wordDocument.MainDocumentPart);

                        if (customPart != null)
                        {
                            XDocument customPartDoc = null;

                            using (XmlReader reader = XmlReader.Create(customPart.GetStream(FileMode.Open, FileAccess.Read)))
                            {
                                customPartDoc = XDocument.Load(reader);
                            }

                            doc.StoreCustomXmlPart(customPartDoc);
                        }
                    }
                }
            }

            app.ScreenUpdating = true;
        }
예제 #15
0
        public void Extract()
        {
            CheckIfTypedSettingIsNull();

            using (WordprocessingDocument document = WordprocessingDocument.Open(TypedSetting.DocxFilePath, true))
            {
                string        dataStoreItemId = TypedSetting.DataStoreItemId;
                CustomXmlPart xmlPart         = GetCustomXmlPart(document, dataStoreItemId);

                if (xmlPart != null)
                {
                    using (StreamReader stream = new StreamReader(xmlPart.GetStream(FileMode.Open, FileAccess.Read)))
                    {
                        XDocument doc = XDocument.Load(stream);
                        doc.Save(TypedSetting.CustomXmlFilePath);
                    }
                }
            }
        }
예제 #16
0
파일: WordDocument.cs 프로젝트: mrsunil/bp2
        public virtual T GetCustomXmlPart <T>()
        {
            using (MemoryStream memoryStream = new MemoryStream(_file))
            {
                using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(memoryStream, false))
                {
                    MainDocumentPart mainPart  = wordDoc.MainDocumentPart;
                    CustomXmlPart    myXmlPart = null;
                    foreach (var xmlPart in mainPart.CustomXmlParts)
                    {
                        var exists = false;
                        using (XmlTextReader xReader = new XmlTextReader(xmlPart.GetStream(FileMode.Open, FileAccess.Read)))
                        {
                            xReader.MoveToContent();
                            exists = xReader.NamespaceURI.Equals(AtlasNamespace, StringComparison.InvariantCultureIgnoreCase);
                        }

                        if (exists)
                        {
                            myXmlPart = xmlPart;
                            break;
                        }
                    }

                    if (myXmlPart != null)
                    {
                        var           xmlReader  = XmlReader.Create(myXmlPart.GetStream(FileMode.Open, FileAccess.Read));
                        XmlSerializer serializer = new XmlSerializer(typeof(T), AtlasNamespace);
                        var           metadata   = (T)serializer.Deserialize(xmlReader);

                        return(metadata);
                    }
                }
            }

            return(default(T));
        }
예제 #17
0
        private XDocument GetXDocument(CustomXmlPart customXmlPart)
        {
            XDocument document = XDocument.Load(customXmlPart.GetStream());

            return(document);
        }
예제 #18
0
        public static void InsertCustomXmlForPpt(string pptFileName, string customXML)
        {
            using (PresentationDocument openXmlDoc = PresentationDocument.Open(pptFileName, true))
            {
                // Create a new custom XML part
                int           count         = openXmlDoc.PresentationPart.Parts.Count();
                string        customXmlId   = string.Format("rId{0}", count + 1);
                CustomXmlPart customXmlPart = openXmlDoc.PresentationPart.AddCustomXmlPart(CustomXmlPartType.CustomXml, customXmlId);
                using (Stream outputStream = customXmlPart.GetStream())
                {
                    using (StreamWriter ts = new StreamWriter(outputStream))
                    {
                        ts.Write(customXML);
                    }
                }

                // Add datastore so that the xml will persist after the document is modified
                count = customXmlPart.Parts.Count();
                CustomXmlPropertiesPart customXmlPropertiesPart = customXmlPart.AddNewPart <CustomXmlPropertiesPart>(string.Format("rId{0}", count + 1));
                DataStoreItem           dataStoreItem           = new DataStoreItem()
                {
                    ItemId = string.Format("{0}", Guid.NewGuid())
                };
                dataStoreItem.AddNamespaceDeclaration("ds", "http://schemas.openxmlformats.org/officeDocument/2006/customXml");

                SchemaReferences schemaReferences = new SchemaReferences();
                SchemaReference  schemaReference  = new SchemaReference()
                {
                    Uri = "http://www.w3.org/2001/XMLSchema"
                };

                schemaReferences.Append(schemaReference);
                dataStoreItem.Append(schemaReferences);
                customXmlPropertiesPart.DataStoreItem = dataStoreItem;

                // Add the xml to the customer data section of the document
                CustomerData customerData = new CustomerData()
                {
                    Id = customXmlId
                };
                if (openXmlDoc.PresentationPart.Presentation.CustomerDataList != null)
                {
                    // Sequence matters: http://www.schemacentral.com/sc/ooxml/e-p_custDataLst-1.html
                    if (openXmlDoc.PresentationPart.Presentation.CustomerDataList.Count() > 0)
                    {
                        openXmlDoc.PresentationPart.Presentation.CustomerDataList.InsertBefore(customerData, openXmlDoc.PresentationPart.Presentation.CustomerDataList.FirstChild);
                    }
                    else
                    {
                        openXmlDoc.PresentationPart.Presentation.CustomerDataList.Append(customerData);
                    }
                }
                else
                {
                    CustomerDataList customerDataList = new CustomerDataList();
                    customerDataList.Append(customerData);

                    // Sequence matters: http://www.schemacentral.com/sc/ooxml/e-p_presentation.html
                    if (openXmlDoc.PresentationPart.Presentation.Kinsoku != null)
                    {
                        openXmlDoc.PresentationPart.Presentation.InsertBefore(customerDataList, openXmlDoc.PresentationPart.Presentation.Kinsoku);
                    }
                    else if (openXmlDoc.PresentationPart.Presentation.DefaultTextStyle != null)
                    {
                        openXmlDoc.PresentationPart.Presentation.InsertBefore(customerDataList, openXmlDoc.PresentationPart.Presentation.DefaultTextStyle);
                    }
                    else if (openXmlDoc.PresentationPart.Presentation.ModificationVerifier != null)
                    {
                        openXmlDoc.PresentationPart.Presentation.InsertBefore(customerDataList, openXmlDoc.PresentationPart.Presentation.ModificationVerifier);
                    }
                    else if (openXmlDoc.PresentationPart.Presentation.PresentationExtensionList != null)
                    {
                        openXmlDoc.PresentationPart.Presentation.InsertBefore(customerDataList, openXmlDoc.PresentationPart.Presentation.PresentationExtensionList);
                    }
                    else
                    {
                        openXmlDoc.PresentationPart.Presentation.Append(customerDataList);
                    }
                }
            }
        }