Fixed converting issue related to pagebreaks in lists

This commit is contained in:
Georgy Litvinov 2016-12-26 17:49:08 +03:00 committed by Georgy Litvinov
parent 079afa9b7a
commit 4b15993e1f

View file

@ -27,11 +27,9 @@ package writer2latex.xhtml;
import java.util.Hashtable;
import java.util.Stack;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSSerializer;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import writer2latex.util.Misc;
@ -110,6 +108,7 @@ public class TextConverter extends ConverterHelper {
private String pageTags = config.getPageTags();
private boolean breakBeforeNextNode = false;
private boolean inTable = false;
private boolean inList = false;
public TextConverter(OfficeReader ofr, XhtmlConfig config, Converter converter) {
super(ofr,config,converter);
@ -154,9 +153,12 @@ public class TextConverter extends ConverterHelper {
}
//Split pages
onode = (Element) PageSplitter.splitSoftPageBreak(onode,ofr);
// Convert content
hnode = (Element)traverseBlockText(onode,hnode);
// Add footnotes and endnotes
footCv.insertFootnotes(hnode,true);
addFooter(hnode);
@ -253,7 +255,7 @@ public class TextConverter extends ConverterHelper {
String nodeName = child.getNodeName();
// Block splitting
nDontSplitLevel++;
if (OfficeReader.isDrawElement(child)) {
getDrawCv().handleDrawElement((Element)child,(Element)hnode,null,nFloatMode);
}
@ -318,7 +320,42 @@ public class TextConverter extends ConverterHelper {
nodeName.equals(XMLString.TEXT_UNORDERED_LIST) || // old
nodeName.equals(XMLString.TEXT_ORDERED_LIST)) // old
{
hnode = processPageBreaks(child, hnode,null);
StyleWithProperties style = null;
String newPageNumberProperty = null;
Element para = null;
Element head = null;
Element item = Misc.getChildByTagName(child, XMLString.TEXT_LIST_ITEM);
if (item != null){
NodeList paras = item.getElementsByTagName(XMLString.TEXT_P);
if (paras != null && paras.getLength() > 0){
para = (Element) paras.item(0);
}
NodeList heads = item.getElementsByTagName(XMLString.TEXT_H);
if (heads != null && heads.getLength() > 0){
head = (Element) heads.item(0);
}
if (para != null ){
StyleWithProperties paraStyle = ofr.getParStyle(Misc.getAttribute(para,XMLString.TEXT_STYLE_NAME));
if (paraStyle != null) {
newPageNumberProperty = paraStyle.getParProperty(XMLString.STYLE_PAGE_NUMBER, true);
}
newPageNumberProperty = paraStyle.getParProperty(XMLString.STYLE_PAGE_NUMBER, true);
if (checkMasterPageBreak(paraStyle) || newPageNumberProperty != null){
style = paraStyle;
}
}
if (head != null && style == null){
StyleWithProperties headStyle = ofr.getParStyle(Misc.getAttribute(para,XMLString.TEXT_STYLE_NAME));
if (headStyle != null) {
newPageNumberProperty = headStyle.getParProperty(XMLString.STYLE_PAGE_NUMBER, true);
}
if (checkMasterPageBreak(headStyle) || newPageNumberProperty != null){
style = headStyle;
}
}
}
hnode = processPageBreaks(child, hnode,style);
inList = true;
hnode = maybeSplit(hnode,null);
if (listIsOnlyHeadings(child)) {
nDontSplitLevel--;
@ -328,6 +365,7 @@ public class TextConverter extends ConverterHelper {
else {
handleList(child,nLevel+1,styleName,hnode);
}
inList = false;
}
else if (nodeName.equals(XMLString.TABLE_TABLE)) {
StyleWithProperties style = ofr.getTableStyle(Misc.getAttribute(child, XMLString.TABLE_STYLE_NAME));
@ -1616,7 +1654,7 @@ public class TextConverter extends ConverterHelper {
Misc.getPosInteger(node.getAttribute(XMLString.TEXT_OUTLINE_LEVEL),1):
Misc.getPosInteger(node.getAttribute(XMLString.TEXT_LEVEL),1);
}
private Node processPageBreaks(Node currentNode, Node hnode,StyleWithProperties style){
private Node processPageBreaks(Node currentNode, Node hnode, StyleWithProperties style){
//Check for paragraph in current node in case currentNode is table
// If currentNode is table
//check for first para inside
@ -1625,8 +1663,9 @@ public class TextConverter extends ConverterHelper {
if (inTable){
return hnode;
}
if (inList){
return hnode;
}
Integer newPageNumber = null;
if (style != null) {
// If style:paragraph-properties extists and contain