mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-10 18:05:41 +08:00
create IsNeedCMap and three types of getting CMap
This commit is contained in:
44
PdfFile/Resources/CMapMemory/CMapSerialize.cpp
Normal file
44
PdfFile/Resources/CMapMemory/CMapSerialize.cpp
Normal file
@ -0,0 +1,44 @@
|
||||
#include "../../../DesktopEditor/graphics/pro/js/wasm/src/serialize.h"
|
||||
#include "../../../DesktopEditor/common/File.h"
|
||||
#include "../../../DesktopEditor/common/Directory.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
int main()
|
||||
{
|
||||
std::vector<std::wstring> arrFiles = NSDirectory::GetFiles(NSFile::GetProcessDirectory() + L"/../../CMap/CMap");
|
||||
|
||||
NSWasm::CData oRes;
|
||||
for (const std::wstring& sFile : arrFiles)
|
||||
{
|
||||
BYTE* pData = NULL;
|
||||
DWORD nSize;
|
||||
NSFile::CFileBinary oFile;
|
||||
if (oFile.ReadAllBytes(sFile, &pData, nSize))
|
||||
{
|
||||
std::wstring sFileName = NSFile::GetFileName(sFile);
|
||||
BYTE* pStr = NULL;
|
||||
LONG nStrSize;
|
||||
NSFile::CUtf8Converter::GetUtf8StringFromUnicode(sFileName.c_str(), (LONG)sFileName.length(), pStr, nStrSize);
|
||||
oRes.WriteString(pStr, nStrSize);
|
||||
RELEASEARRAYOBJECTS(pStr);
|
||||
|
||||
oRes.AddInt(nSize);
|
||||
oRes.Write(pData, nSize);
|
||||
|
||||
oFile.CloseFile();
|
||||
}
|
||||
|
||||
RELEASEARRAYOBJECTS(pData);
|
||||
}
|
||||
|
||||
NSFile::CFileBinary oFile;
|
||||
if (oFile.CreateFileW(NSFile::GetProcessDirectory() + L"/../CMapData"))
|
||||
{
|
||||
oFile.WriteFile(oRes.GetBuffer(), oRes.GetSize());
|
||||
oFile.CloseFile();
|
||||
}
|
||||
|
||||
oRes.Clear();
|
||||
return 0;
|
||||
}
|
||||
19
PdfFile/Resources/CMapMemory/CMapSerialize.pro
Normal file
19
PdfFile/Resources/CMapMemory/CMapSerialize.pro
Normal file
@ -0,0 +1,19 @@
|
||||
QT -= core
|
||||
QT -= gui
|
||||
|
||||
TARGET = CMapSerialize
|
||||
TEMPLATE = app
|
||||
|
||||
CONFIG += console
|
||||
CONFIG -= app_bundle
|
||||
|
||||
CORE_ROOT_DIR = $$PWD/../../..
|
||||
PWD_ROOT_DIR = $$PWD
|
||||
include($$CORE_ROOT_DIR/Common/base.pri)
|
||||
include($$CORE_ROOT_DIR/Common/3dParty/icu/icu.pri)
|
||||
|
||||
ADD_DEPENDENCY(UnicodeConverter, kernel)
|
||||
|
||||
SOURCES += CMapSerialize.cpp
|
||||
|
||||
DESTDIR = $$PWD/build
|
||||
@ -5,6 +5,7 @@ import codecs
|
||||
|
||||
base.configure_common_apps()
|
||||
|
||||
# .cidToUnicode
|
||||
cmap_directory = "./../CMap/"
|
||||
cidToUnicode_names = ["Adobe-GB1", "Adobe-CNS1", "Adobe-Korea1", "Adobe-KR", "Adobe-Japan1"]
|
||||
cidToUnicode_values = {}
|
||||
@ -17,34 +18,6 @@ for item in cidToUnicode_names:
|
||||
cidToUnicode_values[item]["code"] = "const unsigned int c_arr" + item.replace("-", "_") + "[] = {" + ",".join(map(str, arr_int_cidToUnicode)) + "};"
|
||||
cidToUnicode_values[item]["len"] = str(len(arr_int_cidToUnicode))
|
||||
|
||||
cmap_directory = "./../CMap/CMap/"
|
||||
|
||||
## GB1
|
||||
#cmap_names = ["GB-EUC-H", "GB-EUC-V", "GB-H", "GB-V", "GBpc-EUC-H", "GBpc-EUC-V", "GBK-EUC-H", "GBK-EUC-V", "GBKp-EUC-H", "GBKp-EUC-V", "GBK2K-H", "GBK2K-V", "GBT-H", "GBT-V", "GBTpc-EUC-H", "GBTpc-EUC-V", "UniGB-UCS2-H", "UniGB-UCS2-V", "UniGB-UTF8-H", "UniGB-UTF8-V", "UniGB-UTF16-H", "UniGB-UTF16-V", "UniGB-UTF32-H", "UniGB-UTF32-V"]
|
||||
## CNS1
|
||||
#cmap_names += ["B5pc-H", "B5pc-V", "B5-H", "B5-V", "HKscs-B5-H", "HKscs-B5-V", "HKdla-B5-H", "HKdla-B5-V", "HKdlb-B5-H", "HKdlb-B5-V", "HKgccs-B5-H", "HKgccs-B5-V", "HKm314-B5-H", "HKm314-B5-V", "HKm471-B5-H", "HKm471-B5-V", "ETen-B5-H", "ETen-B5-V", "ETenms-B5-H", "ETenms-B5-V", "ETHK-B5-H", "ETHK-B5-V", "CNS-EUC-H", "CNS-EUC-V", "CNS1-H", "CNS1-V", "CNS2-H", "CNS2-V", "UniCNS-UCS2-H", "UniCNS-UCS2-V", "UniCNS-UTF8-H", "UniCNS-UTF8-V", "UniCNS-UTF16-H", "UniCNS-UTF16-V", "UniCNS-UTF32-H", "UniCNS-UTF32-V"]
|
||||
## Japan1
|
||||
#cmap_names += ["78-EUC-H", "78-EUC-V", "78-H", "78-V", "78-RKSJ-H", "78-RKSJ-V", "78ms-RKSJ-H", "78ms-RKSJ-V","83pv-RKSJ-H", "90ms-RKSJ-H", "90ms-RKSJ-V", "90msp-RKSJ-H", "90msp-RKSJ-V", "90pv-RKSJ-H", "90pv-RKSJ-V", "Add-H", "Add-V", "Add-RKSJ-H", "Add-RKSJ-V", "EUC-H", "EUC-V", "Ext-RKSJ-H", "Ext-RKSJ-V", "H", "V", "NWP-H", "NWP-V", "RKSJ-H", "RKSJ-V", "UniJIS-UCS2-H", "UniJIS-UCS2-V", "UniJIS-UCS2-HW-H", "UniJIS-UCS2-HW-V", "UniJIS-UTF8-H", "UniJIS-UTF8-V", "UniJIS-UTF16-H", "UniJIS-UTF16-V", "UniJIS-UTF32-H", "UniJIS-UTF32-V", "UniJIS2004-UTF8-H", "UniJIS2004-UTF8-V", "UniJIS2004-UTF16-H", "UniJIS2004-UTF16-V", "UniJIS2004-UTF32-H", "UniJIS2004-UTF32-V", "UniJISPro-UCS2-V", "UniJISPro-UCS2-HW-V", "UniJISPro-UTF8-V", "UniJISX0213-UTF32-H", "UniJISX0213-UTF32-V", "UniJISX02132004-UTF32-H", "UniJISX02132004-UTF32-V", "WP-Symbol", "Hankaku", "Hiragana", "Katakana", "Roman"]
|
||||
## Korea1
|
||||
#cmap_names += ["KSC-EUC-H", "KSC-EUC-V", "KSC-H", "KSC-V", "KSC-Johab-H", "KSC-Johab-V", "KSCms-UHC-H", "KSCms-UHC-V", "KSCms-UHC-HW-H", "KSCms-UHC-HW-V", "KSCpc-EUC-H", "KSCpc-EUC-V", "UniKS-UCS2-H", "UniKS-UCS2-V", "UniKS-UTF8-H", "UniKS-UTF8-V", "UniKS-UTF16-H", "UniKS-UTF16-V", "UniKS-UTF32-H", "UniKS-UTF32-V"]
|
||||
## KR
|
||||
#cmap_names += ["UniAKR-UTF8-H", "UniAKR-UTF16-H", "UniAKR-UTF32-H"]
|
||||
#cmap_values = {}
|
||||
#
|
||||
#for item in cmap_names:
|
||||
# cmap_values[item] = {}
|
||||
# cmap_content = base.readFile(cmap_directory + item)
|
||||
# arr_str_cmap = cmap_content.splitlines()
|
||||
# arr_wc_str_cmap = []
|
||||
# for i in arr_str_cmap:
|
||||
# if i and not i.startswith("%"):
|
||||
# arr_wc_str_cmap.append(i + '\n')
|
||||
# arr_int_cmap = []
|
||||
# for i in arr_wc_str_cmap:
|
||||
# arr_int_cmap += list(map(ord, i))
|
||||
# cmap_values[item]["code"] = "const char c_arr" + item.replace("-", "_") + "[] = {" + ",".join(map(str, arr_int_cmap)) + "};"
|
||||
# cmap_values[item]["len"] = str(len(arr_int_cmap))
|
||||
|
||||
content_cpp_file = []
|
||||
content_cpp_file.append("#include <map>")
|
||||
content_cpp_file.append("#include \"./cmap_memory.h\"")
|
||||
@ -61,15 +34,6 @@ content_cpp_file.append(" const unsigned int* Data;")
|
||||
content_cpp_file.append(" unsigned int Size;")
|
||||
content_cpp_file.append("};")
|
||||
|
||||
#for item in cmap_names:
|
||||
# content_cpp_file.append(cmap_values[item]["code"])
|
||||
#
|
||||
#content_cpp_file.append("struct TCMapData")
|
||||
#content_cpp_file.append("{")
|
||||
#content_cpp_file.append(" const char* Data;")
|
||||
#content_cpp_file.append(" unsigned int Size;")
|
||||
#content_cpp_file.append("};")
|
||||
|
||||
content_cpp_file.append("")
|
||||
|
||||
content_cpp_file.append("std::map<std::string, TCidToUnicodeData> g_memory_cid_to_unicode;")
|
||||
@ -93,25 +57,4 @@ content_cpp_file.append(" return false;")
|
||||
content_cpp_file.append("}")
|
||||
content_cpp_file.append("")
|
||||
|
||||
#content_cpp_file.append("std::map<std::string, TCMapData> g_memory_cmap;")
|
||||
#content_cpp_file.append("bool PdfReader::GetMemoryCMap(const char* name, const char*& data, unsigned int& size)")
|
||||
#content_cpp_file.append("{")
|
||||
#content_cpp_file.append(" if (g_memory_cmap.empty())")
|
||||
#content_cpp_file.append(" {")
|
||||
#for item in cmap_names:
|
||||
# content_cpp_file.append(" g_memory_cmap.insert(std::pair<std::string, TCMapData>(\"" + item + "\", { c_arr" + item.replace("-", "_") + ", " + cmap_values[item]["len"] + " }));")
|
||||
#content_cpp_file.append(" }")
|
||||
#content_cpp_file.append(" std::map<std::string, TCMapData>::const_iterator iter = g_memory_cmap.find(name);")
|
||||
#content_cpp_file.append(" if (iter != g_memory_cmap.end())")
|
||||
#content_cpp_file.append(" {")
|
||||
#content_cpp_file.append(" data = iter->second.Data;")
|
||||
#content_cpp_file.append(" size = iter->second.Size;")
|
||||
#content_cpp_file.append(" return true;")
|
||||
#content_cpp_file.append(" }")
|
||||
#content_cpp_file.append(" data = NULL;")
|
||||
#content_cpp_file.append(" size = 0;")
|
||||
#content_cpp_file.append(" return false;")
|
||||
#content_cpp_file.append("}")
|
||||
#content_cpp_file.append("")
|
||||
|
||||
base.writeFile("./cmap_memory.cpp", "\n".join(content_cpp_file))
|
||||
|
||||
Reference in New Issue
Block a user