Docx writer: don't take "distArchive" from datadir.
The docx writer takes components from the distribution's version of reference.docx when it can't find them in a user's custom reference.docx. (This sometimes happens because Word will sometimes omit components needed for larger documents when saving a simple one.) Previously, we allowed a reference.docx in the data directory (e.g. `~/.pandoc`) to be used as the distribution's reference.docx. This led to a bizarre situation where pandoc would produce a good docx using `--template ~/.pandoc/ref.docx`, but if `ref.docx` were moved to `~/.pandoc/reference.docx`, it would then produce a corrupted docx. Closes #3322 (I think).
This commit is contained in:
parent
9ac9e8d278
commit
d4e5fe02b0
1 changed files with 3 additions and 2 deletions
|
@ -231,10 +231,11 @@ writeDocx opts doc@(Pandoc meta _) = do
|
|||
username <- P.lookupEnv "USERNAME"
|
||||
utctime <- P.getCurrentTime
|
||||
distArchive <- (toArchive . BL.fromStrict) <$>
|
||||
P.readDataFile datadir "reference.docx"
|
||||
P.readDataFile Nothing "reference.docx"
|
||||
refArchive <- case writerReferenceDoc opts of
|
||||
Just f -> toArchive <$> P.readFileLazy f
|
||||
Nothing -> return distArchive
|
||||
Nothing -> (toArchive . BL.fromStrict) <$>
|
||||
P.readDataFile datadir "reference.docx"
|
||||
|
||||
parsedDoc <- parseXml refArchive distArchive "word/document.xml"
|
||||
let wname f qn = qPrefix qn == Just "w" && f (qName qn)
|
||||
|
|
Loading…
Reference in a new issue