2016-06-22 5 views
2

Я работаю над печатью с Qt C++. Но я нашел проблему, что маржа не работает должным образом. Здесь используется конфигурация QPrinter.Поправка 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); 

И маржа результат действительно далеко от края (она должна быть 5 мм), я также пытаюсь напечатать его на реальный принтер. И, кажется, у принтера есть внутренний запас, и поле, которое я устанавливаю на принтер, будет добавлено во внутреннее поле.

В моей проблеме внутренний запас составляет 20 мм. Поэтому, если я устанавливаю маркер принтера на 10 мм, при его печати маржа на бумаге составляет 30 мм.

Есть ли у кого-нибудь опыт? Как сделать маржу?

PS: Я использую Qt 5.5 VC 2013.

+2

Возможно, это ошибка Qt https://bugreports.qt.io/browse/QTBUG-32987 – demonplus

+1

Странно, ошибка в 2013 году и до сих пор не исправлена. – Apin

+0

Есть ли обходной путь для этого? – EJoshuaS

ответ

1

После прочтения немного глубоко в документации. В нем говорится, что QTextDocument добавит 20-миллиметровое поле при печати.

По умолчанию запас 2 см устанавливается вокруг содержимого документа

И мне нужно, чтобы установить размер страницы перед печатью его.