一、背景:
1、项目中需要根据数据库数据生成折线图、表格、图片,并将内容打印在pdf文档中。
2、由于表格数据内容较多,A4竖版排版数据显示较拥挤,若全部采用横版其他页面又会不美观。
二、需求:
将表格所在页进行横版排版,其他页面保持竖版排版。
三、关键代码:
myPainter = new QPainter();
writer = new QPdfWriter(pdfFileName);
writer->setPageSize(QPageSize(QPageSize::A4));
//设置首页为竖版
writer->setPageOrientation(QPageLayout::Portrait);
writer->setResolution(300);
writer->setPageMargins(QMarginsF(30, 30, 30, 30));
myPainter->begin(writer);
myPainter->setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
int nPdfWidth = myPainter->viewport().width();
int nPdfHeight = myPainter->viewport().height();
//draw title
myPainter->setFont(QFont(QString::fromLocal8Bit("黑体"), 18, 36));
myPainter->drawText(QRect(0, line_pos, nPdfWidth, 100), Qt::AlignCenter, title_name);
// draw chart
...
//先设置第二页为横版
writer->setPageOrientation(QPageLayout::Landscape);
//开启新页
writer->newPage();
//draw table tile
...
//draw table content
...
//先设置第三页为竖版
writer->setPageOrientation(QPageLayout::Portrait);
//开启新页
writer->newPage();
...