Skip to content

Commit 460490a

Browse files
committed
Merge pull request #431 from urandom/line-breaks
Preserve the meaning of BR elements
2 parents eb42b50 + 63380ed commit 460490a

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

jspdf.plugin.from_html.js

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,17 @@
8787
trailingSpace = true;
8888
i = 0;
8989
while (i !== l) {
90-
fragment = array[i].replace(/\s+/g, " ");
91-
if (trailingSpace) {
92-
fragment = fragment.trimLeft();
93-
}
94-
if (fragment) {
95-
trailingSpace = r.test(fragment);
90+
// Leave the line breaks intact
91+
if (array[i] != "\u2028") {
92+
fragment = array[i].replace(/\s+/g, " ");
93+
if (trailingSpace) {
94+
fragment = fragment.trimLeft();
95+
}
96+
if (fragment) {
97+
trailingSpace = r.test(fragment);
98+
}
99+
array[i] = fragment;
96100
}
97-
array[i] = fragment;
98101
i++;
99102
}
100103
return array;
@@ -468,6 +471,7 @@
468471
renderer.x = temp;
469472
} else if (cn.nodeName === "BR") {
470473
renderer.y += fragmentCSS["font-size"] * renderer.pdf.internal.scaleFactor;
474+
renderer.addText("\u2028", clone(fragmentCSS));
471475
} else {
472476
if (!elementHandledElsewhere(cn, renderer, elementHandlers)) {
473477
DrillForContent(cn, renderer, elementHandlers);
@@ -733,7 +737,10 @@
733737
textIndent : currentLineLength
734738
};
735739
fragmentLength = this.pdf.getStringUnitWidth(fragment, fragmentSpecificMetrics) * fragmentSpecificMetrics.fontSize / k;
736-
if (currentLineLength + fragmentLength > maxLineLength) {
740+
if (fragment == "\u2028") {
741+
line = [];
742+
lines.push(line);
743+
} else if (currentLineLength + fragmentLength > maxLineLength) {
737744
fragmentChopped = this.pdf.splitTextToSize(fragment, maxLineLength, fragmentSpecificMetrics);
738745
line.push([fragmentChopped.shift(), style]);
739746
while (fragmentChopped.length) {

0 commit comments

Comments
 (0)