From 41eb1b7a19ecd7409a242a057b160986c5d5bd67 Mon Sep 17 00:00:00 2001 From: Himanshu Pandey Date: Fri, 13 Sep 2019 13:12:24 +0530 Subject: [PATCH 1/3] Presentation corrupts as Excel file used in chart part is missing while building presenation from slideparts. --- OpenXmlPowerTools/PresentationBuilder.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/OpenXmlPowerTools/PresentationBuilder.cs b/OpenXmlPowerTools/PresentationBuilder.cs index 9d6de5e4..b570b647 100644 --- a/OpenXmlPowerTools/PresentationBuilder.cs +++ b/OpenXmlPowerTools/PresentationBuilder.cs @@ -1057,6 +1057,21 @@ private static void CopyChartObjects(ChartPart oldChart, ChartPart newChart) dataReference.Attribute(R.id).Value = newChart.GetIdOfPart(newPart); continue; } + ExtendedPart extendedPart = oldPartIdPair.OpenXmlPart as ExtendedPart; + if (extendedPart != null) + { + ExtendedPart newPart = newChart.AddExtendedPart(extendedPart.RelationshipType, extendedPart.ContentType, ".dat"); + using (Stream oldObject = extendedPart.GetStream(FileMode.Open, FileAccess.Read)) + using (Stream newObject = newPart.GetStream(FileMode.Create, FileAccess.ReadWrite)) + { + int byteCount; + byte[] buffer = new byte[65536]; + while ((byteCount = oldObject.Read(buffer, 0, 65536)) != 0) + newObject.Write(buffer, 0, byteCount); + } + dataReference.Attribute(R.id).Value = newChart.GetIdOfPart(newPart); + continue; + } EmbeddedObjectPart oldEmbeddedObjectPart = oldPartIdPair.OpenXmlPart as EmbeddedObjectPart; if (oldEmbeddedObjectPart != null) { From 869a3792571d8cef37da98a57b58ae6ee873fbd6 Mon Sep 17 00:00:00 2001 From: Himanshu Pandey Date: Fri, 13 Sep 2019 13:20:02 +0530 Subject: [PATCH 2/3] Revert "Presentation corrupts as Excel file used in chart part is missing while building presenation from slideparts." This reverts commit 41eb1b7a19ecd7409a242a057b160986c5d5bd67. --- OpenXmlPowerTools/PresentationBuilder.cs | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/OpenXmlPowerTools/PresentationBuilder.cs b/OpenXmlPowerTools/PresentationBuilder.cs index b570b647..9d6de5e4 100644 --- a/OpenXmlPowerTools/PresentationBuilder.cs +++ b/OpenXmlPowerTools/PresentationBuilder.cs @@ -1057,21 +1057,6 @@ private static void CopyChartObjects(ChartPart oldChart, ChartPart newChart) dataReference.Attribute(R.id).Value = newChart.GetIdOfPart(newPart); continue; } - ExtendedPart extendedPart = oldPartIdPair.OpenXmlPart as ExtendedPart; - if (extendedPart != null) - { - ExtendedPart newPart = newChart.AddExtendedPart(extendedPart.RelationshipType, extendedPart.ContentType, ".dat"); - using (Stream oldObject = extendedPart.GetStream(FileMode.Open, FileAccess.Read)) - using (Stream newObject = newPart.GetStream(FileMode.Create, FileAccess.ReadWrite)) - { - int byteCount; - byte[] buffer = new byte[65536]; - while ((byteCount = oldObject.Read(buffer, 0, 65536)) != 0) - newObject.Write(buffer, 0, byteCount); - } - dataReference.Attribute(R.id).Value = newChart.GetIdOfPart(newPart); - continue; - } EmbeddedObjectPart oldEmbeddedObjectPart = oldPartIdPair.OpenXmlPart as EmbeddedObjectPart; if (oldEmbeddedObjectPart != null) { From f8a990e02d58a4540d25fc663c3ef4955bc30e0f Mon Sep 17 00:00:00 2001 From: Himanshu Pandey Date: Fri, 13 Sep 2019 13:22:16 +0530 Subject: [PATCH 3/3] Presentation corrupts as Excel file used in chart part is missing while building presentation from slideparts. --- OpenXmlPowerTools/PresentationBuilder.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/OpenXmlPowerTools/PresentationBuilder.cs b/OpenXmlPowerTools/PresentationBuilder.cs index 9d6de5e4..b570b647 100644 --- a/OpenXmlPowerTools/PresentationBuilder.cs +++ b/OpenXmlPowerTools/PresentationBuilder.cs @@ -1057,6 +1057,21 @@ private static void CopyChartObjects(ChartPart oldChart, ChartPart newChart) dataReference.Attribute(R.id).Value = newChart.GetIdOfPart(newPart); continue; } + ExtendedPart extendedPart = oldPartIdPair.OpenXmlPart as ExtendedPart; + if (extendedPart != null) + { + ExtendedPart newPart = newChart.AddExtendedPart(extendedPart.RelationshipType, extendedPart.ContentType, ".dat"); + using (Stream oldObject = extendedPart.GetStream(FileMode.Open, FileAccess.Read)) + using (Stream newObject = newPart.GetStream(FileMode.Create, FileAccess.ReadWrite)) + { + int byteCount; + byte[] buffer = new byte[65536]; + while ((byteCount = oldObject.Read(buffer, 0, 65536)) != 0) + newObject.Write(buffer, 0, byteCount); + } + dataReference.Attribute(R.id).Value = newChart.GetIdOfPart(newPart); + continue; + } EmbeddedObjectPart oldEmbeddedObjectPart = oldPartIdPair.OpenXmlPart as EmbeddedObjectPart; if (oldEmbeddedObjectPart != null) {