Qt:用poppler库打开qrc pdf

时间:2011-06-01 08:38:48

标签: qt poppler

我在使用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*/
    }
}

我希望你能帮助我,

问候,

马特

1 个答案:

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

完美地从资源中读取所有数据,检查它。所以我建议你在尝试时做错了。也许路径错误,也许还有别的......