使用 setPaperSize(QPrinter::A4) QPrinter 破坏 PDF 报告布局

PDF report layout broken using setPaperSize(QPrinter::A4) QPrinter

我使用以下代码设置 QPrinter 对象的纸张大小:

printer_.setPaperSize(QPrinter::A4);

在我的电脑上,它按预期工作,但在另一台电脑上,我的 PDF 报告布局是 "broken"。

寻找原因,我发现了这个问题: Qt QPrinter setPaperSize does not work properly

正如@Jens所说:"setPaperSize relies on information received from the printer driver...".

我在 Qt 文档 上检查了 QPrinter::A4 大小,它的大小对应于 210 x 297 mm.

我可以将 setPaperSize 参数从 printer_.setPaperSize(QPrinter::A4); 更改为 printer_.setPaperSize(QSizeF(210, 297), QPrinter::Millimeter); 吗? 它能正常工作吗(独立于打印机)?

我问这个是因为我没有另一台电脑可以测试它,而且我无法在我的电脑上重现这个问题。顺便说一句,如果有人知道如何在我的计算机上重现该问题以测试问题是否已解决,我将不胜感激。

示例:

图像上的黑色边框仅用于显示打印区域的边界。

注意:我使用的是Qt 5.3.2

我更改了 setPaperSize 参数:

printer_.setPaperSize(QPrinter::A4);

至:

printer_.setPaperSize(QSizeF(210, 297), QPrinter::Millimeter);

210297 来自 Qt 文档:

"QPrinter::A4 - 0 - 210 x 297 mm, 8.26 x 11.69 inches"

基本上,我不是使用 QPrinter::A4 从打印机设备获取尺寸,而是根据正确的 A4 毫米尺寸设置固定的 QSizeF .

对我有用。