3

我正在使用带有 qt 绑定的 libpoppler 来编辑 PDF 文件中的表单。

// sample code
Poppler::Document* doc = Poppler::Document::load(filename);
Poppler::Page* page = doc->page(0);
QList<Poppler::FormField *> forms = page->formFields();
for(int j = 0; j < forms.length(); j++) {
    Poppler::FormField * form = forms.at(j);
    // fill it out or whatever...
    ...

但是如何保存对文件所做的更改?我知道 poppler 提供了这种可能性,例如对于 Glib 绑定​​:poppler_document_save()。如何使用 QT 绑定执行此操作?没有Poppler::Document::save()方法或任何东西,我错过了什么?

4

1 回答 1

7

在对Okular 源代码进行了一些挖掘之后,我自己发现了它:必须使用Poppler::PDFConverter该类。下面提供了一个示例方法:

bool saveToFile(const QString &filename, const Poppler::Document* doc) {
    Poppler::PDFConverter *pdfConv = doc->pdfConverter();
    pdfConv->setOutputFileName(filename);
    pdfConv->setPDFOptions(pdfConv->pdfOptions()|Poppler::PDFConverter::WithChanges);
    bool success = pdfConv->convert();
    delete pdfConv;

    return success;
} 
于 2012-07-11T15:39:41.430 回答