Skip to content

Commit 81db7cd

Browse files
committed
add support for lists in html parser
1 parent 4c69493 commit 81db7cd

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

jspdf.plugin.from_html.js

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,8 @@
237237
OBJECT : 1,
238238
EMBED : 1
239239
};
240+
var listCount = 1;
241+
var lastCn;
240242
DrillForContent = function(element, renderer, elementHandlers) {
241243
var cn, cns, fragmentCSS, i, isBlock, l, px2pt, table2json;
242244
cns = element.childNodes;
@@ -275,13 +277,39 @@
275277
margins: renderer.pdf.margins_doc
276278
});
277279
renderer.y = renderer.pdf.lastCellPos.y + renderer.pdf.lastCellPos.h + 20;
280+
} else if (cn.nodeName === "OL" || cn.nodeName === "UL") {
281+
renderer.y += 10;
282+
listCount = 1;
283+
lastCn = cn;
284+
if (!elementHandledElsewhere(cn, renderer, elementHandlers)) {
285+
DrillForContent(cn, renderer, elementHandlers);
286+
}
287+
} else if (cn.nodeName === "LI") {
288+
var temp = renderer.x;
289+
renderer.x += 5;
290+
if (!elementHandledElsewhere(cn, renderer, elementHandlers)) {
291+
DrillForContent(cn, renderer, elementHandlers);
292+
}
293+
renderer.x = temp;
278294
} else {
295+
if (lastCn && (lastCn.nodeName === "UL" || lastCn.nodeName === "OL")) {
296+
renderer.y += 10;
297+
lastCn = false;
298+
}
279299
if (!elementHandledElsewhere(cn, renderer, elementHandlers)) {
280300
DrillForContent(cn, renderer, elementHandlers);
281301
}
282302
}
283303
} else if (cn.nodeType === 3) {
284-
renderer.addText(cn.nodeValue, fragmentCSS);
304+
var value = cn.nodeValue;
305+
if (cn.nodeValue && cn.parentNode.nodeName === "LI") {
306+
if (cn.parentNode.parentNode.nodeName === "OL") {
307+
value = listCount++ + '. ' + value;
308+
} else {
309+
value = '- ' + value;
310+
}
311+
}
312+
renderer.addText(value, fragmentCSS);
285313
} else if (typeof cn === "string") {
286314
renderer.addText(cn, fragmentCSS);
287315
}

0 commit comments

Comments
 (0)