QPrinter + QPainter записывает неверный файл PDF - PullRequest
0 голосов
/ 22 апреля 2020

Я просто пытаюсь нарисовать прямоугольник в PDF-файл, используя QPrinter + QPainter:

#include <QtWidgets>
#include <QPrinter>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QPrinter printer(QPrinter::HighResolution);
    printer.setOutputFileName("/Users/jason/Desktop/example.pdf");
    printer.setOutputFormat(QPrinter::PdfFormat);

    QPainter painter;
    painter.begin(&printer);
    int width = painter.viewport().width();
    int height = painter.viewport().height();
    painter.setPen(Qt::black);
    painter.drawRect(0.25*width, 0.25*height, 0.5*width, 0.5*height);
    painter.end();
}

Используя MacOS 10.15.4 и Qt 5.15.2, это приводит к пустому / недействительному PDF-файлу. Тот же код без QPrinter.setOutputFormat и QPrinter.setOutputFileName правильно печатает прямоугольник на бумаге.

Как я могу использовать QPrinter / QPdfWriter + QPainter для рисования в файл PDF?

1 Ответ

0 голосов
/ 23 апреля 2020

Я дурак. Я думал, что PDF был пустым, но оказывается, что если я действительно увеличу масштаб, я вижу слабую серую линию. Очевидно, что разрешение PDF намного выше, чем у моего принтера!

Использование painter.setPen(QPen(QBrush(Qt::red), 100.0)) показывает чистый прямоугольник, как и ожидалось.

...