Qtを利用して、下記のようなプログラムを作成しました。
void MainWindow::on_pushButton_clicked() { QPrintDialog dlg(this); if (dlg.exec() == QDialog::Accepted) { QPrinter *printer = dlg.printer(); printer->setPaperSize(QPrinter::A4); printer->setOrientation(QPrinter::Portrait); printer->setPageMargins(0, 0, 0, 0, QPrinter::Millimeter); printer->setResolution(254); QPainter painter(printer); painter.setPen(QPen(Qt::black, 20)); painter.drawEllipse(0, 0, 2100, 2970); } }
これは、A4サイズの紙いっぱいに丸を印刷するプログラムです。Windows上で、MSVC2010を使用して開発しました。
これを実行すると、Qt4.8.5とQt5.2.1では、用紙の中央に丸が印刷されるのですが、Qt5.3.0では、右下方向に10mm程度ずれて印刷されてしまいます。
※周囲に余白がありますが、これはプリンタの印刷限界で、縁なし印刷ができないためであり、マージンではありません。
プリンタは、Canon LBP-1310、RICOH C230L、Brother MFC-675CDで、どれも同じ現象でした。ただし、PDF出力用の仮想プリンタドライバであるAdobe Acrobat DistillerとフリーのCubePDFでは、正常なPDFファイルが作成されました。
この症状の解決策をご存じの方はいらっしゃらないでしょうか?