Example #1
0
        private void AddPicture(OXmlPictureElement element)
        {
            //if (_paragraph == null)
            //    AddParagraph();
            AddRun();

            // Drawing : child Inline, Anchor
            // <w:drawing>
            _run.AppendChild(new Drawing(OXmlPicture.Create(_mainPart, element, ++_pictureId)));
        }
Example #2
0
        // Body : BodyType : OpenXmlCompositeElement
        // Header : OpenXmlPartRootElement : OpenXmlCompositeElement

        private void _Create(string file, IEnumerable <OXmlElement> elements)
        {
            using (_document = WordprocessingDocument.Create(file, WordprocessingDocumentType.Document))
            {
                _mainPart          = _document.AddMainDocumentPart();
                _mainPart.Document = new Document();
                OXmlPicture.AddNamespaceDeclarations(_mainPart.Document);
                _body    = _mainPart.Document.AppendChild(new Body());
                _element = _body;

                foreach (OXmlElement element in elements)
                {
                    switch (element.Type)
                    {
                    case OXmlElementType.Paragraph:
                        AddParagraph((OXmlParagraphElement)element);
                        break;

                    case OXmlElementType.Break:
                        AddBreak((OXmlBreakElement)element);
                        break;

                    case OXmlElementType.Text:
                        AddText((OXmlTextElement)element);
                        break;

                    case OXmlElementType.Line:
                        AddLine();
                        break;

                    case OXmlElementType.TabStop:
                        AddTabStop();
                        break;

                    case OXmlElementType.SimpleField:
                        AddSimpleField((OXmlSimpleFieldElement)element);
                        break;

                    case OXmlElementType.DocSection:
                        //if (_headerFooter)
                        if (_currentElement != OXmlDocElementType.Body)
                        {
                            throw new PBException("DocSection cant be inside Header or Footer");
                        }
                        AddDocSection((OXmlDocSectionElement)element);
                        break;

                    //case OXmlElementType.DocDefaults:
                    //    if (_headerFooter)
                    //        throw new PBException("DocDefaults cant be inside Header or Footer");
                    //    AddDocDefaults((OXmlDocDefaultsElement)element);
                    //    break;
                    case OXmlElementType.DocDefaultsRunProperties:
                        //if (_headerFooter)
                        if (_currentElement != OXmlDocElementType.Body)
                        {
                            throw new PBException("DocDefaultsRunProperties cant be inside Header or Footer");
                        }
                        AddRunPropertiesDefault((OXmlDocDefaultsRunPropertiesElement)element);
                        break;

                    case OXmlElementType.DocDefaultsParagraphProperties:
                        //if (_headerFooter)
                        if (_currentElement != OXmlDocElementType.Body)
                        {
                            throw new PBException("DocDefaultsParagraphProperties cant be inside Header or Footer");
                        }
                        //AddParagraphPropertiesDefault((OXmlDocDefaultsParagraphPropertiesElement)element);
                        AddParagraphPropertiesDefault();
                        break;

                    //case OXmlElementType.OpenHeaderFooter:
                    //    OpenHeaderFooter((OXmlOpenHeaderFooter)element);
                    //    break;
                    case OXmlElementType.OpenHeader:
                        if (_currentElement != OXmlDocElementType.Body)
                        {
                            throw new PBException("Open header cant be inside Header or Footer");
                        }
                        OpenHeader((OXmlOpenHeaderElement)element);
                        break;

                    case OXmlElementType.OpenFooter:
                        if (_currentElement != OXmlDocElementType.Body)
                        {
                            throw new PBException("Open footer cant be inside Header or Footer");
                        }
                        OpenFooter((OXmlOpenFooterElement)element);
                        break;

                    case OXmlElementType.CloseHeader:
                        if (_currentElement != OXmlDocElementType.Header)
                        {
                            throw new PBException("Close header without open header");
                        }
                        CloseHeaderFooter();
                        break;

                    case OXmlElementType.CloseFooter:
                        if (_currentElement != OXmlDocElementType.Footer)
                        {
                            throw new PBException("Close footer without open footer");
                        }
                        CloseHeaderFooter();
                        break;

                    case OXmlElementType.Style:
                        //if (_headerFooter)
                        if (_currentElement != OXmlDocElementType.Body)
                        {
                            throw new PBException("Style cant be inside Header or Footer");
                        }
                        AddStyle((OXmlStyleElement)element);
                        break;

                    case OXmlElementType.Picture:
                        AddPicture((OXmlPictureElement)element);
                        break;

                    default:
                        throw new PBException($"unknow element type {element.Type}");
                    }
                }
            }
        }