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

标签 c++ qt printing qprinter

我使用以下代码设置我的 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);? 它能正常工作吗(独立于打印机)?

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

例子: enter image description here

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

注意:我使用的是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 从打印机设备获取尺寸,我正在设置一个固定的 QSizeF基于正确的 A4 毫米尺寸。

它对我有用。

关于c++ - 使用 setPaperSize(QPrinter::A4) QPrinter 破坏 PDF 报告布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40592427/

相关文章:

c++ - Qt (qml) : Access Bundle file in Qt for Webview Url in ios?

c++ - QDialog 结果值存储在哪里?

c++ - Lubuntu 中的 QT 控制台应用程序

javascript - 如何在用户单击浏览器的打印按钮时打印另一页(或文件)?

javascript - 直接从 php5/javascript web 应用程序打印

c++ - 正确将 statvfs 转换为百分比

c++ - 是否可以从库连接到mysql?

c++ - 如何使用 C++11 或 Boost 获取正则表达式匹配的长度?

c++ - 与数字时钟一起工作

java - 需要将 RAW 打印数据转换为 ps/pdf 或从 Java 打印