我正在尝试在Qt中运行一些图像打印程序。尝试打印到一台已有ppd文件的自定义打印机上。基于设备信息进行计算,以创建要发送到打印机的图像。
查看打印机属性时,我发现
在Windows中,一切正常 - 但在Linux中,计算出的图像信息变得非常大,导致我的文件爆炸...浏览所有数据后,我发现在Linux中,
所以我把它归咎于QPrinter :: PrinterMode
数字在Linux中的分辨率是错误的,但在Windows中是正确的。
尝试使用 this->setResolution(300) 后,this.resolution() 变为了 300,但 physicalDpiX 和 Y 仍显示为 1200。 QPrinter::supportedResolutions () 似乎表明情况无望...
如何使我的打印机看到打印机属性中显示的分辨率?
难道唯一的希望是从 cups 中提取一些方法吗?我尝试了...我不知道如何使用我找到的唯一一条信息:cups 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,但 physicalDpiX 和 Y 仍显示为 1200。 QPrinter::supportedResolutions () 似乎表明情况无望...
如何使我的打印机看到打印机属性中显示的分辨率?
难道唯一的希望是从 cups 中提取一些方法吗?我尝试了...我不知道如何使用我找到的唯一一条信息:cups Resolution。