我有一些文字和一个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