问题描述
|
我使用poppler库显示pdf的函数遇到了一些麻烦。下面的代码是发生问题的函数。
const QString&file是文件的路径
int页面是必须打开的页面
当我将文件设置为真实路径时(例如\“ / Users / User / Documents / xxx.pdf \”),打开它没问题。但是,当我给出一个qrc文件的路径(\“:/ files / xxx.pdf \”)时,它将无法正常工作。我想用它来显示应用程序内的用户手册。
我还尝试过先用它制作一个QFile,将其打开并执行readAll,然后通过执行“ 0”来加载接收到的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*/
}
}
我希望你能帮帮我,
问候,
马特
解决方法
我也尝试过先制作QFile
从中打开并执行
readAll,然后加载QByteArray
收到者
正在执行Poppler :: Document :: loadFromData(
qbytearray),但它已经出错
在ReadOnly中打开QFile时
模式。
QFile f;
f.setFileName(\":/skin/AppIcon16.png\");
f.open(QIODevice::ReadOnly);
QByteArray r=f.readAll();
从资源中完美读取所有数据,并进行了检查。所以我建议您在尝试时做错了。可能是路径错误,也许还有其他...