From b3e579d8b77f181a1d7672af7905a1aa38a0845d Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Mon, 4 Mar 2019 22:56:15 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D0=B0=D1=80=D1=81=D0=B8=D0=BD=D0=B3=D0=B0?= =?UTF-8?q?=20pdf=20=D0=B8=20html?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/BookConverter/ConvertHtml.js | 2 +- server/core/BookConverter/ConvertPdf.js | 31 +++++++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/server/core/BookConverter/ConvertHtml.js b/server/core/BookConverter/ConvertHtml.js index 4fc4f640..eb9f6e73 100644 --- a/server/core/BookConverter/ConvertHtml.js +++ b/server/core/BookConverter/ConvertHtml.js @@ -76,7 +76,7 @@ class ConvertHtml extends ConvertBase { } }; - const newPara = new Set(['tr', '/table', 'hr', 'br', 'br/', 'dd', 'p', 'title', '/title', 'h1', 'h2', 'h3', '/h1', '/h2', '/h3']); + const newPara = new Set(['tr', '/table', 'hr', 'br', 'br/', 'li', 'dt', 'dd', 'p', 'title', '/title', 'h1', 'h2', 'h3', '/h1', '/h2', '/h3']); const onTextNode = (text, cutCounter, cutTag) => {// eslint-disable-line no-unused-vars if (!cutCounter && !(cutTitle && inTitle)) { diff --git a/server/core/BookConverter/ConvertPdf.js b/server/core/BookConverter/ConvertPdf.js index afcf5c6f..967bcdaa 100644 --- a/server/core/BookConverter/ConvertPdf.js +++ b/server/core/BookConverter/ConvertPdf.js @@ -38,6 +38,8 @@ class ConvertPdf extends ConvertHtml { let images = []; let loading = []; let inText = false; + let bold = false; + let italic = false; let title = ''; let prevTop = 0; let i = -1; @@ -68,7 +70,12 @@ class ConvertPdf extends ConvertHtml { const onTextNode = (text, cutCounter, cutTag) => {// eslint-disable-line no-unused-vars if (!cutCounter && inText) { - lines[i].text += text + ' '; + let tOpen = (bold ? '' : ''); + tOpen += (italic ? '' : ''); + let tClose = (italic ? '' : ''); + tClose += (bold ? '' : ''); + + lines[i].text += `${tOpen}${text}${tClose} `; if (i < 2) title += text + ' '; } @@ -76,6 +83,17 @@ class ConvertPdf extends ConvertHtml { const onStartNode = (tag, tail, singleTag, cutCounter, cutTag) => {// eslint-disable-line no-unused-vars if (!cutCounter) { + if (inText) { + switch (tag) { + case 'i': + italic = true; + break; + case 'b': + bold = true; + break; + } + } + if (tag == 'text' && !inText) { let attrs = sax.getAttrsSync(tail); const line = { @@ -121,6 +139,17 @@ class ConvertPdf extends ConvertHtml { }; const onEndNode = (tag, tail, singleTag, cutCounter, cutTag) => {// eslint-disable-line no-unused-vars + if (inText) { + switch (tag) { + case 'i': + italic = false; + break; + case 'b': + bold = false; + break; + } + } + if (tag == 'text') inText = false; };