From 5d54b1b0f45982ef52c534197767e694d5603f8a Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Wed, 9 Dec 2020 03:52:24 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=B4=20=D0=BA=D0=BE=D0=BD=D0=B2=D0=B5=D1=80=D1=82=D0=B5?= =?UTF-8?q?=D1=80=D0=BE=D0=BC=20pdf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/Reader/BookConverter/ConvertHtml.js | 9 +++++++-- server/core/Reader/BookConverter/ConvertPdf.js | 13 ++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/server/core/Reader/BookConverter/ConvertHtml.js b/server/core/Reader/BookConverter/ConvertHtml.js index 1b148eac..cf7da080 100644 --- a/server/core/Reader/BookConverter/ConvertHtml.js +++ b/server/core/Reader/BookConverter/ConvertHtml.js @@ -214,6 +214,8 @@ class ConvertHtml extends ConvertBase { body.section._a[0] = pars; + //console.log(JSON.stringify(fb2, null, 2)); + //подозрение на чистый текст, надо разбить на параграфы if (isText || (buf.length > 30*1024 && pars.length < buf.length/2000)) { let total = 0; @@ -266,8 +268,11 @@ class ConvertHtml extends ConvertBase { l++; } - if ((j > 0 && l >= parIndent) || - (j < lines.length - 1 && line == '') ){ + if (j > 0 && + (l >= parIndent || + (j < lines.length - 1 && line == '') + ) + ) { newPar(); } diff --git a/server/core/Reader/BookConverter/ConvertPdf.js b/server/core/Reader/BookConverter/ConvertPdf.js index 5906f3d3..3ffebb9e 100644 --- a/server/core/Reader/BookConverter/ConvertPdf.js +++ b/server/core/Reader/BookConverter/ConvertPdf.js @@ -92,6 +92,9 @@ class ConvertPdf extends ConvertHtml { let pt = -100; let j = -1; pagelines.forEach(line => { + //добавим закрывающий тег стиля + line.text += line.tClose; + if (Math.abs(pt - line.top) > 3) { j++; pl[j] = line; @@ -144,6 +147,8 @@ class ConvertPdf extends ConvertHtml { left: parseInt((attrs.hpos && attrs.hpos.value ? attrs.hpos.value : null), 10), width: parseInt((attrs.width && attrs.width.value ? attrs.width.value : null), 10), height: parseInt((attrs.height && attrs.height.value ? attrs.height.value : null), 10), + tOpen: '', + tClose: '', }; if (line.width != 0 || line.height != 0) { @@ -167,7 +172,13 @@ class ConvertPdf extends ConvertHtml { tClose = fonts[fontId].tClose; } - line.text += `${tOpen}${attrs.content.value}${tClose} `; + if (line.tOpen != tOpen) { + line.text += line.tClose + tOpen; + line.tOpen = tOpen; + line.tClose = tClose; + } + + line.text += `${line.text.length ? ' ' : ''}${attrs.content.value}`; } }