Bullets and numbering extra indentation
Home › Forums › Open-Xml-PowerTools › Bullets and numbering extra indentation
Tagged: Bullets and numbering, htmlToWmlConverter
This topic contains 2 replies, has 2 voices, and was last updated by gamartin 7 years, 9 months ago.
-
AuthorPosts
-
February 6, 2017 at 6:17 pm #4133
Eric:
It seems that when using the htmlToWmlConverter, the numbering elements created all have what appears to be an “extra” node
<w:tabs><w:tab w:val="num" w:pos="xxxx"/></w:tabs>
where the xxxx is a number that matches thew:left
value in the same<w:pPr>
node.Having this “extra” information causes any multi-line list item to have extra hanging indentation – roughly 0.10 of an inch.
The OpenXml documentation at https://msdn.microsoft.com/en-us/library/office/ee922775(v=office.14).aspx does not have this extra node, and removing it resolves my issue.
Is this a bug or am I missing something? I am looking at a simple page right now that only has single level bullet lists, but have more complex content that includes various numbering schemes with multiple levels and don’t want to break anything!
Thanks.
February 6, 2017 at 6:42 pm #4134I don’t have quite enough information to help with this. Can you post the markup for the entire paragraph, and where you think it wrong? Feel free to post a doc online somewhere if you want me to examine the markup.
There is an issue I see with your description – tabs are not ‘additive’ – they are directly positioned.
There is another issue which is that Word has a fairly complex algorithm for text positioning, including that if a word extends past a tab position, then Word automatically ‘creates’ a tab based on specific settings in the Open XML document. There can be issues associated with transforming Open XML (rendered by Word) to HTML (rendered by browsers) where font metrics are ever so slightly different, and something that fits within one tab as rendered in Word extends beyond the tab, rendered in the browser, causing text to ‘shift over’.
The WmlToHtmlConverter project was never intended to do a pixel by pixel rendering of the document. It isn’t possible without writing a layout engine that is compatible feature-for-feature with Word, and this would include using a Word compatible text renderer (which browsers are not). There is enough mismatch between the layout system of Word and the layout system of HTML that you just have to do the best you can, and then don’t worry too much about it.
The intent of WmlToHtmlConverter is to give a pretty good representation of the document, but it can’t be perfect.
With regards to your specific case, it is important to understand exactly what is going on, and it is possible that the “extra” node is adjusting the ‘tabbing’ system (which calculates spans with a given width) in an unexpected way.
Best, Eric
February 6, 2017 at 6:52 pm #4135Eric:
Here is an example of what is being generated by the HtmlToWmlConverter:
<w:abstractNum w:abstractNumId="1"> <w:nsid w:val="E4F23709"/> <w:multiLevelType w:val="multilevel"/> <w:tmpl w:val="02BEA0DA"/> <w:lvl w:ilvl="0"> <w:start w:val="1"/> <w:numFmt w:val="bullet"/> <w:lvlText w:val=""/> <w:lvlJc w:val="left"/> <w:pPr> <w:tabs> <w:tab w:val="num" w:pos="720"/> </w:tabs> <w:ind w:left="720" w:hanging="360"/> </w:pPr> <w:rPr> <w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" w:hint="default"/> <w:sz w:val="20"/> </w:rPr> </w:lvl> <w:lvl w:ilvl="1"> <w:start w:val="1"/> <w:numFmt w:val="bullet"/> <w:lvlText w:val="o"/> <w:lvlJc w:val="left"/> <w:pPr> <w:tabs> <w:tab w:val="num" w:pos="1440"/> </w:tabs> <w:ind w:left="1440" w:hanging="360"/> </w:pPr> <w:rPr> <w:rFonts w:ascii="Courier New" w:hAnsi="Courier New" w:hint="default"/> <w:sz w:val="20"/> </w:rPr> </w:lvl>
If I remove all the
<w:tabs....>
nodes, the alignment is fine, otherwise it has too much hanging indentation when the content is more than one line.I am going to see if I can simply remove it from the numbering generation without breaking anything else…
Thanks,
Garth
-
AuthorPosts
You must be logged in to reply to this topic.