QPrinter边距不按预期工作。

3

我正在使用Qt C++进行打印操作,但发现边距无法按预期工作。以下是我使用的QPrinter配置:

QPrinter *pr = new QPrinter(QPrinterInfo::printerInfo("Canon iP2700 series"));
pr->setPageSize(QPrinter::A4);
pr->setFullPage(true);
pr->setPageMargins(5, 5, 5, 5, QPrinter::Millimeter);
QTextDocument *d = new QTextDocument(this);
d->setHtml("<i>Try printing from QT</i>");
d->print(pr);

结果边距与边缘相差很远(应为5mm),我也尝试在真实打印机上打印。看起来打印机有内部边距,我设置给打印机的边距会被添加到内部边距中。
在我的问题中,内部边距为20mm。因此,如果我将打印机边距设置为10mm,则在打印时,纸张上的边距为30mm。
有没有人有这方面的经验?如何使边距起作用?
PS:我正在使用Qt 5.5 VC 2013。

2
可能是这个Qt的bug https://bugreports.qt.io/browse/QTBUG-32987 - demonplus
1
很奇怪,这个漏洞在2013年就出现了,但至今仍未修复。 - Apin
有没有解决这个问题的方法? - EJoshuaS - Stand with Ukraine
1个回答

3

在仔细阅读文档后,发现QTextDocument在打印时会添加20毫米的边距。

默认情况下,文档内容周围设置了2厘米的边距。

在打印之前,需要设置页面大小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接