@@ -336,7 +336,10 @@ private static void CopyPresentationParts(PresentationDocument sourceDocument, P
336
336
foreach ( var legacyDocTextInfo in sourceDocument . PresentationPart . Parts . Where ( p => p . OpenXmlPart . RelationshipType == "http://schemas.microsoft.com/office/2006/relationships/legacyDocTextInfo" ) )
337
337
{
338
338
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
+ }
340
343
}
341
344
342
345
var listOfRootChildren = newPresentation . Root . Elements ( ) . ToList ( ) ;
@@ -383,7 +386,10 @@ private static XElement CreatedEmbeddedFontPart(PresentationDocument sourceDocum
383
386
fpt = FontPartType . FontOdttf ;
384
387
var newId = "R" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) . Substring ( 0 , 16 ) ;
385
388
var newFontPart = newDocument . PresentationPart . AddFontPart ( fpt , newId ) ;
386
- newFontPart . FeedData ( oldFontPart . GetStream ( ) ) ;
389
+ using ( var stream = oldFontPart . GetStream ( ) )
390
+ {
391
+ newFontPart . FeedData ( stream ) ;
392
+ }
387
393
newRegular = new XElement ( fontXName ,
388
394
new XAttribute ( R . id , newId ) ) ;
389
395
return newRegular ;
@@ -931,12 +937,18 @@ private static void CopyRelatedPartsForContentParts(PresentationDocument newDocu
931
937
if ( oldPartIdPair9 != null )
932
938
{
933
939
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
+ }
935
944
foreach ( var itemProps in oldPartIdPair9 . OpenXmlPart . Parts . Where ( p => p . OpenXmlPart . ContentType == "application/vnd.openxmlformats-officedocument.customXmlProperties+xml" ) )
936
945
{
937
946
var newId2 = "R" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) . Substring ( 0 , 16 ) ;
938
947
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
+ }
940
952
}
941
953
var newId = "R" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) . Substring ( 0 , 16 ) ;
942
954
newContentPart . CreateRelationshipToPart ( newPart , newId ) ;
@@ -1057,6 +1069,21 @@ private static void CopyChartObjects(ChartPart oldChart, ChartPart newChart)
1057
1069
dataReference . Attribute ( R . id ) . Value = newChart . GetIdOfPart ( newPart ) ;
1058
1070
continue ;
1059
1071
}
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
+ }
1060
1087
EmbeddedObjectPart oldEmbeddedObjectPart = oldPartIdPair . OpenXmlPart as EmbeddedObjectPart ;
1061
1088
if ( oldEmbeddedObjectPart != null )
1062
1089
{
@@ -1350,7 +1377,10 @@ private static void CopyRelatedMedia(OpenXmlPart oldContentPart, OpenXmlPart new
1350
1377
var ct = oldPart . ContentType ;
1351
1378
var ext = Path . GetExtension ( oldPart . Uri . OriginalString ) ;
1352
1379
MediaDataPart newPart = newContentPart . OpenXmlPackage . CreateMediaDataPart ( ct , ext ) ;
1353
- newPart . FeedData ( oldPart . GetStream ( ) ) ;
1380
+ using ( var stream = oldPart . GetStream ( ) )
1381
+ {
1382
+ newPart . FeedData ( stream ) ;
1383
+ }
1354
1384
string id = null ;
1355
1385
string relationshipType = null ;
1356
1386
@@ -1490,7 +1520,10 @@ private static void CopyInkPart(OpenXmlPart oldContentPart, OpenXmlPart newConte
1490
1520
var newId = "R" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) . Substring ( 0 , 16 ) ;
1491
1521
CustomXmlPart newPart = newContentPart . AddNewPart < CustomXmlPart > ( "application/inkml+xml" , newId ) ;
1492
1522
1493
- newPart . FeedData ( oldPart . GetStream ( ) ) ;
1523
+ using ( var stream = oldPart . GetStream ( ) )
1524
+ {
1525
+ newPart . FeedData ( stream ) ;
1526
+ }
1494
1527
contentPartReference . Attribute ( attributeName ) . Value = newId ;
1495
1528
}
1496
1529
@@ -1508,8 +1541,11 @@ private static void CopyActiveXPart(OpenXmlPart oldContentPart, OpenXmlPart newC
1508
1541
1509
1542
var newId = "R" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) . Substring ( 0 , 16 ) ;
1510
1543
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
+ }
1513
1549
activeXPartReference . Attribute ( attributeName ) . Value = newId ;
1514
1550
1515
1551
if ( newPart . ContentType == "application/vnd.ms-office.activeX+xml" )
@@ -1521,8 +1557,11 @@ private static void CopyActiveXPart(OpenXmlPart oldContentPart, OpenXmlPart newC
1521
1557
1522
1558
var newId2 = "R" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) . Substring ( 0 , 16 ) ;
1523
1559
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
+ }
1526
1565
axc . Root . Attribute ( R . id ) . Value = newId2 ;
1527
1566
newPart . PutXDocument ( ) ;
1528
1567
}
@@ -1544,7 +1583,10 @@ private static void CopyLegacyDiagramText(OpenXmlPart oldContentPart, OpenXmlPar
1544
1583
var newId = "R" + Guid . NewGuid ( ) . ToString ( ) . Replace ( "-" , "" ) . Substring ( 0 , 16 ) ;
1545
1584
LegacyDiagramTextPart newPart = newContentPart . AddNewPart < LegacyDiagramTextPart > ( newId ) ;
1546
1585
1547
- newPart . FeedData ( oldPart . GetStream ( ) ) ;
1586
+ using ( var stream = oldPart . GetStream ( ) )
1587
+ {
1588
+ newPart . FeedData ( stream ) ;
1589
+ }
1548
1590
textdataReference . Attribute ( attributeName ) . Value = newId ;
1549
1591
}
1550
1592
@@ -1714,7 +1756,10 @@ private static void CopyExtendedPart(OpenXmlPart oldContentPart, OpenXmlPart new
1714
1756
newPart = ( ( XmlSignaturePart ) newContentPart ) . AddExtendedPart ( oldPart . RelationshipType , oldPart . ContentType , fileInfo . Extension ) ;
1715
1757
1716
1758
relId = newContentPart . GetIdOfPart ( newPart ) ;
1717
- newPart . FeedData ( oldPart . GetStream ( ) ) ;
1759
+ using ( Stream sourceStream = oldPart . GetStream ( ) )
1760
+ {
1761
+ newPart . FeedData ( sourceStream ) ;
1762
+ }
1718
1763
extendedReference . Attribute ( attributeName ) . Value = relId ;
1719
1764
}
1720
1765
catch ( ArgumentOutOfRangeException )
@@ -1778,7 +1823,10 @@ private static void CopyRelatedSound(PresentationDocument newDocument, OpenXmlPa
1778
1823
{
1779
1824
AudioReferenceRelationship temp = ( AudioReferenceRelationship ) oldContentPart . GetReferenceRelationship ( relId ) ;
1780
1825
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
+ }
1782
1830
AudioReferenceRelationship newRel = null ;
1783
1831
1784
1832
if ( newContentPart is SlidePart )
@@ -1799,7 +1847,10 @@ private static void CopyRelatedSound(PresentationDocument newDocument, OpenXmlPa
1799
1847
{
1800
1848
MediaReferenceRelationship temp = ( MediaReferenceRelationship ) oldContentPart . GetReferenceRelationship ( relId ) ;
1801
1849
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
+ }
1803
1854
MediaReferenceRelationship newRel = null ;
1804
1855
1805
1856
if ( newContentPart is SlidePart )
0 commit comments