我使用以下代码设置我的 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 mm, 8.26 x 11.69 inches"
基本上,不是使用 QPrinter::A4
从打印机设备获取尺寸,我正在设置一个固定的 QSizeF
基于正确的 A4 毫米尺寸。
它对我有用。
关于c++ - 使用 setPaperSize(QPrinter::A4) QPrinter 破坏 PDF 报告布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40592427/