jgm / pandoc

Universal markup converter
https://pandoc.org
Other
34.86k stars 3.39k forks source link

Pandoc produces corrupted pptx once reference doc has been synced with a Teams-connected site #9421

Open hanshillen opened 9 months ago

hanshillen commented 9 months ago

Explain the problem.

Once a presentation's reference doc (specifically, a Powerpoint file or template) has been synced with a Teams-connected site, pandoc will generate a corrupted pptx file. When opening the generated file, Powerpoint will show the error message below (similar to the message described in #9113):

PowerPoint found a problem with content in preso.pptx. PowerPoint can attempt to repair the presentation.

If you trust the source of this presentation, click Repair.

This happens regardless of whether the template is downloaded from the Sharepoint site first, or referenced directly in the file system through a OneDrive folder. Moving or copying the 'tainted' templated file out of Sharepoint does not fix the problem. The issue does not occur in other Sharepoint or OneDrive folders that are not connected to Teams.

For comparison, I've attached files that show the difference before and after a template was synced in a Teams folder:

I realize this is probably an MS specific issue, but the problem doesn't occur for regular Powerpoint file creation so it's not likely to be fixed. I created this issue in the hope Pandoc can somehow work around the change made to the template by the Teams sync. At the very least, it can act as a record for others running into the same problem.

Pandoc version? 3.1.11.1, MacOS Sonoma

jgm commented 9 months ago

Here are the differences (uncorrupted a, corrupted b):

=== [Content_Types].xml ===
--- a/[Content_Types].xml   2024-02-06 20:43:24.000000000 -0800
+++ b/[Content_Types].xml   2024-02-06 20:43:25.000000000 -0800
@@ -7,6 +7,10 @@
   <Default Extension="xml" ContentType="application/xml" />
   <Override PartName="/ppt/presentation.xml"
   ContentType="application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml" />
+  <Override PartName="/customXml/itemProps1.xml"
+  ContentType="application/vnd.openxmlformats-officedocument.customXmlProperties+xml" />
+  <Override PartName="/customXml/itemProps2.xml"
+  ContentType="application/vnd.openxmlformats-officedocument.customXmlProperties+xml" />
   <Override PartName="/ppt/slideMasters/slideMaster1.xml"
   ContentType="application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml" />
   <Override PartName="/ppt/slides/slide1.xml"

=== docProps/core.xml ===
--- a/docProps/core.xml 2024-02-06 20:43:24.000000000 -0800
+++ b/docProps/core.xml 2024-02-06 20:43:25.000000000 -0800
@@ -9,7 +9,7 @@
   <cp:lastModifiedBy>Hans Hillen</cp:lastModifiedBy>
   <cp:revision>1</cp:revision>
   <dcterms:created xsi:type="dcterms:W3CDTF">
-  2024-02-06T20:50:58Z</dcterms:created>
+  2024-02-06T20:52:02Z</dcterms:created>
   <dcterms:modified xsi:type="dcterms:W3CDTF">
-  2024-02-06T20:51:13Z</dcterms:modified>
+  2024-02-06T20:52:21Z</dcterms:modified>
 </cp:coreProperties>

=== customXml/item1.xml ===
diff: a/customXml/item1.xml: No such file or directory

=== customXml/item2.xml ===
diff: a/customXml/item2.xml: No such file or directory

=== customXml/_rels/item2.xml.rels ===
diff: a/customXml/_rels/item2.xml.rels: No such file or directory

=== customXml/_rels/item1.xml.rels ===
diff: a/customXml/_rels/item1.xml.rels: No such file or directory

=== customXml/itemProps2.xml ===
diff: a/customXml/itemProps2.xml: No such file or directory

=== customXml/itemProps1.xml ===
diff: a/customXml/itemProps1.xml: No such file or directory

=== ppt/presentation.xml ===
--- a/ppt/presentation.xml  2024-02-06 20:43:24.000000000 -0800
+++ b/ppt/presentation.xml  2024-02-06 20:43:25.000000000 -0800
@@ -4,10 +4,10 @@
 xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"
 saveSubsetFonts="1" autoCompressPictures="0">
   <p:sldMasterIdLst>
-    <p:sldMasterId id="2147483648" r:id="rId1" />
+    <p:sldMasterId id="2147483648" r:id="rId3" />
   </p:sldMasterIdLst>
   <p:sldIdLst>
-    <p:sldId id="256" r:id="rId2" />
+    <p:sldId id="256" r:id="rId4" />
   </p:sldIdLst>
   <p:sldSz cx="12192000" cy="6858000" />
   <p:notesSz cx="6858000" cy="9144000" />

=== ppt/_rels/presentation.xml.rels ===
--- a/ppt/_rels/presentation.xml.rels   2024-02-06 20:43:25.000000000 -0800
+++ b/ppt/_rels/presentation.xml.rels   2024-02-06 20:43:25.000000000 -0800
@@ -1,22 +1,28 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">

+  <Relationship Id="rId8"
+  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableStyles"
+  Target="tableStyles.xml" />
   <Relationship Id="rId3"
-  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps"
-  Target="presProps.xml" />
-  <Relationship Id="rId2"
-  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"
-  Target="slides/slide1.xml" />
-  <Relationship Id="rId1"
   Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster"
   Target="slideMasters/slideMaster1.xml" />
-  <Relationship Id="rId6"
-  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableStyles"
-  Target="tableStyles.xml" />
-  <Relationship Id="rId5"
+  <Relationship Id="rId7"
   Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"
   Target="theme/theme1.xml" />
-  <Relationship Id="rId4"
+  <Relationship Id="rId2"
+  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml"
+  Target="../customXml/item2.xml" />
+  <Relationship Id="rId1"
+  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml"
+  Target="../customXml/item1.xml" />
+  <Relationship Id="rId6"
   Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/viewProps"
   Target="viewProps.xml" />
+  <Relationship Id="rId5"
+  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps"
+  Target="presProps.xml" />
+  <Relationship Id="rId4"
+  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"
+  Target="slides/slide1.xml" />
 </Relationships>
jgm commented 9 months ago

Here's a diff of uncorrupted.pptx and corrupted-after-teams.pptx:

--- a/docProps/core.xml 2024-02-13 22:21:20.000000000 -0800
+++ b/docProps/core.xml 2024-02-13 22:21:21.000000000 -0800
@@ -8,7 +8,7 @@
   <dc:creator>test</dc:creator>
   <cp:keywords></cp:keywords>
   <dcterms:created xsi:type="dcterms:W3CDTF">
-  2024-02-06T20:51:40Z</dcterms:created>
+  2024-02-06T20:53:06Z</dcterms:created>
   <dcterms:modified xsi:type="dcterms:W3CDTF">
-  2024-02-06T20:51:40Z</dcterms:modified>
+  2024-02-06T20:53:06Z</dcterms:modified>
 </cp:coreProperties>

--- a/ppt/presentation.xml  2024-02-13 22:21:21.000000000 -0800
+++ b/ppt/presentation.xml  2024-02-13 22:21:21.000000000 -0800
@@ -5,11 +5,11 @@
 xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">

   <p:sldMasterIdLst>
-    <p:sldMasterId id="2147483648" r:id="rId1" />
+    <p:sldMasterId id="2147483648" r:id="rId3" />
   </p:sldMasterIdLst>
   <p:sldIdLst>
-    <p:sldId id="256" r:id="rId2" />
-    <p:sldId id="257" r:id="rId3" />
+    <p:sldId id="256" r:id="rId4" />
+    <p:sldId id="257" r:id="rId5" />
   </p:sldIdLst>
   <p:sldSz cx="12192000" cy="6858000" />
   <p:notesSz cx="6858000" cy="9144000" />

--- a/ppt/_rels/presentation.xml.rels   2024-02-13 22:21:21.000000000 -0800
+++ b/ppt/_rels/presentation.xml.rels   2024-02-13 22:21:21.000000000 -0800
@@ -1,25 +1,31 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">

-  <Relationship Id="rId2"
+  <Relationship Id="rId4"
   Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"
   Target="slides/slide1.xml" />
-  <Relationship Id="rId3"
+  <Relationship Id="rId5"
   Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"
   Target="slides/slide2.xml" />
-  <Relationship Id="rId4"
-  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps"
-  Target="presProps.xml" />
-  <Relationship Id="rId1"
-  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster"
-  Target="slideMasters/slideMaster1.xml" />
-  <Relationship Id="rId7"
+  <Relationship Id="rId9"
   Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableStyles"
   Target="tableStyles.xml" />
-  <Relationship Id="rId6"
+  <Relationship Id="rId3"
+  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster"
+  Target="slideMasters/slideMaster1.xml" />
+  <Relationship Id="rId8"
   Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"
   Target="theme/theme1.xml" />
-  <Relationship Id="rId5"
+  <Relationship Id="rId2"
+  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml"
+  Target="../customXml/item2.xml" />
+  <Relationship Id="rId1"
+  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml"
+  Target="../customXml/item1.xml" />
+  <Relationship Id="rId7"
   Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/viewProps"
   Target="viewProps.xml" />
+  <Relationship Id="rId6"
+  Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps"
+  Target="presProps.xml" />
 </Relationships>
crivetimihai commented 1 month ago

Can confirm - facing the same issue