From f22e95aaaaa4e1e7deb7719f5011b8efcda57755 Mon Sep 17 00:00:00 2001 From: Kulikova Svetlana Date: Wed, 10 Feb 2021 15:05:41 +0300 Subject: [PATCH] fix description --- Fb2File/Fb2File.cpp | 57 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Fb2File/Fb2File.cpp b/Fb2File/Fb2File.cpp index 962de15ad5..24ff6b39b2 100644 --- a/Fb2File/Fb2File.cpp +++ b/Fb2File/Fb2File.cpp @@ -14,6 +14,10 @@ #include #include #include +#include +#include +#include +#include #ifndef VALUE2STR #define VALUE_TO_STRING(x) #x @@ -1527,8 +1531,8 @@ HRESULT CFb2File::Open(const std::wstring& sPath, const std::wstring& sDirectory return S_OK; } -void readLi(NSStringUtils::CStringBuilder& oXml, XmlUtils::CXmlLiteReader& oIndexHtml, std::vector& arrBinary, bool bUl); -void readStream(NSStringUtils::CStringBuilder& oXml, XmlUtils::CXmlLiteReader& oIndexHtml, std::vector& arrBinary, bool bWasP) +static void readLi(NSStringUtils::CStringBuilder& oXml, XmlUtils::CXmlLiteReader& oIndexHtml, std::vector& arrBinary, bool bUl); +static void readStream(NSStringUtils::CStringBuilder& oXml, XmlUtils::CXmlLiteReader& oIndexHtml, std::vector& arrBinary, bool bWasP) { int nDeath = oIndexHtml.GetDepth(); if (oIndexHtml.IsEmptyNode() || !oIndexHtml.ReadNextSiblingNode2(nDeath)) @@ -1549,41 +1553,41 @@ void readStream(NSStringUtils::CStringBuilder& oXml, XmlUtils::CXmlLiteReader& o oXml.WriteString(L"

"); } else if (sName == L"h1") - { - oXml.WriteString(L"<p>"); - readStream(oXml, oIndexHtml, arrBinary, true); - oXml.WriteString(L"</p>"); - } - else if (sName == L"h2") { oXml.WriteString(L"
<p>"); readStream(oXml, oIndexHtml, arrBinary, true); oXml.WriteString(L"</p>
"); } - else if (sName == L"h3") + else if (sName == L"h2") { oXml.WriteString(L"
<p>"); readStream(oXml, oIndexHtml, arrBinary, true); oXml.WriteString(L"</p>
"); } - else if (sName == L"h4") + else if (sName == L"h3") { oXml.WriteString(L"
<p>"); readStream(oXml, oIndexHtml, arrBinary, true); oXml.WriteString(L"</p>
"); } - else if (sName == L"h5") + else if (sName == L"h4") { oXml.WriteString(L"
<p>"); readStream(oXml, oIndexHtml, arrBinary, true); oXml.WriteString(L"</p>
"); } - else if (sName == L"h6") + else if (sName == L"h5") { oXml.WriteString(L"
<p>"); readStream(oXml, oIndexHtml, arrBinary, true); oXml.WriteString(L"</p>
"); } + else if (sName == L"h6") + { + oXml.WriteString(L"
<p>"); + readStream(oXml, oIndexHtml, arrBinary, true); + oXml.WriteString(L"</p>
"); + } else if (sName == L"span") { std::wstring sStyle; @@ -1699,7 +1703,7 @@ void readStream(NSStringUtils::CStringBuilder& oXml, XmlUtils::CXmlLiteReader& o } while (oIndexHtml.ReadNextSiblingNode2(nDeath)); } -void readLi(NSStringUtils::CStringBuilder& oXml, XmlUtils::CXmlLiteReader& oIndexHtml, std::vector& arrBinary, bool bUl) +static void readLi(NSStringUtils::CStringBuilder& oXml, XmlUtils::CXmlLiteReader& oIndexHtml, std::vector& arrBinary, bool bUl) { int nNum = 1; int nDeath = oIndexHtml.GetDepth(); @@ -1718,16 +1722,32 @@ void readLi(NSStringUtils::CStringBuilder& oXml, XmlUtils::CXmlLiteReader& oInde } while (oIndexHtml.ReadNextSiblingNode2(nDeath)); } +static std::wstring GenerateUUID() +{ + std::mt19937 oRand(time(0)); + std::wstringstream sstream; + sstream << std::setfill(L'0') << std::hex << std::setw(8) << (oRand() & 0xffffffff); + sstream << L'-'; + sstream << std::setfill(L'0') << std::hex << std::setw(4) << (oRand() & 0xffff); + sstream << L'-'; + sstream << std::setfill(L'0') << std::hex << std::setw(4) << (oRand() & 0xffff); + sstream << L'-'; + sstream << std::setfill(L'0') << std::hex << std::setw(4) << (oRand() & 0xffff); + sstream << L'-'; + sstream << std::setfill(L'0') << std::hex << std::setw(8) << (oRand() & 0xffffffff); + return sstream.str(); +} + HRESULT CFb2File::FromHtml(const std::wstring& sSrc, const std::wstring& sDst) { NSStringUtils::CStringBuilder oDocument; oDocument.WriteString(L""); // description oDocument.WriteString(L""); - // title-info std::wstring sCoreXml; if (NSFile::CFileBinary::ReadAllTextUtf8(sSrc + L"/docx_unpacked/docProps/core.xml", sCoreXml)) { + // title-info oDocument.WriteString(L""); std::wstring sBookTitle = NSFile::GetFileName(sDst); std::wstring sAuthor = sBookTitle; @@ -1766,7 +1786,16 @@ HRESULT CFb2File::FromHtml(const std::wstring& sSrc, const std::wstring& sDst) oDocument.WriteString(L"

" + sAnnotation + L"

"); if (!sKeywords.empty()) oDocument.WriteString(L"" + sKeywords + L""); + oDocument.WriteString(L"en"); oDocument.WriteString(L"
"); + // document-info + oDocument.WriteString(L""); + oDocument.WriteString(L"" + sAuthor + L""); + oDocument.WriteString(L""); + oDocument.WriteString(L"" + GenerateUUID() + L""); + oDocument.WriteString(L"1.0"); + oDocument.WriteString(L""); + } oDocument.WriteString(L"
"); // body