0

ユーザーが動的に作成する多数のオブジェクトに対して印刷するドキュメントを生成する必要があり、これらのドキュメントを印刷したいと考えています。私は次のコードを書きました (generateDocument() はドキュメントへの参照を取得して HTML コードを追加します):

QPrinter printer;
QPrintDialog popup(&printer);
if (popup.exec() == QDialog::Accepted)
{
    for (int i = 0; i < _quiz->getSerieCount(); i++)
    {
        QTextDocument doc;
        generateDocument(doc, _quiz->getSerie(i));
        doc.print(&printer);
    }
}

PDF に印刷する場合、Linux と Windows では動作が異なります。Linux では、最後に生成されたドキュメントが印刷され、Windows では、generateDocument() 呼び出しごとに新しい PDF を選択するように求められます。

これを別の方法で行う必要がありますか?

4

1 に答える 1

1

シリーズごとに改ページを追加してから、ドキュメントを印刷できます。
次の例で試してください

QTextDocument doc;
QTextCursor cursor(&doc);

for (int i = 0; i < _quiz->getSerieCount(); i++)
{
    if(i!=0) \\ dont add page break for the first document
    {
        QTextBlockFormat blockFormat;
        blockFormat.setPageBreakPolicy(QTextFormat::PageBreak_AlwaysAfter);
        cursor.insertBlock(blockFormat);
    }

    // < append _quiz->getSerie(i) contents in the document >    
}

doc.print(&printer);

コードをテストしていませんが、問題なく同様に使用していたため、問題なく Windows で動作するはずです。Linux マシンでの動作についてはコメントできません。必要に応じて、より適切に変更できます。
お役に立てれば。

于 2014-06-05T15:50:06.913 に答える