Allow external font-path configuration from pdfium_test.
[pdfium.git] / fpdfsdk / src / fpdfview.cpp
index a419749..2700aeb 100644 (file)
@@ -91,9 +91,14 @@ CFontMapper* g_pFontMapper = NULL;
 #endif  // #if _FX_OS_ == _FX_LINUX_EMBEDDED_
 
 DLLEXPORT void STDCALL FPDF_InitLibrary() {
+  FPDF_InitLibraryWithConfig(nullptr);
+}
+
+DLLEXPORT void STDCALL FPDF_InitLibraryWithConfig(
+    const FPDF_LIBRARY_CONFIG* cfg) {
   g_pCodecModule = new CCodec_ModuleMgr();
 
-  CFX_GEModule::Create();
+  CFX_GEModule::Create(cfg ? cfg->m_pUserFontPaths : nullptr);
   CFX_GEModule::Get()->SetCodecModule(g_pCodecModule);
 
   CPDF_ModuleMgr::Create();
@@ -157,10 +162,17 @@ DLLEXPORT void STDCALL FPDF_SetSandBoxPolicy(FPDF_DWORD policy,
 
 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path,
                                                   FPDF_BYTESTRING password) {
+  // NOTE: the creation of the file needs to be by the embedder on the
+  // other side of this API.
+  IFX_FileRead* pFileAccess = FX_CreateFileRead((const FX_CHAR*)file_path);
+  if (!pFileAccess) {
+    return nullptr;
+  }
+
   CPDF_Parser* pParser = new CPDF_Parser;
   pParser->SetPassword(password);
 
-  FX_DWORD err_code = pParser->StartParse((const FX_CHAR*)file_path);
+  FX_DWORD err_code = pParser->StartParse(pFileAccess);
   if (err_code) {
     delete pParser;
     ProcessParseError(err_code);