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
) に置き換えます。これを達成する方法はありますか?
私が考えるオプション:
- どういうわけか、ファイルの内容を文字列または文字配列として渡します (ここで提案されているように)。libharuの関数にはファイル名が必要なため、これは不可能です。実際のファイル コンテンツを必要とする関数はありません。
- リソースの内容を一時ファイルに保存し、一時ファイル名をlibharu関数で使用します。
これに対する他のより簡単な解決策はありますか?ありがとう。
解決:
実際、2 番目のオプションは予想よりも簡単でした。robin.thoni とこの質問による回答により、この非常に単純な解決策が得られました。
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);