打印QGraphicsScene可生成低质量输出

时间:2015-04-17 18:29:29

标签: qt4 pdf-generation qgraphicsscene qpainter qprinter

我的代码大致类似于:

QGraphicsScene* pScene( pMap->scene() );

QPrinter printer;
printer.setResolution( 1200 ); //tried many values and QPrinter::PrinterMode
printer.setOutputFileName( "test.pdf" );
printer.setPageSize( QPrinter::A4 );
printer.setOutputFormat( QPrinter::PdfFormat );

QPainter painter( &printer );
pScene->render( &painter );
painter.end();

在我的场景中有一些SVG图像能够以当前显示的分辨率完美显示,并且进一步超过100个缩放比例,因此源的质量不是问题。然而,PDF输出质量很差。 我很乐意将输出呈现为SVG,或者它必须是当前分辨率/ DPI的若干倍的静态图像,以确保它干净清晰。 如果有人对如何提高产量有任何建议,我将非常感激。感谢。

编辑: 似乎渲染到PDF中的输出直接与显示场景的视图的形状/大小相关联。例如。如果我缩小观点,质量会变差。如果我在一个方向上拉长它,输出也会拉长。 无论视图如何,我都希望以高质量输出一致的渲染图。 我怀疑我需要使用更大的比例/视口将此场景放入固定尺寸的新视图中以解决此问题。

1 个答案:

答案 0 :(得分:0)

如果有人需要如何执行此操作的示例,请查看QGIS GIT中的qgscomposition.cpp :: exportAsPDF。该组合是qGraphicsScene的扩展,应该直接适用于任何人的任务(通过一些返工)。
http://qgis.org/api/2.8/qgscomposition_8cpp_source.html#l02651