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

printer_.setPaperSize(QPrinter::A4);


在我的计算机上,它正在按预期方式工作,但是在另一台计算机上,我的PDF报告布局已“损坏”。

搜索原因,发现此问题:
Qt QPrinter setPaperSize does not work properly

就像@Jens所说:“ setPaperSize依赖于从打印机驱动程序接收的信息...”。

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

我可以只将setPaperSize参数从printer_.setPaperSize(QPrinter::A4);更改为printer_.setPaperSize(QSizeF(210, 297), QPrinter::Millimeter);吗?
它是否可以正常工作(与打印机无关)?

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

例:
c++ - 使用setPaperSize(QPrinter::A4)QPrinter破坏了PDF报告布局-LMLPHP

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

注意:我正在使用Qt 5.3.2

最佳答案

我从以下更改了setPaperSize参数:

printer_.setPaperSize(QPrinter::A4);


至:

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


值210和297来自Qt文档:


  “ QPrinter :: A4-0-210 x 297毫米,8.26 x 11.69英寸”


基本上,不是基于打印机的尺寸,而是根据正确的A4毫米尺寸设置固定的QPrinter::A4

它为我工作。

07-27 16:32