Esempio n. 1
0
        public void InsertAutoText(string SignatureName)
        {
            const string NEW_DOCUMENT_NAME = "Sample AutoText Insert.docx";
            string       oldrelIDPic       = "";

            DocumentFormat.OpenXml.Drawing.Blip imgblip;
            using (WordprocessingDocument sampleDocument = WordprocessingDocument.Create(pathnewdoc + NEW_DOCUMENT_NAME, WordprocessingDocumentType.Document))
                using (WordprocessingDocument wrdTemplate = WordprocessingDocument.Open(pathtemplatedoc + TEMPLATE_NAME, false))
                {
                    MainDocumentPart mdp = sampleDocument.AddMainDocumentPart();
                    mdp.Document = new Document(new Body());

                    GlossaryDocumentPart gDocPart = wrdTemplate.MainDocumentPart.GetPartsOfType <GlossaryDocumentPart>().FirstOrDefault();
                    if (gDocPart != null)
                    {
                        GlossaryDocument gDoc = gDocPart.GlossaryDocument;
                        if (gDoc != null)
                        {
                            Console.WriteLine("AutoText Entries!");
                            foreach (DocPart entry in gDoc.DocParts)
                            {
                                if (entry.DocPartProperties.Category.Gallery.Val == DocPartGalleryValues.AutoText &&
                                    entry.DocPartProperties.DocPartName.Val == SignatureName)
                                {
                                    Console.WriteLine("Entry Name ==> {0}", entry.DocPartProperties.DocPartName.Val);
                                    Console.WriteLine(entry.DocPartBody.InnerXml);
                                    int paracount = entry.DocPartBody.Descendants <Paragraph>().Count();
                                    Console.WriteLine("Count of paragraphs ==> {0}", paracount);
                                    foreach (Paragraph entrypara in entry.DocPartBody.Descendants <Paragraph>())
                                    {
                                        // Let's get the relationship ID if it's there
                                        int PicCount = entrypara.Descendants <DocumentFormat.OpenXml.Drawing.Blip>().Count();
                                        if (PicCount > 0)
                                        {
                                            imgblip     = entrypara.Descendants <DocumentFormat.OpenXml.Drawing.Blip>().FirstOrDefault();
                                            oldrelIDPic = imgblip.Embed.Value;
                                            Console.WriteLine("Old Relationship ID ==> {0}", oldrelIDPic);
                                            imgblip.Embed.Value = "rId10";
                                            Console.WriteLine(imgblip.Embed.Value);

                                            ImagePart newSigImg = mdp.AddImagePart(ImagePartType.Png, imgblip.Embed.Value);
                                            mdp.CreateRelationshipToPart(newSigImg, imgblip.Embed.Value);
                                            newSigImg.FeedData(gDocPart.GetPartById(oldrelIDPic).GetStream());
                                        }
                                        mdp.Document.Body.AppendChild <Paragraph>(new Paragraph(entrypara.OuterXml));
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("No Glossary Document Part (AutoText Entries) found.");
                    }
                }
        }
Esempio n. 2
0
 public void GetPicFromGlossary()
 {
     using (WordprocessingDocument wrdTemplate = WordprocessingDocument.Open(pathtemplatedoc + TEMPLATE_NAME, false))
     {
         GlossaryDocumentPart glsDocPart = wrdTemplate.MainDocumentPart.GlossaryDocumentPart;
         if (glsDocPart != null)
         {
             foreach (ImagePart img in glsDocPart.ImageParts)
             {
                 Console.WriteLine("Relationship Id ==> {0}\tUri ==> {1}", glsDocPart.GetIdOfPart(img), img.Uri);
             }
         }
     }
 }
Esempio n. 3
0
 public void BuildDocument(string[] AutoTextName)
 {
     /* Here's where I look in the Glossary Document Part to determine it there IS AutoText
      * If there isn't, then there's no use in creating the List of AutoText objects!
      */
     gdp = sslmdp.GlossaryDocumentPart;
     if (gdp != null)
     {
         gd = gdp.GlossaryDocument;
         foreach (string atxname in AutoTextName)
         {
             atx = new CBAutoText(atxname, gd.DocParts, ssldoc.Body);
             atx.Insert();
         }
         wrddoc.SaveAs(DOC_PATH_NAME);
         wrddoc.Close();
     }
 }
Esempio n. 4
0
        public void InvestigateTemplate()
        {
            // I'll use this to understand code and the template package
            using (WordprocessingDocument wrdTemplate = WordprocessingDocument.Open(pathtemplatedoc + TEMPLATE_NAME, false))
            {
                int PartCount = 0;
                // Let's take a look at the Word package parts
                PartCount = wrdTemplate.Parts.Count();
                Console.WriteLine("Looking at the WordprocessingDocument");
                Console.WriteLine("Count of WordprocessingDocument Parts ==> {0}", PartCount);
                Console.WriteLine();
                if (PartCount > 0)
                {
                    Console.WriteLine("Rel ID\tUri\t\t\t\tOpenXml Part Name");
                    foreach (IdPartPair part in wrdTemplate.Parts)
                    {
                        Console.WriteLine("{0}\t{2}\t\t{1}", part.RelationshipId, part.OpenXmlPart.GetType().Name, part.OpenXmlPart.Uri);
                    }
                }
                Console.WriteLine();

                // Let's take a look at the 2nd level: The Main Document Parts
                PartCount = wrdTemplate.MainDocumentPart.Parts.Count();
                Console.WriteLine("Count of Main Document Parts ==> {0}", PartCount);
                Console.WriteLine();
                if (PartCount > 0)
                {
                    Console.WriteLine("Rel ID\tUri\t\t\t\tOpenXml Part Name");
                    foreach (IdPartPair part in wrdTemplate.MainDocumentPart.Parts)
                    {
                        Console.WriteLine("{0}\t{2}\t\t{1}", part.RelationshipId, part.OpenXmlPart.GetType().Name, part.OpenXmlPart.Uri);
                    }
                }
                Console.WriteLine();

                //Now let's take a look at any Glossary Document Part (AutoText Entries) we may find
                GlossaryDocumentPart gDocPart = wrdTemplate.MainDocumentPart.GetPartsOfType <GlossaryDocumentPart>().FirstOrDefault();
                if (gDocPart != null)
                {
                    PartCount = gDocPart.Parts.Count();
                    Console.WriteLine("Count of Glossary Parts ==> {0}", PartCount);
                    Console.WriteLine();
                    if (PartCount > 0)
                    {
                        Console.WriteLine("Rel ID\tUri\t\t\t\t\tOpenXml Part Name");
                        foreach (IdPartPair part in gDocPart.Parts)
                        {
                            Console.WriteLine("{0}\t{2}\t\t{1}", part.RelationshipId, part.OpenXmlPart.GetType().Name, part.OpenXmlPart.Uri);
                        }
                    }
                    Console.WriteLine();
                    GlossaryDocument gDoc = gDocPart.GlossaryDocument;
                    if (gDoc != null)
                    {
                        Console.WriteLine("AutoText Entries!");
                        foreach (DocPart entry in gDoc.DocParts)
                        {
                            if (entry.DocPartProperties.Category.Gallery.Val == DocPartGalleryValues.AutoText)
                            {
                                Console.WriteLine("Entry Name ==> {0}", entry.DocPartProperties.DocPartName.Val);
                            }
                        }
                    }
                }
                else
                {
                    Console.WriteLine("No Glossary Document Part (AutoText Entries) found.");
                }
            }
        }
Esempio n. 5
0
        public void BuildDocument(string[] AutoTextName)
        {
            /* Here's where I look in the Glossary Document Part to determine it there IS AutoText
             * If there isn't, then there's no use in creating the List of AutoText objects!
             */
            gdp = mdp.GlossaryDocumentPart;
            if (gdp != null)
            {
                foreach (string atxname in AutoTextName)
                {
                    atxt = new CBAutoText
                    {
                        GDP  = gdp,
                        Name = atxname
                    };
                    Console.WriteLine("AutoText Name ==> {0}", atxt.Name);

                    // Create a new relationship in the NEW document with the AutoText FOUND in the template
                    // Think about changing how this code is called.
                    atxt.CheckForRelationship();

                    // Retrieve RELATIONSHIP IDs from the document/document.xml in Main document/Document being created
                    Console.WriteLine("Count of Content Controls in this document is {0}\n", doc.Body.Descendants <SdtElement>().Count());
                    Console.ReadLine();

                    var cctrl = (from sdtCtrl in doc.Body.Descendants <SdtElement>()
                                 where sdtCtrl.SdtProperties.GetFirstChild <SdtAlias>().Val == atxt.CCName ||
                                 sdtCtrl.SdtProperties.GetFirstChild <SdtAlias>().Val == atxt.Name
                                 select sdtCtrl).SingleOrDefault();

                    XElement cc = XElement.Parse(atxt.CCContent);
                    IEnumerable <XAttribute> ccAttrs = cc.Descendants().Attributes();
                    var ccRelIDs = (from attrib in ccAttrs
                                    where attrib.Value.Contains("rId")
                                    select attrib).ToArray();

                    Console.WriteLine("List of IdPartPairs {0}", mdp.Parts.Count());
                    foreach (var item in mdp.Parts)
                    {
                        Console.WriteLine("RelIDs ==> {0}", item.RelationshipId);
                    }

                    Console.WriteLine("Found rIds {0}", ccRelIDs.Count());
                    foreach (var item in ccRelIDs)
                    {
                        Console.WriteLine("RelIDs ==> {0}", item);
                    }

                    Console.WriteLine();

                    if (ccRelIDs.Count() > 0)
                    {
                        foreach (var RelIDs in ccRelIDs)
                        {
                            oldid = RelIDs.Value;
                            Console.WriteLine("RelIDs = {0} and oldid = {1}", RelIDs.Value, oldid);
                        }
                    }


                    if (atxt.HasARelationship)
                    {
                        int i = 0;
                        foreach (var RelPart in atxt.RelationshipParts)
                        {
                            //Establish new relationship
                            atxt.NewRelID = mdp.CreateRelationshipToPart(RelPart);
                            newsignature  = atxt.Content.Replace(oldid, atxt.NewRelID);
                            i++;
                        }
                    }
                    if (newsignature.Length != 0)
                    {
                        cctrl.InnerXml = newsignature;
                    }
                    else
                    {
                        cctrl.InnerXml = atxt.Content;
                    }
                }
                wrddoc.SaveAs(DOC_PATH_NAME);
                wrddoc.Close();
            }
        }
Esempio n. 6
0
        public static void DisplayImagePartsfromTemplate()
        {
            string TemplateName = @"C:\Users\ajones\Documents\Visual Studio 2015\Operation Kyuzo\Prototypes and Study\Templates\SoleSourceLetter v54.dotx";

            using (WordprocessingDocument wrdTemplate = WordprocessingDocument.Open(TemplateName, false))
            {
                MainDocumentPart mdpTemplate = wrdTemplate.MainDocumentPart;
                Console.WriteLine("Template main document part parts count {0}", mdpTemplate.Parts.Count());
                Console.WriteLine("*************************************************************************");
                foreach (IdPartPair mdpPart in mdpTemplate.Parts)
                {
                    Console.WriteLine("RelationshipID:\t{0}", mdpPart.RelationshipId);
                    Console.WriteLine("OpenXML Part:\t{0}", mdpPart.OpenXmlPart.GetType().Name);
                    Console.WriteLine("Uri:\t\t{0}", mdpPart.OpenXmlPart.Uri);
                    Console.WriteLine();
                }
                Console.WriteLine("*************************************************************************");
                Console.ReadLine();

                /*
                 * imagecount = mdpTemplate.ImageParts.Count();
                 * Console.WriteLine("Image Parts count = {0}", imagecount);
                 * foreach (var image in mdpTemplate.ImageParts)
                 * {
                 *  Console.WriteLine("Uri = {0}", image.Uri);
                 *  Console.WriteLine("RelationshipType = {0}",image.RelationshipType);
                 * }
                 * Console.WriteLine("{0}, Done displaying the image files found in the main document part", imagecount);
                 * Console.WriteLine();
                 * Console.WriteLine();
                 */
                if (wrdTemplate.MainDocumentPart.GetPartsOfType <GlossaryDocumentPart>().Count() > 0)
                {
                    Console.WriteLine("Template Glossary document parts count {0}", mdpTemplate.Parts.Count());
                    Console.WriteLine("*************************************************************************");
                    GlossaryDocumentPart gp = wrdTemplate.MainDocumentPart.GlossaryDocumentPart;

                    /*
                     * imagecount = gp.ImageParts.Count();
                     * foreach (ImagePart image in gp.ImageParts)
                     * {
                     *  Console.WriteLine("Uri = {0}", image.Uri);
                     *  Console.WriteLine("RelationshipType = {0}",image.RelationshipType);
                     *  Console.WriteLine(image);
                     *  Console.WriteLine();
                     * }
                     * Console.WriteLine("{0}, Done displaying the image files found in the Glossary Parts document", imagecount);
                     * Console.WriteLine();
                     * Console.WriteLine(gp.Parts.Count());
                     */

                    foreach (IdPartPair gpart in gp.Parts)
                    {
                        Console.WriteLine("RelationshipID:\t{0}", gpart.RelationshipId);
                        Console.WriteLine("OpenXML Part:\t{0}", gpart.OpenXmlPart.GetType().Name);
                        Console.WriteLine("Uri:\t\t{0}", gpart.OpenXmlPart.Uri);
                        Console.WriteLine();
                    }
                    Console.WriteLine("*************************************************************************");
                }
            }
        }