页面上的打印错误(qtWebkit)

时间:2013-05-31 20:52:05

标签: qt qwebview qwebkit qprinter

Qt5.2.1中的错误:

唯一的问题已在QPrintPreviewDialog中得到纠正,但当打印件印在纸上时,故障仍然存在。

QPrintPreviewDialog页面工作完美,但在第二页上的“纸张”(用纸打印)(换句话说,除第一页以外的所有页面都出现BUG)“文本”和“图像”(非背景) )消失(显然故障只发生在内联元素中)。

请参阅: https://bugreports.qt.io/browse/QTBUG-37240(请参阅测试用例的附件)


Qt5.0.1,Qt5.0.2和Qt5.1.0中的错误

使用小字体和图片打印 QWebView 的第一页。

显然问题只发生在内联元素(文本和图像)上。

  

注意: Windows XP,Windows 7,Window 7 x64,Mac OS X 10.8.3中出现错误

[编辑]

Source-html:http://jsfiddle.net/bdm6Y/2/

框架内容:http://jsfiddle.net/bdm6Y/2/show/

ErrorPrint

来源:

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

1 个答案:

答案 0 :(得分:0)

Qt5.3修复了问题

Qt 5.3打印支持

  • 新的QPA类QPlatformPrintDevice,用于抽象平台打印设备硬件,Windows,Mac和Linux的新实现。
  • QPrinterInfo提供有关打印设备硬件的更多详细信息
  • QPrinter使用QPageSize和QPageLayout来改善页面布局处理
  • QPrinter已经在所有平台上标准化了大多数功能的行为(详见下文)
  • Mac现在可以让每个绘制的页面具有不同的方向,并可以设置整理副本和文档名称。
  • Mac和Windows现在支持设置文档创建器和双工模式
  • 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
}