From 7bd7d4d476f5091d39bac11d53588a80d4bef9ee Mon Sep 17 00:00:00 2001 From: Jesse Rosenthal Date: Thu, 7 Aug 2014 15:01:05 -0400 Subject: [PATCH 1/2] Docx reader: Handle inline drawings. Previous drawings that were under some other toplevel run (i.e., a hyperlink) wouldn't be properly handled. This should fix that. --- src/Text/Pandoc/Readers/Docx.hs | 7 +++++++ src/Text/Pandoc/Readers/Docx/Parse.hs | 18 +++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs index 367e26bd0..f19570aec 100644 --- a/src/Text/Pandoc/Readers/Docx.hs +++ b/src/Text/Pandoc/Readers/Docx.hs @@ -321,6 +321,13 @@ runToInlines (Footnote bps) = concatMapM bodyPartToBlocks bps >>= (\blks -> return [Note blks]) runToInlines (Endnote bps) = concatMapM bodyPartToBlocks bps >>= (\blks -> return [Note blks]) +runToInlines (InlineDrawing fp bs) = do + mediaBag <- gets docxMediaBag + modify $ \s -> s { docxMediaBag = insertMedia fp Nothing bs mediaBag } + return [Image [] (fp, "")] + + + parPartToInlines :: ParPart -> DocxContext [Inline] parPartToInlines (PlainRun r) = runToInlines r diff --git a/src/Text/Pandoc/Readers/Docx/Parse.hs b/src/Text/Pandoc/Readers/Docx/Parse.hs index 96210c31a..bc4e6ea06 100644 --- a/src/Text/Pandoc/Readers/Docx/Parse.hs +++ b/src/Text/Pandoc/Readers/Docx/Parse.hs @@ -282,6 +282,7 @@ defaultGroupStyle = GroupStyle {groupChr = Nothing, groupPos = Nothing} data Run = Run RunStyle [RunElem] | Footnote [BodyPart] | Endnote [BodyPart] + | InlineDrawing FilePath B.ByteString deriving Show data RunElem = TextRun String | LnBrk | Tab @@ -874,14 +875,14 @@ lookupRelationship :: RelId -> [Relationship] -> Maybe Target lookupRelationship relid rels = lookup relid (map (\(Relationship pair) -> pair) rels) -expandDrawingId :: String -> D ParPart +expandDrawingId :: String -> D (FilePath, B.ByteString) expandDrawingId s = do target <- asks (lookupRelationship s . envRelationships) case target of Just filepath -> do bytes <- asks (lookup (combine "word" filepath) . envMedia) case bytes of - Just bs -> return $ Drawing filepath bs + Just bs -> return (filepath, bs) Nothing -> throwError DocxError Nothing -> throwError DocxError @@ -894,7 +895,7 @@ elemToParPart ns element >>= findAttr (QName "embed" (lookup "r" ns) (Just "r")) in case drawing of - Just s -> expandDrawingId s + Just s -> expandDrawingId s >>= (\(fp, bs) -> return $ Drawing fp bs) Nothing -> throwError WrongElem elemToParPart ns element | isElem ns "w" "r" element = @@ -943,6 +944,17 @@ lookupEndnote :: String -> Notes -> Maybe Element lookupEndnote s (Notes _ _ ens) = ens >>= (M.lookup s) elemToRun :: NameSpaces -> Element -> D Run +elemToRun ns element + | isElem ns "w" "r" element + , Just drawingElem <- findChild (elemName ns "w" "drawing") element = + let a_ns = "http://schemas.openxmlformats.org/drawingml/2006/main" + drawing = findElement (QName "blip" (Just a_ns) (Just "a")) drawingElem + >>= findAttr (QName "embed" (lookup "r" ns) (Just "r")) + in + case drawing of + Just s -> expandDrawingId s >>= + (\(fp, bs) -> return $ InlineDrawing fp bs) + Nothing -> throwError WrongElem elemToRun ns element | isElem ns "w" "r" element , Just ref <- findChild (elemName ns "w" "footnoteReference") element From 98d14b2b2a20111d68bdfbaf358da41537ea71c9 Mon Sep 17 00:00:00 2001 From: Jesse Rosenthal Date: Thu, 7 Aug 2014 15:34:49 -0400 Subject: [PATCH 2/2] Docx reader: Test inline image code. --- pandoc.cabal | 1 + tests/Tests/Readers/Docx.hs | 6 +++++- tests/docx.inline_images.docx | Bin 0 -> 37784 bytes tests/docx.inline_images.native | 2 ++ 4 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 tests/docx.inline_images.docx create mode 100644 tests/docx.inline_images.native diff --git a/pandoc.cabal b/pandoc.cabal index b30ce37aa..66b4d61c4 100644 --- a/pandoc.cabal +++ b/pandoc.cabal @@ -178,6 +178,7 @@ Extra-Source-Files: tests/docx.hanging_indent.docx, tests/docx.headers.docx, tests/docx.image.docx, + tests/docx.inline_images.docx, tests/docx.inline_code.docx, tests/docx.inline_formatting.docx, tests/docx.links.docx, diff --git a/tests/Tests/Readers/Docx.hs b/tests/Tests/Readers/Docx.hs index efc520dba..c310cc8d7 100644 --- a/tests/Tests/Readers/Docx.hs +++ b/tests/Tests/Readers/Docx.hs @@ -107,9 +107,13 @@ tests = [ testGroup "inlines" "docx.links.docx" "docx.links.native" , testCompare - "inline image with reference output" + "inline image" "docx.image.docx" "docx.image_no_embed.native" + , testCompare + "inline image in links" + "docx.inline_images.docx" + "docx.inline_images.native" , testCompare "handling unicode input" "docx.unicode.docx" diff --git a/tests/docx.inline_images.docx b/tests/docx.inline_images.docx new file mode 100644 index 0000000000000000000000000000000000000000..6288f66ffa51b803d2bbfefce15e22060d237c6a GIT binary patch literal 37784 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 U07u5BjXf05BrxeJW1e394;prYF#rGn literal 0 HcmV?d00001 diff --git a/tests/docx.inline_images.native b/tests/docx.inline_images.native new file mode 100644 index 000000000..f962f5c09 --- /dev/null +++ b/tests/docx.inline_images.native @@ -0,0 +1,2 @@ +[Para [Str "This",Space,Str "picture",Space,Image [] ("media/image1.jpg",""),Space,Str "is",Space,Str "an",Space,Str "identicon."] +,Para [Str "Here",Space,Str "is",Space,Link [Str "one",Space,Image [] ("media/image2.jpg",""),Space,Str "that"] ("http://www.google.com",""),Space,Str "links."]]