@@ -163,8 +163,7 @@ copyFileToArchive arch fp = do
163 Just e -> return $ addEntryToArchive e arch
163 Just e -> return $ addEntryToArchive e arch
165inheritedPatterns :: [Pattern]
165inheritedPatterns :: [Pattern]
166−inheritedPatterns = map compile [ "_rels/.rels"
166+inheritedPatterns = map compile [ "docProps/app.xml"
167− , "docProps/app.xml"
168 , "docProps/core.xml"
167 , "docProps/core.xml"
169 , "ppt/slideLayouts/slideLayout*.xml"
168 , "ppt/slideLayouts/slideLayout*.xml"
170 , "ppt/slideLayouts/_rels/slideLayout*.xml.rels"
169 , "ppt/slideLayouts/_rels/slideLayout*.xml.rels"
@@ -192,24 +191,23 @@ patternsToFilePaths pats = concat <$> mapM patternToFilePaths pats
192-- Here are the files we'll require to make a Powerpoint document. If
191-- Here are the files we'll require to make a Powerpoint document. If
193-- any of these are missing, we should error out of our build.
192-- any of these are missing, we should error out of our build.
194requiredFiles :: [FilePath]
193requiredFiles :: [FilePath]
195−requiredFiles = [ "_rels/.rels"
196− , "docProps/app.xml"
194+requiredFiles = [ "docProps/app.xml"
197− , "docProps/core.xml"
195+ , "docProps/core.xml"
198− , "ppt/presProps.xml"
196+ , "ppt/presProps.xml"
199− , "ppt/slideLayouts/slideLayout1.xml"
197+ , "ppt/slideLayouts/slideLayout1.xml"
200− , "ppt/slideLayouts/_rels/slideLayout1.xml.rels"
198+ , "ppt/slideLayouts/_rels/slideLayout1.xml.rels"
201− , "ppt/slideLayouts/slideLayout2.xml"
199+ , "ppt/slideLayouts/slideLayout2.xml"
202− , "ppt/slideLayouts/_rels/slideLayout2.xml.rels"
200+ , "ppt/slideLayouts/_rels/slideLayout2.xml.rels"
203− , "ppt/slideLayouts/slideLayout3.xml"
201+ , "ppt/slideLayouts/slideLayout3.xml"
204− , "ppt/slideLayouts/_rels/slideLayout3.xml.rels"
202+ , "ppt/slideLayouts/_rels/slideLayout3.xml.rels"
205− , "ppt/slideLayouts/slideLayout4.xml"
203+ , "ppt/slideLayouts/slideLayout4.xml"
206− , "ppt/slideLayouts/_rels/slideLayout4.xml.rels"
204+ , "ppt/slideLayouts/_rels/slideLayout4.xml.rels"
207− , "ppt/slideMasters/slideMaster1.xml"
205+ , "ppt/slideMasters/slideMaster1.xml"
208− , "ppt/slideMasters/_rels/slideMaster1.xml.rels"
206+ , "ppt/slideMasters/_rels/slideMaster1.xml.rels"
209− , "ppt/theme/theme1.xml"
207+ , "ppt/theme/theme1.xml"
210− , "ppt/viewProps.xml"
208+ , "ppt/viewProps.xml"
211− , "ppt/tableStyles.xml"
209+ , "ppt/tableStyles.xml"
215presentationToArchiveP :: PandocMonad m => Presentation -> P m Archive
213presentationToArchiveP :: PandocMonad m => Presentation -> P m Archive
@@ -226,6 +224,9 @@ presentationToArchiveP p@(Presentation slides) = do
228 newArch' <- foldM copyFileToArchive emptyArchive filePaths
226 newArch' <- foldM copyFileToArchive emptyArchive filePaths
227+ -- we make this ourself in case there's something unexpected in the
228+ -- one in the reference doc.
229+ relsEntry <- topLevelRelsEntry
229 -- presentation entry and rels. We have to do the rels first to make
230 -- presentation entry and rels. We have to do the rels first to make
230 -- sure we know the correct offset for the rIds.
231 -- sure we know the correct offset for the rIds.
231 presEntry <- presentationToPresEntry p
232 presEntry <- presentationToPresEntry p
@@ -241,7 +242,7 @@ presentationToArchiveP p@(Presentation slides) = do
241 slideEntries ++
242 slideEntries ++
242 slideRelEntries ++
243 slideRelEntries ++
243 mediaEntries ++
244 mediaEntries ++
244− [contentTypesEntry, presEntry, presRelsEntry]
245+ [contentTypesEntry, relsEntry, presEntry, presRelsEntry]
246presentationToArchive :: PandocMonad m => WriterOptions -> Presentation -> m Archive
247presentationToArchive :: PandocMonad m => WriterOptions -> Presentation -> m Archive
247presentationToArchive opts pres = do
248presentationToArchive opts pres = do
@@ -1147,6 +1148,27 @@ presentationToRels (Presentation slides) = do
1148 return $ mySlideRels ++ relsWithoutSlides'
1149 return $ mySlideRels ++ relsWithoutSlides'
1151+-- We make this ourselves, in case there's a thumbnail in the one from
1153+topLevelRels :: [Relationship]
1155+ [ Relationship { relId = 1
1156+ , relType = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"
1157+ , relTarget = "ppt/presentation.xml"
1159+ , Relationship { relId = 2
1160+ , relType = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties"
1161+ , relTarget = "docProps/core.xml"
1163+ , Relationship { relId = 3
1164+ , relType = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/extended-properties"
1165+ , relTarget = "docProps/app.xml"
1169+topLevelRelsEntry :: PandocMonad m => P m Entry
1170+topLevelRelsEntry = elemToEntry "_rels/.rels" $ relsToElement topLevelRels
1150relToElement :: Relationship -> Element
1172relToElement :: Relationship -> Element
1151relToElement rel = mknode "Relationship" [ ("Id", "rId" ++ (show $ relId rel))
1173relToElement rel = mknode "Relationship" [ ("Id", "rId" ++ (show $ relId rel))
1152 , ("Type", relType rel)
1174 , ("Type", relType rel)