mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-10 18:05:41 +08:00
Improve txt file writer
This commit is contained in:
@ -153,17 +153,58 @@ namespace Txt2Docx
|
||||
{
|
||||
return converter_->m_inputFile.read(path);
|
||||
}
|
||||
void Converter::write(NSStringUtils::CStringBuilder &stringWriter)
|
||||
{
|
||||
const wchar_t* fontName = L"Courier New";
|
||||
const wchar_t* defaultSpacing = L"<w:spacing w:after=\"0\" w:line=\"240\" w:lineRule=\"auto\"/>";
|
||||
|
||||
for (const std::wstring &lineRaw : converter_->m_inputFile.m_listContent)
|
||||
{
|
||||
std::wstring line = lineRaw;
|
||||
|
||||
line.erase(std::remove(line.begin(), line.end(), L'\x08'), line.end());
|
||||
|
||||
stringWriter.WriteString(L"<w:p><w:pPr>");
|
||||
stringWriter.WriteString(defaultSpacing);
|
||||
stringWriter.WriteString(L"<w:rPr><w:rFonts w:ascii=\"");
|
||||
stringWriter.WriteString(fontName);
|
||||
stringWriter.WriteString(L"\" w:hAnsi=\"");
|
||||
stringWriter.WriteString(fontName);
|
||||
stringWriter.WriteString(L"\" w:cs=\"");
|
||||
stringWriter.WriteString(fontName);
|
||||
stringWriter.WriteString(L"\"/></w:rPr></w:pPr>");
|
||||
|
||||
size_t start = 0;
|
||||
while (true)
|
||||
{
|
||||
size_t pos = line.find(L'\x09', start);
|
||||
std::wstring segment = (pos == std::wstring::npos) ? line.substr(start) : line.substr(start, pos - start);
|
||||
|
||||
if (!segment.empty())
|
||||
{
|
||||
stringWriter.WriteString(L"<w:r><w:rPr><w:rFonts w:ascii=\"");
|
||||
stringWriter.WriteString(fontName);
|
||||
stringWriter.WriteString(L"\" w:hAnsi=\"");
|
||||
stringWriter.WriteString(fontName);
|
||||
stringWriter.WriteString(L"\" w:cs=\"");
|
||||
stringWriter.WriteString(fontName);
|
||||
stringWriter.WriteString(L"\"/></w:rPr><w:t xml:space=\"preserve\">");
|
||||
stringWriter.WriteString(segment.c_str());
|
||||
stringWriter.WriteString(L"</w:t></w:r>");
|
||||
}
|
||||
|
||||
if (pos == std::wstring::npos)
|
||||
break;
|
||||
|
||||
stringWriter.WriteString(L"<w:tab/>");
|
||||
start = pos + 1;
|
||||
}
|
||||
|
||||
stringWriter.WriteString(L"</w:p>");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Converter::write(/*const std::wstring& path*/NSStringUtils::CStringBuilder & stringWriter)
|
||||
{
|
||||
for (size_t i = 0; i < converter_->m_outputFile.m_arrItems.size(); ++i)
|
||||
{
|
||||
if ( converter_->m_outputFile.m_arrItems[i] )
|
||||
stringWriter.WriteString(converter_->m_outputFile.m_arrItems[i]->toXML());
|
||||
}
|
||||
//BOOL res = converter_->m_outputFile.Write(std_string2string(path.string()));
|
||||
return;
|
||||
}
|
||||
|
||||
Converter_Impl::Converter_Impl(int encoding) : m_outputFile(NULL)
|
||||
{
|
||||
|
||||
@ -102,9 +102,9 @@ _UINT32 CTxtXmlFile::txt_LoadFromFile(const std::wstring & sSrcFileName, const s
|
||||
|
||||
Txt2Docx::Converter converter( encoding);
|
||||
converter.read(sSrcFileName);
|
||||
converter.convert();
|
||||
converter.write(pDocxWriter->get_document_writer().m_oContent);
|
||||
}
|
||||
// converter.convert();
|
||||
converter.write(pDocxWriter->get_document_writer().m_oContent);
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
return AVS_FILEUTILS_ERROR_CONVERT;
|
||||
|
||||
Reference in New Issue
Block a user