7

Qt5.2.1 のバグ:

唯一の問題は で修正されましQPrintPreviewDialogたが、印刷物を紙に印刷すると、まだ問題が発生します。

ページは完璧にQPrintPreviewDialog機能しますが、2 ページ目以降の「紙」(紙に印刷されたもの) (つまり、最初のページを除くすべてのページでバグが発生します) では、「テキスト」と「画像」(背景以外) が消えます (明らかに障害のみが発生します)。インライン要素を使用)。

参照: https://bugreports.qt.io/browse/QTBUG-37240 (テスト ケースの添付ファイルを参照)


Qt5.0.1、Qt5.0.2、Qt5.1.0 のバグ

小さなフォントと画像を含むQWebViewの印刷物の最初のページ。

どうやら問題はインライン要素 (テキストと画像) でのみ発生します。

注:このエラーは、Windows XP、Windows 7、Windows 7 x64、Mac OS X 10.8.3 で発生します。

[編集]

ソース html: http://jsfiddle.net/bdm6Y/2/

フレームの内容: http://jsfiddle.net/bdm6Y/2/show/

エラー印刷

ソース:

QPrinter p;
p.setPaperSize(QPrinter::A4);
p.setFullPage(true);
p.setResolution(300);
p.setOrientation(QPrinter::Portrait);

QPrintPreviewDialog preview(&p);
preview.setWindowTitle(ui->myWebView->page()->mainFrame()->title());
connect(&preview, SIGNAL(paintRequested(QPrinter*)), this, SLOT(printPreview(QPrinter*)));
preview.exec();

...

void printPreview(QPrinter *printer) {
    ui->myWebView->print(printer);
}

これがバグなのか、私が間違ったことなのかわからないのですが、何が原因でしょうか?

ありがとう!

[編集]

QT バグ レポート:

https://bugreports.qt.io/browse/QTBUG-30621

4

1 に答える 1

0

Qt5.3で修正された問題

Qt 5.3 印刷サポート

  • プラットフォーム印刷デバイス ハードウェアを抽象化する新しい QPA クラス QPlatformPrintDevice、Windows、Mac、および Linux 用の新しい実装。
  • QPrinterInfo は、印刷デバイス ハードウェアの詳細を提供します
  • QPrinter は QPageSize と QPageLayout を使用してページ レイアウト処理を改善します
  • QPrinter では、ほとんどの機能の動作がすべてのプラットフォームで標準化されています (詳細は以下を参照)。
  • Mac では、ペイントされた各ページを異なる方向に設定できるようになり、部単位でコピーおよびドキュメント名を設定できるようになりました。
  • Mac と Windows が Document Creator と Duplex Mode の設定をサポートするようになりました
  • Mac および Linux では、Windows ページ ID (DMPAPER 値) の使用がサポートされるようになりました
  • Linux では CUPS 1.4 が必要になりました (RHEL 5 はサポートされなくなりました)。

Windows でテストされたコード:

QPrinter print(QPrinter::HighResolution);
print.setPageMargins(qreal(1), qreal(1), qreal(1), qreal(1), QPrinter::Millimeter);
print.setPaperSize(QPagedPaintDevice::A4);

QPrintPreviewDialog pd(&print, mwindow, Qt::Window);
QObject::connect(&pd, SIGNAL(paintRequested(QPrinter *)), this, SLOT(preview(QPrinter *)));
if(pd.exec() == QPrintPreviewDialog::Accepted) {
    /*something*/
}

...

void MainWindow::preview(QPrinter* p) {
    mframe->print(p);//mframe is an QWebFrame
}
于 2014-06-04T17:04:13.843 に答える