@@ -336,7 +336,10 @@ private static void CopyPresentationParts(PresentationDocument sourceDocument, P
336336 foreach ( var legacyDocTextInfo in sourceDocument . PresentationPart . Parts . Where ( p => p . OpenXmlPart . RelationshipType == "http://schemas.microsoft.com/office/2006/relationships/legacyDocTextInfo" ) )
337337 {
338338 LegacyDiagramTextInfoPart newPart = newDocument . PresentationPart . AddNewPart < LegacyDiagramTextInfoPart > ( ) ;
339- newPart . FeedData ( legacyDocTextInfo . OpenXmlPart . GetStream ( ) ) ;
339+ using ( var stream = legacyDocTextInfo . OpenXmlPart . GetStream ( ) )
340+ {
341+ newPart . FeedData ( stream ) ;
342+ }
340343 }
341344
342345 var listOfRootChildren = newPresentation . Root . Elements ( ) . ToList ( ) ;
@@ -383,7 +386,10 @@ private static XElement CreatedEmbeddedFontPart(PresentationDocument sourceDocum
383386 fpt = FontPartType . FontOdttf ;
384387 var newId = "R" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) . Substring ( 0 , 16 ) ;
385388 var newFontPart = newDocument . PresentationPart . AddFontPart ( fpt , newId ) ;
386- newFontPart . FeedData ( oldFontPart . GetStream ( ) ) ;
389+ using ( var stream = oldFontPart . GetStream ( ) )
390+ {
391+ newFontPart . FeedData ( stream ) ;
392+ }
387393 newRegular = new XElement ( fontXName ,
388394 new XAttribute ( R . id , newId ) ) ;
389395 return newRegular ;
@@ -931,12 +937,18 @@ private static void CopyRelatedPartsForContentParts(PresentationDocument newDocu
931937 if ( oldPartIdPair9 != null )
932938 {
933939 CustomXmlPart newPart = newDocument . PresentationPart . AddCustomXmlPart ( CustomXmlPartType . CustomXml ) ;
934- newPart . FeedData ( oldPartIdPair9 . OpenXmlPart . GetStream ( ) ) ;
940+ using ( var stream = oldPartIdPair9 . OpenXmlPart . GetStream ( ) )
941+ {
942+ newPart . FeedData ( stream ) ;
943+ }
935944 foreach ( var itemProps in oldPartIdPair9 . OpenXmlPart . Parts . Where ( p => p . OpenXmlPart . ContentType == "application/vnd.openxmlformats-officedocument.customXmlProperties+xml" ) )
936945 {
937946 var newId2 = "R" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) . Substring ( 0 , 16 ) ;
938947 CustomXmlPropertiesPart cxpp = newPart . AddNewPart < CustomXmlPropertiesPart > ( "application/vnd.openxmlformats-officedocument.customXmlProperties+xml" , newId2 ) ;
939- cxpp . FeedData ( itemProps . OpenXmlPart . GetStream ( ) ) ;
948+ using ( var stream = itemProps . OpenXmlPart . GetStream ( ) )
949+ {
950+ cxpp . FeedData ( stream ) ;
951+ }
940952 }
941953 var newId = "R" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) . Substring ( 0 , 16 ) ;
942954 newContentPart . CreateRelationshipToPart ( newPart , newId ) ;
@@ -1057,6 +1069,21 @@ private static void CopyChartObjects(ChartPart oldChart, ChartPart newChart)
10571069 dataReference . Attribute ( R . id ) . Value = newChart . GetIdOfPart ( newPart ) ;
10581070 continue ;
10591071 }
1072+ ExtendedPart extendedPart = oldPartIdPair . OpenXmlPart as ExtendedPart ;
1073+ if ( extendedPart != null )
1074+ {
1075+ ExtendedPart newPart = newChart . AddExtendedPart ( extendedPart . RelationshipType , extendedPart . ContentType , ".dat" ) ;
1076+ using ( Stream oldObject = extendedPart . GetStream ( FileMode . Open , FileAccess . Read ) )
1077+ using ( Stream newObject = newPart . GetStream ( FileMode . Create , FileAccess . ReadWrite ) )
1078+ {
1079+ int byteCount ;
1080+ byte [ ] buffer = new byte [ 65536 ] ;
1081+ while ( ( byteCount = oldObject . Read ( buffer , 0 , 65536 ) ) != 0 )
1082+ newObject . Write ( buffer , 0 , byteCount ) ;
1083+ }
1084+ dataReference . Attribute ( R . id ) . Value = newChart . GetIdOfPart ( newPart ) ;
1085+ continue ;
1086+ }
10601087 EmbeddedObjectPart oldEmbeddedObjectPart = oldPartIdPair . OpenXmlPart as EmbeddedObjectPart ;
10611088 if ( oldEmbeddedObjectPart != null )
10621089 {
@@ -1350,7 +1377,10 @@ private static void CopyRelatedMedia(OpenXmlPart oldContentPart, OpenXmlPart new
13501377 var ct = oldPart . ContentType ;
13511378 var ext = Path . GetExtension ( oldPart . Uri . OriginalString ) ;
13521379 MediaDataPart newPart = newContentPart . OpenXmlPackage . CreateMediaDataPart ( ct , ext ) ;
1353- newPart . FeedData ( oldPart . GetStream ( ) ) ;
1380+ using ( var stream = oldPart . GetStream ( ) )
1381+ {
1382+ newPart . FeedData ( stream ) ;
1383+ }
13541384 string id = null ;
13551385 string relationshipType = null ;
13561386
@@ -1490,7 +1520,10 @@ private static void CopyInkPart(OpenXmlPart oldContentPart, OpenXmlPart newConte
14901520 var newId = "R" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) . Substring ( 0 , 16 ) ;
14911521 CustomXmlPart newPart = newContentPart . AddNewPart < CustomXmlPart > ( "application/inkml+xml" , newId ) ;
14921522
1493- newPart . FeedData ( oldPart . GetStream ( ) ) ;
1523+ using ( var stream = oldPart . GetStream ( ) )
1524+ {
1525+ newPart . FeedData ( stream ) ;
1526+ }
14941527 contentPartReference . Attribute ( attributeName ) . Value = newId ;
14951528 }
14961529
@@ -1508,8 +1541,11 @@ private static void CopyActiveXPart(OpenXmlPart oldContentPart, OpenXmlPart newC
15081541
15091542 var newId = "R" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) . Substring ( 0 , 16 ) ;
15101543 EmbeddedControlPersistencePart newPart = newContentPart . AddNewPart < EmbeddedControlPersistencePart > ( "application/vnd.ms-office.activeX+xml" , newId ) ;
1511-
1512- newPart . FeedData ( oldPart . GetStream ( ) ) ;
1544+
1545+ using ( var stream = oldPart . GetStream ( ) )
1546+ {
1547+ newPart . FeedData ( stream ) ;
1548+ }
15131549 activeXPartReference . Attribute ( attributeName ) . Value = newId ;
15141550
15151551 if ( newPart . ContentType == "application/vnd.ms-office.activeX+xml" )
@@ -1521,8 +1557,11 @@ private static void CopyActiveXPart(OpenXmlPart oldContentPart, OpenXmlPart newC
15211557
15221558 var newId2 = "R" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) . Substring ( 0 , 16 ) ;
15231559 EmbeddedControlPersistenceBinaryDataPart newPersistencePart = newPart . AddNewPart < EmbeddedControlPersistenceBinaryDataPart > ( "application/vnd.ms-office.activeX" , newId2 ) ;
1524-
1525- newPersistencePart . FeedData ( oldPersistencePart . GetStream ( ) ) ;
1560+
1561+ using ( var stream = oldPersistencePart . GetStream ( ) )
1562+ {
1563+ newPersistencePart . FeedData ( stream ) ;
1564+ }
15261565 axc . Root . Attribute ( R . id ) . Value = newId2 ;
15271566 newPart . PutXDocument ( ) ;
15281567 }
@@ -1544,7 +1583,10 @@ private static void CopyLegacyDiagramText(OpenXmlPart oldContentPart, OpenXmlPar
15441583 var newId = "R" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) . Substring ( 0 , 16 ) ;
15451584 LegacyDiagramTextPart newPart = newContentPart . AddNewPart < LegacyDiagramTextPart > ( newId ) ;
15461585
1547- newPart . FeedData ( oldPart . GetStream ( ) ) ;
1586+ using ( var stream = oldPart . GetStream ( ) )
1587+ {
1588+ newPart . FeedData ( stream ) ;
1589+ }
15481590 textdataReference . Attribute ( attributeName ) . Value = newId ;
15491591 }
15501592
@@ -1714,7 +1756,10 @@ private static void CopyExtendedPart(OpenXmlPart oldContentPart, OpenXmlPart new
17141756 newPart = ( ( XmlSignaturePart ) newContentPart ) . AddExtendedPart ( oldPart . RelationshipType , oldPart . ContentType , fileInfo . Extension ) ;
17151757
17161758 relId = newContentPart . GetIdOfPart ( newPart ) ;
1717- newPart . FeedData ( oldPart . GetStream ( ) ) ;
1759+ using ( Stream sourceStream = oldPart . GetStream ( ) )
1760+ {
1761+ newPart . FeedData ( sourceStream ) ;
1762+ }
17181763 extendedReference . Attribute ( attributeName ) . Value = relId ;
17191764 }
17201765 catch ( ArgumentOutOfRangeException )
@@ -1778,7 +1823,10 @@ private static void CopyRelatedSound(PresentationDocument newDocument, OpenXmlPa
17781823 {
17791824 AudioReferenceRelationship temp = ( AudioReferenceRelationship ) oldContentPart . GetReferenceRelationship ( relId ) ;
17801825 MediaDataPart newSound = newDocument . CreateMediaDataPart ( temp . DataPart . ContentType ) ;
1781- newSound . FeedData ( temp . DataPart . GetStream ( ) ) ;
1826+ using ( var stream = temp . DataPart . GetStream ( ) )
1827+ {
1828+ newSound . FeedData ( stream ) ;
1829+ }
17821830 AudioReferenceRelationship newRel = null ;
17831831
17841832 if ( newContentPart is SlidePart )
@@ -1799,7 +1847,10 @@ private static void CopyRelatedSound(PresentationDocument newDocument, OpenXmlPa
17991847 {
18001848 MediaReferenceRelationship temp = ( MediaReferenceRelationship ) oldContentPart . GetReferenceRelationship ( relId ) ;
18011849 MediaDataPart newSound = newDocument . CreateMediaDataPart ( temp . DataPart . ContentType ) ;
1802- newSound . FeedData ( temp . DataPart . GetStream ( ) ) ;
1850+ using ( var stream = temp . DataPart . GetStream ( ) )
1851+ {
1852+ newSound . FeedData ( stream ) ;
1853+ }
18031854 MediaReferenceRelationship newRel = null ;
18041855
18051856 if ( newContentPart is SlidePart )
0 commit comments