我用poppler库显示pdf的函数有点麻烦。下面的代码是发生问题的函数。
const QString&file是文件的路径int页面是必须打开的页面
当我将文件设置为真实路径(例如"/Users/User/Documents/xxx.pdf")时,打开它是没有问题的。但当我将路径设置为qrc文件(":/files/xxxx.pdf"),它就不起作用了。我想用它来显示用户手册,例如,在应用程序中。
我也尝试过先用它制作一个QFile,打开它并执行readAll,然后加载通过执行Poppler::Document::loadFromData(the qbytearray)
接收到的QByteArray,但在ReadOnly模式下打开QFile时已经出错了。
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
我也试过先制作一个QFile走出去,打开它然后做readAll,然后加载QByteArray接收者doingPoppler::Document::loadFromData(qbyterarray),但它已经出错在ReadOnly中打开QFile时模式
QFile f;
f.setFileName(":/skin/AppIcon16.png");
f.open(QIODevice::ReadOnly);
QByteArray r=f.readAll();
完美地读取了资源中的所有数据,已经检查过了。所以我建议你在尝试时做错了什么。也许是路径错误,也许是其他原因。。。