Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows上用Qt打印:虚线导致大文件_Windows_Qt_Printing_Pdf Generation - Fatal编程技术网

在Windows上用Qt打印:虚线导致大文件

在Windows上用Qt打印:虚线导致大文件,windows,qt,printing,pdf-generation,Windows,Qt,Printing,Pdf Generation,从Qt应用程序(Qt 4.7.1)中,我正在打印一个图表,如下所示: QPrinter是默认构造的:QPrinter打印机 启用彩色打印:printer.setColorMode(QPrinter::Color) 现在,用户可以选择打印机:QPrintDialog printDialog(&Printer,this) printer.setFullPage(真) 使用打印机初始化油漆工:QPainter painter(&printer) 然后,绘制一个复杂的图表。我可以把问题缩小到一种对象

从Qt应用程序(Qt 4.7.1)中,我正在打印一个图表,如下所示:

  • QPrinter是默认构造的:
    QPrinter打印机
  • 启用彩色打印:
    printer.setColorMode(QPrinter::Color)
  • 现在,用户可以选择打印机:
    QPrintDialog printDialog(&Printer,this)
  • printer.setFullPage(真)
  • 使用打印机初始化油漆工:
    QPainter painter(&printer)
然后,绘制一个复杂的图表。我可以把问题缩小到一种对象:虚线。它们的创建如下所示:

  • 创建一个QPen
  • 设置了笔宽和笔样式
  • 然后用这支笔画出许多线(横跨页面的整个宽度)
对于实线(Qt::SolidLine),一切正常(<100kbpdf大小)。但对于虚线(Qt::DotLine),使用A0和600 dpi打印到PDFCreator时,PDF的大小为60 MB。对于较低的分辨率,文件大小也会变小

更新:我还尝试了HP绘图仪的驱动程序,已重定向到文件。这个文件有130 MB,所以问题更严重

在Linux(KDE)上,PDF的大小不超过50KB


很明显,Windows/Windows打印系统的Qt打印代码会渲染虚线(但不是实线)。你知道该怎么解决这个问题吗?

我至少要试试Qt4.8.5。可能非实线样式必须由Qt光栅化。