jspdf-md-renderer 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MdTokenType } from '../enums/mdTokenType';
|
|
2
2
|
import { MdTextParser } from '../parser/MdTextParser';
|
|
3
3
|
import { HandlePageBreaks } from '../utils/handlePageBreak';
|
|
4
|
-
import { renderHeading, renderHR, renderList, renderListItem, renderParagraph, renderRawItem, } from './components';
|
|
4
|
+
import { renderHeading, renderHR, renderList, renderListItem, renderParagraph, renderRawItem, renderCodeBlock } from './components';
|
|
5
5
|
import { getCharHight } from '../utils/doc-helpers';
|
|
6
6
|
/**
|
|
7
7
|
* Renders parsed markdown text into jsPDF document.
|
|
@@ -12,7 +12,7 @@ import { getCharHight } from '../utils/doc-helpers';
|
|
|
12
12
|
*/
|
|
13
13
|
export const MdTextRender = async (doc, text, options) => {
|
|
14
14
|
const parsedElements = await MdTextParser(text);
|
|
15
|
-
console.log(parsedElements);
|
|
15
|
+
// console.log(parsedElements);
|
|
16
16
|
let y = options.cursor.y;
|
|
17
17
|
const x = options.cursor.x;
|
|
18
18
|
const renderElement = (element, indentLevel = 0, hasRawBullet = false, start = 0, ordered = false) => {
|
|
@@ -40,6 +40,9 @@ export const MdTextRender = async (doc, text, options) => {
|
|
|
40
40
|
case MdTokenType.Hr:
|
|
41
41
|
y = renderHR(doc, y, options);
|
|
42
42
|
break;
|
|
43
|
+
case MdTokenType.Code:
|
|
44
|
+
y = renderCodeBlock(doc, element, x, y, indentLevel, hasRawBullet, options);
|
|
45
|
+
break;
|
|
43
46
|
case MdTokenType.Raw:
|
|
44
47
|
case MdTokenType.Text:
|
|
45
48
|
y = renderRawItem(doc, element, x, y, indentLevel, hasRawBullet, options, renderElement, start, ordered);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import jsPDF from 'jspdf';
|
|
2
|
+
import { ParsedElement } from '../../types';
|
|
3
|
+
import { RenderOption } from '../../types';
|
|
4
|
+
declare const renderCodeBlock: (doc: jsPDF, element: ParsedElement, x: number, y: number, indentLevel: number, hasRawBullet: boolean, options: RenderOption) => number;
|
|
5
|
+
export default renderCodeBlock;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { HandlePageBreaks } from '../../utils/handlePageBreak';
|
|
2
|
+
import { getCharHight } from '../../utils/doc-helpers';
|
|
3
|
+
const renderCodeBlock = (doc, element, x, y, indentLevel, hasRawBullet, options) => {
|
|
4
|
+
const indent = indentLevel * options.page.indent;
|
|
5
|
+
if (y +
|
|
6
|
+
doc.splitTextToSize(element.code ?? '', options.page.maxContentWidth - indent).length *
|
|
7
|
+
getCharHight(doc, options) -
|
|
8
|
+
2 * getCharHight(doc, options) >=
|
|
9
|
+
options.page.maxContentHeight) {
|
|
10
|
+
HandlePageBreaks(doc, options);
|
|
11
|
+
y = options.page.topmargin;
|
|
12
|
+
}
|
|
13
|
+
const totalHeight = doc.splitTextToSize(element.code ?? '', options.page.maxContentWidth - indent).length * getCharHight(doc, options);
|
|
14
|
+
y += options.page.lineSpace;
|
|
15
|
+
doc.setFillColor("#EEEEEE");
|
|
16
|
+
doc.setDrawColor('#eee');
|
|
17
|
+
doc.roundedRect(x, y - options.page.lineSpace, options.page.maxContentWidth, totalHeight, 2, 2, "FD");
|
|
18
|
+
// doc.rect(x,y-options.page.lineSpace,options.page.maxContentWidth,totalHeight,"F")
|
|
19
|
+
// doc.setTextColor('#')
|
|
20
|
+
doc.setFontSize(10);
|
|
21
|
+
doc.text(element.lang ?? '', x + options.page.maxContentWidth - doc.getTextWidth(element.lang ?? '') - options.page.lineSpace / 2, y);
|
|
22
|
+
doc.setFontSize(options.page.defaultFontSize);
|
|
23
|
+
// y+=options.page.lineSpace
|
|
24
|
+
doc.text(element.code ?? '', x + 4, y);
|
|
25
|
+
y += totalHeight;
|
|
26
|
+
return y;
|
|
27
|
+
};
|
|
28
|
+
export default renderCodeBlock;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jspdf-md-renderer",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "A jsPDF utility to render Markdown directly into formatted PDFs with custom designs.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
"lint:fix": "eslint src/** --fix",
|
|
25
25
|
"format": "prettier --write .",
|
|
26
26
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
27
|
-
"prepare": "npm run build"
|
|
27
|
+
"prepare": "npm run build",
|
|
28
|
+
"watch": "tsc --watch"
|
|
28
29
|
},
|
|
29
30
|
"repository": {
|
|
30
31
|
"type": "git",
|