diff --git a/EpubFile/CEpubFile.h b/EpubFile/CEpubFile.h
index e830126ea9..0af95a561d 100644
--- a/EpubFile/CEpubFile.h
+++ b/EpubFile/CEpubFile.h
@@ -30,7 +30,7 @@ public:
void SetTempDirectory(const std::wstring& stempDir);
HRESULT Convert(const std::wstring& sInputFile, const std::wstring& sOutputFile, bool bIsOutCompress = true);
void ShowMap();
- HRESULT FromHtml(const std::wstring& sSrc, const std::wstring& sDst);
+ HRESULT FromHtml(const std::wstring& sSrc, const std::wstring& sDstFile);
};
#endif // CEPUBFILE_H
diff --git a/EpubFile/src/CEpubFile.cpp b/EpubFile/src/CEpubFile.cpp
index b55632dcb5..9da23dea06 100644
--- a/EpubFile/src/CEpubFile.cpp
+++ b/EpubFile/src/CEpubFile.cpp
@@ -185,27 +185,27 @@ void CEpubFile::ShowMap()
std::wcout << oItem.m_sID << L" - " << m_mapRefs[oItem.m_sID].GetRef() << std::endl;
}
-HRESULT CEpubFile::FromHtml(const std::wstring& sSrc, const std::wstring& sDst)
+HRESULT CEpubFile::FromHtml(const std::wstring& sSrc, const std::wstring& sDstFile)
{
- NSDirectory::CreateDirectory(sDst + L"/META-INF");
- NSDirectory::CreateDirectory(sDst + L"/OEBPS");
+ NSDirectory::CreateDirectory(m_sTempDir + L"/META-INF");
+ NSDirectory::CreateDirectory(m_sTempDir + L"/OEBPS");
NSFile::CFileBinary oMimeType;
- if (oMimeType.CreateFileW(sDst + L"/mimetype"))
+ if (oMimeType.CreateFileW(m_sTempDir + L"/mimetype"))
{
oMimeType.WriteStringUTF8(L"application/epub+zip");
oMimeType.CloseFile();
}
NSFile::CFileBinary oContainerXml;
- if (oContainerXml.CreateFileW(sDst + L"/META-INF/container.xml"))
+ if (oContainerXml.CreateFileW(m_sTempDir + L"/META-INF/container.xml"))
{
oContainerXml.WriteStringUTF8(L"");
oContainerXml.CloseFile();
}
NSFile::CFileBinary oContentOpf;
- if (oContentOpf.CreateFileW(sDst + L"/OEBPS/content.opf"))
+ if (oContentOpf.CreateFileW(m_sTempDir + L"/OEBPS/content.opf"))
{
oContentOpf.WriteStringUTF8(L"");
// metadata
@@ -217,12 +217,19 @@ HRESULT CEpubFile::FromHtml(const std::wstring& sSrc, const std::wstring& sDst)
oCoreReader.ReadNextNode();
int nDeath = oCoreReader.GetDepth();
while (oCoreReader.ReadNextSiblingNode(nDeath))
+ {
if (oCoreReader.GetNamespacePrefix() == L"dc")
- oContentOpf.WriteStringUTF8(oCoreReader.GetInnerXml());
+ {
+ oContentOpf.WriteStringUTF8(oCoreReader.GetOuterXml());
+ }
+ }
}
-
- NSFile::CFileBinary::Copy(sSrc + L"/doct_unpacked/index.html", sDst + L"/OEBPS/index.html");
+ // index.html
+ NSFile::CFileBinary::Copy(sSrc + L"/doct_unpacked/index.html", m_sTempDir + L"/OEBPS/index.html");
oContentOpf.WriteStringUTF8(L" ");
oContentOpf.CloseFile();
}
+
+ COfficeUtils oOfficeUtils;
+ return oOfficeUtils.CompressFileOrDirectory(m_sTempDir, sDstFile);
}
diff --git a/EpubFile/test/main.cpp b/EpubFile/test/main.cpp
index 932733f4dd..a862d259c3 100644
--- a/EpubFile/test/main.cpp
+++ b/EpubFile/test/main.cpp
@@ -10,12 +10,24 @@
int main()
{
- std::vector arFiles = NSDirectory::GetFiles(NSFile::GetProcessDirectory() + L"/../../../Files");
std::wstring sTmp = NSFile::GetProcessDirectory() + L"/tmp";
std::wstring sOutputDirectory = NSFile::GetProcessDirectory() + L"/OutputFiles";
NSDirectory::CreateDirectory(sOutputDirectory);
NSDirectory::CreateDirectory(sTmp);
+ bool bFromHtml = false;
+ if (bFromHtml)
+ {
+ std::wstring sFile = NSFile::GetProcessDirectory() + L"/../../../FromHtmlTest/test3";
+ CEpubFile oEpub;
+ oEpub.SetTempDirectory(sTmp);
+ oEpub.FromHtml(sFile, sOutputDirectory + L"/res.epub");
+ NSDirectory::DeleteDirectory(sTmp);
+ return 0;
+ }
+
+ std::vector arFiles = NSDirectory::GetFiles(NSFile::GetProcessDirectory() + L"/../../../Files");
+
clock_t tTime1 = clock();
//Русские символы в консоль не выводятся
for (const std::wstring& sFileName : arFiles)