Qt: открытие qrc pdf с помощью библиотеки poppler
У меня возникли некоторые проблемы с функцией отображения PDF с помощью библиотеки poppler. Код ниже - это функция, в которой возникает проблема.
const QString & file - путь к файлу. int page - страница, на которой он должен открываться.
Когда я устанавливаю для файла реальный путь (например, "/Users/User/Documents/xxx.pdf"), открыть его без проблем. Но когда я даю путь к файлу qrc (":/files/xxx.pdf"), он не будет работать. Я хочу использовать его для отображения руководства пользователя, например, в приложении.
Я также попытался сначала сделать из него QFile, открыть его и выполнить readAll, а затем загрузить полученный QByteArray, выполнивPoppler::Document::loadFromData(the qbytearray)
, но это уже ошибки при открытии QFile в режиме ReadOnly.
void class::setPdf(const QString &file, int page)
{
Poppler::Document *doc = Poppler::Document::load(file);
if (!doc) {
QMessageBox msgbox(QMessageBox::Critical, tr("Open Error"), tr("Please check preferences: cannot open:\n") + file,
QMessageBox::Ok, this);
msgbox.exec();
}
else{ /*Code for displaying the pdf, which works fine*/
}
}
Я надеюсь, что вы можете помочь мне,
Привет,
Matt
1 ответ
Я также пытался сначала сделать из него QFile, открыть его и выполнить readAll, затем загрузить QByteArray, полученный с помощью doPoppler::Document::loadFromData(qbytearray), но он уже выдает ошибку при открытии QFile в режиме ReadOnly.
QFile f;
f.setFileName(":/skin/AppIcon16.png");
f.open(QIODevice::ReadOnly);
QByteArray r=f.readAll();
Отлично читает все данные с ресурса, проверил его. Так что я полагаю, вы сделали что-то не так, когда попробовали это. Может быть, ошибки пути, может быть что-то еще...