QPrinter + QPainter写入无效的PDF文件

问题描述 投票:0回答:1

我只是想用QPrinter + QPainter在PDF文件上画一个矩形。

#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+QPainter,就会出现这样的结果。QPrinter.setOutputFormatQPrinter.setOutputFileName 在纸上正确打印一个矩形。

如何使用QPrinterQPdfWriter + QPainter绘制到PDF文件?

macos qt pdf qpainter qprinter
1个回答
0
投票

我是个傻瓜。我以为PDF是空白的,但事实证明,如果我放大到非常非常远的地方,我可以看到一条微弱的灰线。显然,PDF的分辨率比我的打印机要高得多!我想,如果我把PDF放大到很远的地方,就能看到一条模糊的灰线。

使用 painter.setPen(QPen(QBrush(Qt::red), 100.0)) 如预期的那样,显示出一个清晰的矩形。

© www.soinside.com 2019 - 2024. All rights reserved.