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
");
}
else if (sName == L"h1")
- {
- oXml.WriteString(L"");
- readStream(oXml, oIndexHtml, arrBinary, true);
- oXml.WriteString(L"
");
- }
- else if (sName == L"h2")
{
oXml.WriteString(L"");
readStream(oXml, oIndexHtml, arrBinary, true);
oXml.WriteString(L"
");
}
- else if (sName == L"h3")
+ else if (sName == L"h2")
{
oXml.WriteString(L"");
readStream(oXml, oIndexHtml, arrBinary, true);
oXml.WriteString(L"
");
}
- else if (sName == L"h4")
+ else if (sName == L"h3")
{
oXml.WriteString(L"");
readStream(oXml, oIndexHtml, arrBinary, true);
oXml.WriteString(L"
");
}
- else if (sName == L"h5")
+ else if (sName == L"h4")
{
oXml.WriteString(L"");
readStream(oXml, oIndexHtml, arrBinary, true);
oXml.WriteString(L"
");
}
- else if (sName == L"h6")
+ else if (sName == L"h5")
{
oXml.WriteString(L"");
readStream(oXml, oIndexHtml, arrBinary, true);
oXml.WriteString(L"
");
}
+ else if (sName == L"h6")
+ {
+ oXml.WriteString(L"");
+ readStream(oXml, oIndexHtml, arrBinary, true);
+ oXml.WriteString(L"
");
+ }
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