ImageSize: use viewBox for svg if no length, width.
This change allows pandoc to extract size information from more SVGs. Closes #7045.
This commit is contained in:
parent
f5e3c1dad6
commit
198ce0cde9
2 changed files with 20 additions and 18 deletions
|
@ -328,12 +328,16 @@ getSize img =
|
|||
svgSize :: WriterOptions -> ByteString -> Maybe ImageSize
|
||||
svgSize opts img = do
|
||||
doc <- Xml.parseXMLDoc $ UTF8.toString img
|
||||
let viewboxSize = do
|
||||
vb <- Xml.findAttrBy (== Xml.QName "viewBox" Nothing Nothing) doc
|
||||
[_,_,w,h] <- mapM safeRead (T.words (T.pack vb))
|
||||
return (w,h)
|
||||
let dpi = fromIntegral $ writerDpi opts
|
||||
let dirToInt dir = do
|
||||
dim <- Xml.findAttrBy (== Xml.QName dir Nothing Nothing) doc >>= lengthToDim . T.pack
|
||||
return $ inPixel opts dim
|
||||
w <- dirToInt "width"
|
||||
h <- dirToInt "height"
|
||||
w <- dirToInt "width" <|> (fst <$> viewboxSize)
|
||||
h <- dirToInt "height" <|> (snd <$> viewboxSize)
|
||||
return ImageSize {
|
||||
pxX = w
|
||||
, pxY = h
|
||||
|
|
|
@ -36,28 +36,27 @@
|
|||
% pandoc -f latex -t icml
|
||||
\includegraphics{command/SVG_logo.svg}
|
||||
^D
|
||||
[WARNING] Could not determine image size for 'command/SVG_logo.svg': could not determine SVG size
|
||||
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/Paragraph">
|
||||
<CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
|
||||
<Rectangle Self="uec" StrokeWeight="0" ItemTransform="1 0 0 1 150 -100">
|
||||
<Rectangle Self="uec" StrokeWeight="0" ItemTransform="1 0 0 1 37.5 -37.5">
|
||||
<Properties>
|
||||
<PathGeometry>
|
||||
<GeometryPathType PathOpen="false">
|
||||
<PathPointArray>
|
||||
<PathPointType Anchor="-150 -100" LeftDirection="-150 -100" RightDirection="-150 -100" />
|
||||
<PathPointType Anchor="-150 100" LeftDirection="-150 100" RightDirection="-150 100" />
|
||||
<PathPointType Anchor="150 100" LeftDirection="150 100" RightDirection="150 100" />
|
||||
<PathPointType Anchor="150 -100" LeftDirection="150 -100" RightDirection="150 -100" />
|
||||
<PathPointType Anchor="-37.5 -37.5" LeftDirection="-37.5 -37.5" RightDirection="-37.5 -37.5" />
|
||||
<PathPointType Anchor="-37.5 37.5" LeftDirection="-37.5 37.5" RightDirection="-37.5 37.5" />
|
||||
<PathPointType Anchor="37.5 37.5" LeftDirection="37.5 37.5" RightDirection="37.5 37.5" />
|
||||
<PathPointType Anchor="37.5 -37.5" LeftDirection="37.5 -37.5" RightDirection="37.5 -37.5" />
|
||||
</PathPointArray>
|
||||
</GeometryPathType>
|
||||
</PathGeometry>
|
||||
</Properties>
|
||||
<Image Self="ue6" ItemTransform="1 0 0 1 -150 -100">
|
||||
<Image Self="ue6" ItemTransform="1 0 0 1 -37.5 -37.5">
|
||||
<Properties>
|
||||
<Profile type="string">
|
||||
$ID/Embedded
|
||||
</Profile>
|
||||
<GraphicBounds Left="0" Top="0" Right="300" Bottom="200" />
|
||||
<GraphicBounds Left="0" Top="0" Right="75" Bottom="75" />
|
||||
</Properties>
|
||||
<Link Self="ueb" LinkResourceURI="file:command/SVG_logo.svg" />
|
||||
</Image>
|
||||
|
@ -70,28 +69,27 @@
|
|||
% pandoc -f latex -t icml
|
||||
\includegraphics{command/SVG_logo-without-xml-declaration.svg}
|
||||
^D
|
||||
[WARNING] Could not determine image size for 'command/SVG_logo-without-xml-declaration.svg': could not determine SVG size
|
||||
<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/Paragraph">
|
||||
<CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
|
||||
<Rectangle Self="uec" StrokeWeight="0" ItemTransform="1 0 0 1 150 -100">
|
||||
<Rectangle Self="uec" StrokeWeight="0" ItemTransform="1 0 0 1 37.5 -37.5">
|
||||
<Properties>
|
||||
<PathGeometry>
|
||||
<GeometryPathType PathOpen="false">
|
||||
<PathPointArray>
|
||||
<PathPointType Anchor="-150 -100" LeftDirection="-150 -100" RightDirection="-150 -100" />
|
||||
<PathPointType Anchor="-150 100" LeftDirection="-150 100" RightDirection="-150 100" />
|
||||
<PathPointType Anchor="150 100" LeftDirection="150 100" RightDirection="150 100" />
|
||||
<PathPointType Anchor="150 -100" LeftDirection="150 -100" RightDirection="150 -100" />
|
||||
<PathPointType Anchor="-37.5 -37.5" LeftDirection="-37.5 -37.5" RightDirection="-37.5 -37.5" />
|
||||
<PathPointType Anchor="-37.5 37.5" LeftDirection="-37.5 37.5" RightDirection="-37.5 37.5" />
|
||||
<PathPointType Anchor="37.5 37.5" LeftDirection="37.5 37.5" RightDirection="37.5 37.5" />
|
||||
<PathPointType Anchor="37.5 -37.5" LeftDirection="37.5 -37.5" RightDirection="37.5 -37.5" />
|
||||
</PathPointArray>
|
||||
</GeometryPathType>
|
||||
</PathGeometry>
|
||||
</Properties>
|
||||
<Image Self="ue6" ItemTransform="1 0 0 1 -150 -100">
|
||||
<Image Self="ue6" ItemTransform="1 0 0 1 -37.5 -37.5">
|
||||
<Properties>
|
||||
<Profile type="string">
|
||||
$ID/Embedded
|
||||
</Profile>
|
||||
<GraphicBounds Left="0" Top="0" Right="300" Bottom="200" />
|
||||
<GraphicBounds Left="0" Top="0" Right="75" Bottom="75" />
|
||||
</Properties>
|
||||
<Link Self="ueb" LinkResourceURI="file:command/SVG_logo-without-xml-declaration.svg" />
|
||||
</Image>
|
||||
|
|
Loading…
Add table
Reference in a new issue