【发布时间】:2014-12-06 02:44:06
【问题描述】:
我正在尝试让一些图像打印程序在 Qt 中工作。尝试打印到具有 ppd 的自定义打印机。有基于设备信息的计算,以创建要发送到打印机的图像。
查看打印机属性时,我看到Resolution 是300 dpi x 300 dpi。
在windows中,一切正常——但在Linux中,计算出来的图像信息变得非常大,让我的文件爆炸了……翻阅我发现在Linux中的所有数据,physicalDpiX和physicalDpiY(用于代码计算)是 1200 而不是 300。
所以我把它归咎于QPrinter::PrinterMode
QPrinter::HighResolution 2 在 Windows 上,将打印机分辨率设置为 为正在使用的打印机定义的。对于 PostScript 打印,设置 PostScript 驱动程序的分辨率为 1200 dpi。
我更改了我的构造函数来处理它 - 以防万一默认设置错误......它没有工作:
Printer::Printer(const QPrinterInfo& printerInfo, MainWindow* pWnd) :
#if defined(Q_OS_WIN32) || defined (Q_MAC_OSX)
QPrinter(QPrinter::HighResolution)
#else
QPrinter(QPrinter::ScreenResolution)
#endif
{
qDebug()<<"printer resolution physicalDpiX="<< this->physicalDpiX()<<", physicalDpiY="<<this->physicalDpiY();
// prints 1200 for each in Linux, 300 in windows
qDebug()<<"printer resolution="<< this->resolution();
// prints 96 in Linux, 300 in windows
// printer properties (like from system-config-printer) show 300
// printerInfo.printerName() and printerInfo.defaultPrinter().printerName() show my printer
}
这些数字在 Linux 中的分辨率是错误的,但在 Windows 中是正确的
试过
this->setResolution(300);
它使 this.resolution() 变为 300,但物理 DpiX 和 Y 仍显示为 1200。
QPrinter::supportedResolutions ()好像说这个案子没救了……
如何让我的打印机看到打印机属性中显示的分辨率?
从杯子中提取一些方法的唯一希望是什么?我试过了......我不明白如何使用我找到的唯一一条信息:cups Resolution
【问题讨论】:
标签: c++ linux qt printing resolution