打印png是像素化的

时间:2016-11-24 08:03:45

标签: printing qpainter qprinter

我有一些文字和一个R.png文件。 这些我想要打印到PDF文件和“真正的”打印机。

我使用以下代码执行此操作:

draw(QPainter *Painter)
{   
R_img = QImage("c:/R.png"); 
Painter->drawImage(0, 0, R_img.scaled(100, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation));
Painter->drawEllipse(QRect(2, 60, 20, 10));

QFont font = Painter->font();
font.setPixelSize(10);
Painter->setFont(font);
Painter->drawText(2, 100,"my Text");
}

...
// saving as *.pdf
QPrinter pdfprinter;
pdfprinter.setOutputFileName("c:/test.pdf");
QPainter pdfPainter(&pdfprinter);
draw(&pdfPainter);

// printing to "real" printer
QPrinter printer;
printer.setPrinterName("FreePDF");

QPainter printPainter(&printer);
draw(&printPainter);
...

除了像素化的R.png文件外,它的工作正常。

我试图通过在draw方法中添加以下行来解决问题:

R_img.setDevicePixelRatio(5);
Painter->drawImage(0, 0, R_img.scaled(500, 500, Qt::KeepAspectRatio, Qt::SmoothTransformation));

之后创建的pdf看起来很好,但打印的文件仍然是像素化的。请查看附图“使用setDevicePixelRatio打印pdf”和“使用setDevicePixelRatio创建pdf”。

有人能告诉我一些我在这里做错了吗?

我尝试通过更改打印机驱动程序中的分辨率来解决该问题,但这不起作用。对我来说奇怪的是,Elipse在每种情况下看起来都很好。

不幸的是,附加的R.png只是一个展示我的问题的例子。它不能仅仅通过绘制文本来替换。

先谢谢你的帮助!

printed pdf with setDevicePixelRatio created pdf with setDevicePixelRatio

0 个答案:

没有答案