我在使用poppler库显示pdf的功能方面遇到了一些麻烦。下面的代码是出现问题的函数。
const QString& file是文件的路径 int page是必须打开的页面
当我将文件设置为真实路径(例如“/Users/User/Documents/xxx.pdf”)时,打开它是没有问题的。但是当我给qrc文件(“:/ files/xxx.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*/
}
}
我希望你能帮助我,
问候,
马特
答案 0 :(得分:1)
我也尝试过制作QFile 在它之外,打开它并做 readAll,然后加载QByteArray 收到的 doingPoppler ::文档:: loadFromData(中 qbytearray),但它已经错了 在ReadOnly中打开QFile时 模式。
QFile f;
f.setFileName(":/skin/AppIcon16.png");
f.open(QIODevice::ReadOnly);
QByteArray r=f.readAll();
完美地从资源中读取所有数据,检查它。所以我建议你在尝试时做错了。也许路径错误,也许还有别的......