Beispiel #1
0
        public override POIXMLDocumentPart CreateDocumentPart(POIXMLDocumentPart parent, PackageRelationship rel, PackagePart part)
        {
            POIXMLRelation descriptor = XWPFRelation.GetInstance(rel.RelationshipType);
            if (descriptor == null || descriptor.RelationClass == null)
            {
                logger.Log(POILogger.DEBUG, "using default POIXMLDocumentPart for " + rel.RelationshipType);
                return new POIXMLDocumentPart(part, rel);
            }

            try
            {
                Type cls = descriptor.RelationClass;
                try
                {
                    ConstructorInfo constructor = cls.GetConstructor(new Type[] { typeof(POIXMLDocumentPart), typeof(PackagePart), typeof(PackageRelationship) });
                    return constructor.Invoke(new object[] { parent, part, rel }) as POIXMLDocumentPart;
                }
                catch (Exception)
                {
                    ConstructorInfo constructor = cls.GetConstructor(new Type[] { typeof(PackagePart), typeof(PackageRelationship) });
                    return constructor.Invoke(new object[] { part, rel }) as POIXMLDocumentPart;
                }
            }
            catch (Exception e)
            {
                throw new POIXMLException(e);
            }
        }
Beispiel #2
0
        public XWPFPictureData GetPictureDataByID(string blipID)
        {
            POIXMLDocumentPart relationById = this.GetRelationById(blipID);

            if (relationById is XWPFPictureData)
            {
                return((XWPFPictureData)relationById);
            }
            return((XWPFPictureData)null);
        }
Beispiel #3
0
        /**
         * returns the PictureData by blipID
         * @param blipID
         * @return XWPFPictureData of a specificID
         * @throws Exception
         */

        public XWPFPictureData GetPictureDataByID(string blipID)
        {
            POIXMLDocumentPart relatedPart = GetRelationById(blipID);

            if (relatedPart != null && relatedPart is XWPFPictureData)
            {
                return((XWPFPictureData)relatedPart);
            }
            return(null);
        }
        public XWPFHeaderFooter(POIXMLDocumentPart parent, PackagePart part, PackageRelationship rel) :
            base(parent, part, rel)
        {
            ;
            this.document = (XWPFDocument)GetParent();

            if (this.document == null)
            {
                throw new NullReferenceException();
            }
        }
Beispiel #5
0
        public XWPFHeaderFooter(POIXMLDocumentPart parent, PackagePart part, PackageRelationship rel) :
            base(parent, part, rel)
        {
            ;
            this.document = (XWPFDocument)GetParent();

            if (this.document == null)
            {
                throw new NullReferenceException();
            }
        }
Beispiel #6
0
 public void Bug59058()
 {
     String[] files = { "bug57031.docx", "bug59058.docx" };
     foreach (String f in files)
     {
         ZipFile          zf       = new ZipFile(POIDataSamples.GetDocumentInstance().GetFile(f));
         ZipEntry         entry    = zf.GetEntry("word/document.xml");
         XmlDocument      xml      = POIXMLDocumentPart.ConvertStreamToXml(zf.GetInputStream(entry));
         DocumentDocument document = DocumentDocument.Parse(xml, POIXMLDocumentPart.NamespaceManager);
         Assert.IsNotNull(document);
         zf.Close();
     }
 }
        private int GetRelationIndex(XWPFRelation relation)
        {
            List <POIXMLDocumentPart> relations = doc.GetRelations();
            int i = 1;

            for (IEnumerator <POIXMLDocumentPart> it = relations.GetEnumerator(); it.MoveNext();)
            {
                POIXMLDocumentPart item = it.Current;
                if (item.GetPackageRelationship().RelationshipType.Equals(relation.Relation))
                {
                    i++;
                }
            }
            return(i);
        }
Beispiel #8
0
        /**
         * Get the PictureData of the Picture, if present.
         * Note - not all kinds of picture have data
         */
        public XWPFPictureData GetPictureData()
        {
            String             blipId = ctPic.blipFill.blip.embed;
            POIXMLDocumentPart part   = run.GetParagraph().GetPart();

            if (part != null)
            {
                POIXMLDocumentPart relatedPart = part.GetRelationById(blipId);
                if (relatedPart is XWPFPictureData)
                {
                    return((XWPFPictureData)relatedPart);
                }
            }
            return(null);
        }
Beispiel #9
0
        public void TestCommitNullPart()
        {
            POIXMLDocumentPart part = new POIXMLDocumentPart();

            part.PrepareForCommit();
            part.Commit();
            part.OnSave(new List <PackagePart>());

            Assert.IsNull(part.GetRelationById(null));
            Assert.IsNull(part.GetRelationId(null));
            Assert.IsFalse(part.RemoveRelation(null, true));
            part.RemoveRelation(null);
            Assert.AreEqual(string.Empty, part.ToString());
            part.OnDocumentCreate();
            //part.GetTargetPart(null);
        }
Beispiel #10
0
 /**
  * Recursively Traverse a OOXML document and assert that same logical parts have the same physical instances
  */
 private void Traverse(POIXMLDocumentPart part, Dictionary <String, POIXMLDocumentPart> context)
 {
     context[part.GetPackageRelationship().TargetUri.ToString()] = part;
     foreach (POIXMLDocumentPart p in part.GetRelations())
     {
         String uri = p.GetPackageRelationship().TargetUri.ToString();
         if (!context.ContainsKey(uri))
         {
             Traverse(p, context);
         }
         else
         {
             POIXMLDocumentPart prev = context[uri];
             Assert.AreSame(prev, p, "Duplicate POIXMLDocumentPart instance for targetURI=" + uri);
         }
     }
 }
Beispiel #11
0
        public void TestPictureHandlingComplex()
        {
            XWPFDocument doc        = XWPFTestDataSamples.OpenSampleDocument("issue_51265_3.docx");
            XWPFHeader   xwpfHeader = doc.HeaderList[(0)];

            Assert.AreEqual(3, doc.AllPictures.Count);
            Assert.AreEqual(3, xwpfHeader.AllPictures.Count);
            Assert.AreEqual(5, doc.AllPackagePictures.Count);

            byte[]             nature1 = XWPFTestDataSamples.GetImage("nature1.jpg");
            String             id      = doc.AddPictureData(nature1, (int)PictureType.JPEG);
            POIXMLDocumentPart part1   = xwpfHeader.GetRelationById("rId1");
            XWPFPictureData    part2   = (XWPFPictureData)doc.GetRelationById(id);

            Assert.AreSame(part1, part2);

            doc.Package.Revert();
        }
Beispiel #12
0
        public XWPFPictureData GetPictureData()
        {
            CT_BlipFillProperties blipFill = this.ctPic.blipFill;

            if (blipFill == null || !blipFill.IsSetBlip())
            {
                return((XWPFPictureData)null);
            }
            string             embed = blipFill.blip.embed;
            POIXMLDocumentPart part  = this.run.GetParagraph().GetPart();

            if (part != null)
            {
                POIXMLDocumentPart relationById = part.GetRelationById(embed);
                if (relationById is XWPFPictureData)
                {
                    return((XWPFPictureData)relationById);
                }
            }
            return((XWPFPictureData)null);
        }
Beispiel #13
0
        public override POIXMLDocumentPart CreateDocumentPart(POIXMLDocumentPart parent, PackageRelationship rel, PackagePart part)
        {
            POIXMLRelation descriptor = XSSFRelation.GetInstance(rel.RelationshipType);

            if (descriptor == null || descriptor.RelationClass == null)
            {
                logger.Log(POILogger.DEBUG, "using default POIXMLDocumentPart for " + rel.RelationshipType);
                return(new POIXMLDocumentPart(part, rel));
            }

            try
            {
                Type            cls         = descriptor.RelationClass;
                ConstructorInfo constructor = cls.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { typeof(PackagePart), typeof(PackageRelationship) }, null);
                return((POIXMLDocumentPart)constructor.Invoke(new object[] { part, rel }));
            }
            catch (Exception e)
            {
                throw new POIXMLException(e);
            }
        }
Beispiel #14
0
        /**
         * Recursively Traverse a OOXML document and assert that same logical parts have the same physical instances
         */
        private void Traverse(POIXMLDocumentPart part, Dictionary <String, POIXMLDocumentPart> context)
        {
            Assert.AreEqual(part.GetPackageRelationship().TargetUri.ToString(), part.GetPackagePart().PartName.Name);

            context[part.GetPackagePart().PartName.Name] = part;
            foreach (POIXMLDocumentPart p in part.GetRelations())
            {
                Assert.IsNotNull(p.ToString());
                String uri = p.GetPackagePart().PartName.URI.ToString();
                Assert.AreEqual(uri, p.GetPackageRelationship().TargetUri.ToString());

                if (!context.ContainsKey(uri))
                {
                    Traverse(p, context);
                }
                else
                {
                    POIXMLDocumentPart prev = context[uri];
                    Assert.AreSame(prev, p, "Duplicate POIXMLDocumentPart instance for targetURI=" + uri);
                }
            }
        }
Beispiel #15
0
        public override POIXMLDocumentPart CreateDocumentPart(POIXMLDocumentPart parent, PackageRelationship rel, PackagePart part)
        {
            POIXMLRelation instance = (POIXMLRelation)XWPFRelation.GetInstance(rel.RelationshipType);

            if (instance != null)
            {
                if (instance.RelationClass != null)
                {
                    try
                    {
                        Type relationClass = instance.RelationClass;
                        try
                        {
                            return(relationClass.GetConstructor(new Type[3] {
                                typeof(POIXMLDocumentPart), typeof(PackagePart), typeof(PackageRelationship)
                            }).Invoke(new object[3] {
                                (object)parent, (object)part, (object)rel
                            }) as POIXMLDocumentPart);
                        }
                        catch (Exception ex)
                        {
                            return(relationClass.GetConstructor(new Type[2] {
                                typeof(PackagePart), typeof(PackageRelationship)
                            }).Invoke(new object[2] {
                                (object)part, (object)rel
                            }) as POIXMLDocumentPart);
                        }
                    }
                    catch (Exception ex)
                    {
                        throw new POIXMLException(ex);
                    }
                }
            }
            XWPFFactory.logger.Log(1, (object)("using default POIXMLDocumentPart for " + rel.RelationshipType));
            return(new POIXMLDocumentPart(part, rel));
        }
 /**
  * Figures out the policy for the given document,
  *  and Creates any header and footer objects
  *  as required.
  */
 public XWPFHeaderFooterPolicy(XWPFDocument doc, CT_SectPr sectPr)
 {
     // Grab what headers and footers have been defined
     // For now, we don't care about different ranges, as it
     //  doesn't seem that .docx properly supports that
     //  feature of the file format yet
     this.doc = doc;
     for (int i = 0; i < sectPr.SizeOfHeaderReferenceArray(); i++)
     {
         // Get the header
         CT_HdrFtrRef       ref1        = sectPr.GetHeaderReferenceArray(i);
         POIXMLDocumentPart relatedPart = doc.GetRelationById(ref1.id);
         XWPFHeader         hdr         = null;
         if (relatedPart != null && relatedPart is XWPFHeader)
         {
             hdr = (XWPFHeader)relatedPart;
         }
         // Assign it
         ST_HdrFtr type = ref1.type;
         assignHeader(hdr, type);
     }
     for (int i = 0; i < sectPr.SizeOfFooterReferenceArray(); i++)
     {
         // Get the footer
         CT_HdrFtrRef       ref1        = sectPr.GetFooterReferenceArray(i);
         POIXMLDocumentPart relatedPart = doc.GetRelationById(ref1.id);
         XWPFFooter         ftr         = null;
         if (relatedPart != null && relatedPart is XWPFFooter)
         {
             ftr = (XWPFFooter)relatedPart;
         }
         // Assign it
         ST_HdrFtr type = ref1.type;
         assignFooter(ftr, type);
     }
 }
Beispiel #17
0
 public XWPFHeader(POIXMLDocumentPart parent, PackagePart part, PackageRelationship rel)
     : base(parent, part, rel)
 {
 }
Beispiel #18
0
 public XWPFHeader(POIXMLDocumentPart parent, PackagePart part, PackageRelationship rel)
     : base(parent, part, rel)
 {
     ;
 }
Beispiel #19
0
 public override POIXMLDocumentPart CreateDocumentPart(POIXMLDocumentPart parent, PackageRelationship rel, PackagePart part)
 {
     return(new POIXMLDocumentPart(part, rel));
 }
Beispiel #20
0
 public XWPFFooter(POIXMLDocumentPart parent, PackagePart part)
     : base(parent, part)
 {
 }
Beispiel #21
0
 public XWPFFooter(POIXMLDocumentPart parent, PackagePart part, PackageRelationship rel)
     : this(parent, part)
 {
 }