我使用以下代码设置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);
吗?它是否可以正常工作(与打印机无关)?
我问这个问题是因为我没有其他计算机可以测试它了,而且我无法在计算机上重现该问题。顺便说一句,如果有人知道如何在计算机上重现该问题以测试问题是否得到解决,我将不胜感激。
例:
图像上的黑色边框仅用于显示打印区域的边界。
注意:我正在使用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
。它为我工作。