Fixing multiline headers in PDF

This commit is contained in:
FinnStutzenstein 2017-10-10 10:13:47 +02:00
parent 20cf124e9e
commit fc185e2eeb
2 changed files with 31 additions and 23 deletions

View File

@ -658,30 +658,38 @@ angular.module('OpenSlidesApp.core.pdf', [])
case "h4": case "h4":
case "h5": case "h5":
case "h6": case "h6":
// Special case quick fix to handle the dirty HTML format*/
// see following issue: https://github.com/OpenSlides/OpenSlides/issues/3025
if (lineNumberMode === "outside" && if (lineNumberMode === "outside" &&
element.childNodes.length > 0 && element.childNodes.length > 0 &&
element.childNodes[0].getAttribute) { element.childNodes[0].getAttribute) {
var HeaderOutsideLineNumber = { // A heading may have multiple lines, so handle line by line separated by line number elements
width: 20, var outerStack = create("stack");
text: element.childNodes[0].getAttribute("data-line-number"), var currentCol;
color: "gray", _.forEach(element.childNodes, function (node) {
fontSize: 8, if (node.getAttribute && node.getAttribute('data-line-number')) {
margin: [0, 2, 0, 0] if (currentCol) {
}; ComputeStyle(currentCol, elementStyles[nodeName]);
var HeaderOutsideLineNumberText = { outerStack.stack.push(currentCol);
text: element.childNodes[1].textContent, }
}; currentCol = {
ComputeStyle(HeaderOutsideLineNumberText, elementStyles[nodeName]);
var HeaderOutsideLineNumberColumns = {
columns: [ columns: [
HeaderOutsideLineNumber, getLineNumberObject(node.getAttribute('data-line-number')),
HeaderOutsideLineNumberText
], ],
margin: [0, 11, 0, 0] margin: [0, 2, 0, 0],
}; };
alreadyConverted.push(HeaderOutsideLineNumberColumns); } else if (node.textContent) {
var HeaderText = {
text: node.textContent,
};
currentCol.columns.push(HeaderText);
}
});
ComputeStyle(currentCol, elementStyles[nodeName]);
outerStack.stack.push(currentCol);
outerStack.margin = [0, 0, 0, 0];
if (!/h[1-6]/.test(element.previousSibling.nodeName.toLowerCase())) {
outerStack.margin[1] = 10;
}
alreadyConverted.push(outerStack);
} else { } else {
currentParagraph = create("text"); currentParagraph = create("text");
currentParagraph.marginBottom = 4; currentParagraph.marginBottom = 4;
@ -855,7 +863,7 @@ angular.module('OpenSlidesApp.core.pdf', [])
break; break;
case "img": case "img":
var regex = /([\w-]*)\s*:\s*([^;]*)/g; var regex = /([\w-]*)\s*:\s*([^;]*)/g;
var match; //helper variable for the refegex var match; //helper variable for the regex
var imageSize={}; var imageSize={};
var maxResolution = { var maxResolution = {
width: 435, width: 435,

View File

@ -300,7 +300,7 @@ angular.module('OpenSlidesApp.motions.pdf', ['OpenSlidesApp.core.pdf'])
style: 'heading3', style: 'heading3',
marginTop: 25, marginTop: 25,
}); });
reason.push(converter.convertHTML(motion.getReason(motionVersion), lineNumberMode)); reason.push(converter.convertHTML(motion.getReason(motionVersion), 'none'));
} }
return reason; return reason;
} }