我正在创建一个使用 libharu 编写pdf文件的Qt应用程序。 pdf文件中使用的true-type-font应嵌入到二进制文件中,因此可在所有平台上使用。为此,我想使用Qt资源系统。
字体文件应按如下方式使用
const char* fontName = HPDF_LoadTTFontFromFile(doc,"path/to/myfont.ttf",HPDF_TRUE);
documentFont = HPDF_GetFont(doc,fontName,"ISO8859-2");
我希望文件名和路径被资源名称替换(例如:/fonts/myfont.ttf
)。
有没有办法实现这个目标?
我想到的选项:
还有其他更简单的解决方案吗?感谢。
实际上第二种选择比预期的要容易。通过robin.thoni和this question的答案,我获得了这个非常简单的解决方案:
std::string fontFile = std::tmpnam(nullptr);
QFile::copy(":/fonts/myfont.ttf",QString::fromStdString(fontFile));
const char* fontName = HPDF_LoadTTFontFromFile(doc,fontFile.c_str(),HPDF_TRUE);
答案 0 :(得分:0)
正如您在How to access resource image with fopen?看到的那样,没有办法打开'使用标准open / fopen的Qt资源文件,因此您无法为其创建有效路径。您需要使用第二个选项。您可以使用std::tmpnam来实现它。