Я использовал следующий код, чтобы установить размер бумаги моего QPrinter объект:
printer_.setPaperSize(QPrinter::A4);
На моем компьютере он работает как положено, но на другом компьютере мой макет отчета в формате PDF «сломан».
Ища причину этого, я нашел эту проблему:
Qt QPrinter setPaperSize не работает должным образом
Как сказал @Jens: «setPaperSize использует информацию, полученную от драйвера принтера …».
Я проверил QPrinter::A4
размер на Документация Qt и его размер соответствует 210 х 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 дюймов»
По сути, вместо того, чтобы получать размер от устройства принтера с помощью QPrinter::A4
Я устанавливаю фиксированный QSizeF
основываясь на правильном A4 миллиметровый размер.
Это сработало для меня.
Других решений пока нет …