mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-10 18:05:41 +08:00
Merge pull request 'Fix write base fonts' (#216) from fix/pdf-standart-fonts into release/v8.3.0
Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/216
This commit is contained in:
@ -1505,10 +1505,13 @@ bool CPdfEditor::IsBase14(const std::wstring& wsFontName, bool& bBold, bool& bIt
|
||||
std::map<std::wstring, std::wstring>::iterator it = m_mFonts.find(wsFontName);
|
||||
if (it != m_mFonts.end())
|
||||
wsFontPath = it->second;
|
||||
std::map<std::wstring, std::wstring> mFonts = pReader->GetFonts();
|
||||
std::map<std::wstring, std::wstring>::iterator it2 = mFonts.find(wsFontName);
|
||||
if (it2 != mFonts.end())
|
||||
wsFontPath = it2->second;
|
||||
if (wsFontPath.empty())
|
||||
{
|
||||
std::map<std::wstring, std::wstring> mFonts = pReader->GetFonts();
|
||||
std::map<std::wstring, std::wstring>::iterator it2 = mFonts.find(wsFontName);
|
||||
if (it2 != mFonts.end())
|
||||
wsFontPath = it2->second;
|
||||
}
|
||||
if (wsFontPath.empty())
|
||||
return false;
|
||||
if (wsFontName == L"Helvetica")
|
||||
|
||||
@ -42,6 +42,7 @@
|
||||
#include "OnlineOfficeBinToPdf.h"
|
||||
|
||||
#include "SrcWriter/Document.h"
|
||||
#include "Resources/BaseFonts.h"
|
||||
|
||||
#else
|
||||
class CPdfEditor
|
||||
@ -908,6 +909,28 @@ HRESULT CPdfFile::put_FontName(const std::wstring& wsName)
|
||||
lStyle |= 2;
|
||||
put_FontStyle(lStyle);
|
||||
}
|
||||
|
||||
NSFonts::IFontsMemoryStorage* pMemoryStorage = NSFonts::NSApplicationFontStream::GetGlobalMemoryStorage();
|
||||
if (wsFontPath == sSub && (!pMemoryStorage || !pMemoryStorage->Get(wsFontPath)))
|
||||
{
|
||||
const BYTE* pData14 = NULL;
|
||||
unsigned int nSize14 = 0;
|
||||
std::wstring wsTempFileName = m_pInternal->wsTempFolder + L"/" + wsFontPath + L".base";
|
||||
if (NSFile::CFileBinary::Exists(wsTempFileName))
|
||||
wsFontPath = wsTempFileName;
|
||||
else if (PdfReader::GetBaseFont(sSub, pData14, nSize14))
|
||||
{
|
||||
NSFile::CFileBinary oFile;
|
||||
if (oFile.CreateFileW(wsTempFileName))
|
||||
{
|
||||
oFile.WriteFile((BYTE*)pData14, nSize14);
|
||||
wsFontPath = wsTempFileName;
|
||||
}
|
||||
else if (!wsTempFileName.empty())
|
||||
NSFile::CFileBinary::Remove(wsTempFileName);
|
||||
oFile.CloseFile();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
wsFont = sSub;
|
||||
|
||||
Reference in New Issue
Block a user