3

PDFファイルのフォームを編集するためにqtバインディングが含まれているlibpopplerを使用しています。

// 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 に答える