From 15f02c7115dbe8cf68e54074b9d961643f147c3b Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Wed, 9 Dec 2020 01:29:58 +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 --- .../core/Reader/BookConverter/ConvertPdf.js | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/server/core/Reader/BookConverter/ConvertPdf.js b/server/core/Reader/BookConverter/ConvertPdf.js index 44fa563f..c923d916 100644 --- a/server/core/Reader/BookConverter/ConvertPdf.js +++ b/server/core/Reader/BookConverter/ConvertPdf.js @@ -1,9 +1,11 @@ +const _ = require('lodash'); const fs = require('fs-extra'); const path = require('path'); const sax = require('../../sax'); const utils = require('../../utils'); const ConvertHtml = require('./ConvertHtml'); +const xmlParser = require('../../xmlParser'); class ConvertPdf extends ConvertHtml { check(data, opts) { @@ -22,7 +24,9 @@ class ConvertPdf extends ConvertHtml { const {inputFiles, callback, abort, uploadFileName} = opts; const inpFile = inputFiles.sourceFile; - const outFile = `${inputFiles.filesDir}/${utils.randomHexString(10)}.xml`; + const outBasename = `${inputFiles.filesDir}/${utils.randomHexString(10)}`; + const outFile = `${outBasename}.xml`; + const metaFile = `${outBasename}_metadata.xml`; const pdfaltoPath = `${this.config.dataDir}/pdfalto/pdfalto`; @@ -49,6 +53,7 @@ class ConvertPdf extends ConvertHtml { let loading = []; let title = ''; + let author = ''; let prevTop = 0; let i = -1; @@ -182,11 +187,26 @@ class ConvertPdf extends ConvertHtml { } indents[0] = 0; - //формируем текст - const limitSize = 2*this.config.maxUploadFileSize; + //title + if (fs.pathExists(metaFile)) { + const metaXmlString = (await fs.readFile(metaFile)).toString(); + let metaXmlParsed = xmlParser.parseXml(metaXmlString); + metaXmlParsed = xmlParser.simplifyXmlParsed(metaXmlParsed); + if (metaXmlParsed.metadata) { + title = (metaXmlParsed.metadata.title ? metaXmlParsed.metadata.title._t : null); + author = (metaXmlParsed.metadata.author ? metaXmlParsed.metadata.author._t : null); + } + } + if (!title && uploadFileName) title = uploadFileName; - let text = `${title}`; + + //формируем текст + const limitSize = 2*this.config.maxUploadFileSize; + let text = ''; + text += `${title}`; + text += `${author}`; + let concat = ''; let sp = ''; for (const line of lines) { @@ -216,7 +236,7 @@ class ConvertPdf extends ConvertHtml { if (concat) text += sp + concat + "\n"; - return await super.run(Buffer.from(text), {skipCheck: true, isText: true, cutTitle: true}); + return await super.run(Buffer.from(text), {skipCheck: true, isText: true}); } }