diff options
author | Grégory Bataille <gbataille.dev@gmail.com> | 2014-06-23 10:38:15 +0200 |
---|---|---|
committer | Grégory Bataille <gbataille.dev@gmail.com> | 2014-06-23 10:38:15 +0200 |
commit | d4d7a14dddf860521473167d1dcb53d5cfab2b7b (patch) | |
tree | 99e653d559a1e6267d660ed661c77917354cdfdd /src/Text/Pandoc/Writers | |
parent | cab16024fcba447f64b0254f54f3e0b4dd93bb99 (diff) | |
download | pandoc-d4d7a14dddf860521473167d1dcb53d5cfab2b7b.tar.gz |
Scale images to fit the page for DOCX
Images that are bigger than the page were truncated. This will now
scale them if they are larger than the page. The scale is currently
hardcoded with Word "letter" defaults (page size and margins)
Diffstat (limited to 'src/Text/Pandoc/Writers')
-rw-r--r-- | src/Text/Pandoc/Writers/Docx.hs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Writers/Docx.hs b/src/Text/Pandoc/Writers/Docx.hs index 31e64f14e..77ee51519 100644 --- a/src/Text/Pandoc/Writers/Docx.hs +++ b/src/Text/Pandoc/Writers/Docx.hs @@ -825,7 +825,7 @@ inlineToOpenXML opts (Image alt (src, tit)) = do let size = imageSize img let (xpt,ypt) = maybe (120,120) sizeInPoints size -- 12700 emu = 1 pt - let (xemu,yemu) = (xpt * 12700, ypt * 12700) + let (xemu,yemu) = fitToPage (xpt * 12700, ypt * 12700) let cNvPicPr = mknode "pic:cNvPicPr" [] $ mknode "a:picLocks" [("noChangeArrowheads","1"),("noChangeAspect","1")] () let nvPicPr = mknode "pic:nvPicPr" [] @@ -890,3 +890,11 @@ parseXml refArchive distArchive relpath = >>= parseXMLDoc . UTF8.toStringLazy . fromEntry) of Just d -> return d Nothing -> fail $ relpath ++ " corrupt or missing in reference docx" + +-- | Scales the image to fit the page +fitToPage :: (Integer, Integer) -> (Integer, Integer) +fitToPage (x, y) + --5440680 is the emu width size of a letter page in portrait, minus the margins + | x > 5440680 = + (5440680, round $ (5440680 / ((fromIntegral :: Integer -> Double) x)) * (fromIntegral y)) + | otherwise = (x, y) |