0

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);
4

1 に答える 1

0

ここでわかるように、fopen でリソース イメージにアクセスする方法は? 、標準の open/fopen を使用して Qt リソース ファイルを「開く」方法がないため、有効なパスを作成することはできません。2 番目のオプションを使用する必要があります。std::tmpnamを使用してそれを実現できます。

于 2016-09-07T01:04:11.610 に答える