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.GetTypeInfo().GetConstructor(new Type[] { typeof(POIXMLDocumentPart), typeof(PackagePart), typeof(PackageRelationship) }); return(constructor.Invoke(new object[] { parent, part, rel }) as POIXMLDocumentPart); } catch (Exception) { ConstructorInfo constructor = cls.GetTypeInfo().GetConstructor(new Type[] { typeof(PackagePart), typeof(PackageRelationship) }); return(constructor.Invoke(new object[] { part, rel }) as POIXMLDocumentPart); } } catch (Exception e) { throw new POIXMLException(e); } }
public void TestRegisterPackagePictureData() { XWPFDocument doc = XWPFTestDataSamples.OpenSampleDocument("issue_51265_1.docx"); /* manually assemble a new image package part*/ OPCPackage opcPckg = doc.Package; XWPFRelation jpgRelation = XWPFRelation.IMAGE_JPEG; PackagePartName partName = PackagingUriHelper.CreatePartName(jpgRelation.DefaultFileName.Replace('#', '2')); PackagePart newImagePart = opcPckg.CreatePart(partName, jpgRelation.ContentType); byte[] nature1 = XWPFTestDataSamples.GetImage("abstract4.jpg"); Stream os = newImagePart.GetOutputStream(); os.Write(nature1, 0, nature1.Length); os.Close(); XWPFHeader xwpfHeader = doc.HeaderList[(0)]; PackageRelationship relationship = xwpfHeader.GetPackagePart().AddRelationship(partName, TargetMode.Internal, jpgRelation.Relation); XWPFPictureData newPicData = new XWPFPictureData(newImagePart, relationship); /* new part is now Ready to rumble */ Assert.IsFalse(xwpfHeader.AllPictures.Contains(newPicData)); Assert.IsFalse(doc.AllPictures.Contains(newPicData)); Assert.IsFalse(doc.AllPackagePictures.Contains(newPicData)); doc.RegisterPackagePictureData(newPicData); Assert.IsFalse(xwpfHeader.AllPictures.Contains(newPicData)); Assert.IsFalse(doc.AllPictures.Contains(newPicData)); Assert.IsTrue(doc.AllPackagePictures.Contains(newPicData)); doc.Package.Revert(); }