Как использовать ресурс Qt для шрифта ttf в libharu?

Я создаю приложение Qt, которое пишет файл PDF, используя libharu. Шрифт true-type-font, используемый в файле PDF, должен быть встроен в двоичный файл, поэтому он доступен на всех платформах. Для этого я хочу использовать систему ресурсов 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 функция.

Есть ли другие более простые решения для этого? Благодарю.

Решение:

На самом деле второй вариант оказался проще, чем ожидалось. С ответом 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);

0

Решение

Как вы можете видеть здесь Как получить доступ к изображению ресурса с помощью fopen?, нет способа «открыть» файл ресурса Qt с помощью стандартного open / fopen, поэтому вы не сможете создать правильный путь к нему. Вам нужно будет использовать ваш второй вариант. Вы могли бы использовать станд :: tmpnam добиться этого.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]