Макет отчета в формате PDF нарушен с помощью setPaperSize (QPrinter :: A4) QPrinter

Я использовал следующий код, чтобы установить размер бумаги моего 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

0

Решение

Я изменил 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 миллиметровый размер.

Это сработало для меня.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]