我使用带有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()
方法或任何东西,我缺少什么?
在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;
}