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

Отлично читает все данные с ресурса, проверил его. Так что я полагаю, вы сделали что-то не так, когда попробовали это. Может быть, ошибки пути, может быть что-то еще...

Другие вопросы по тегам