在实际的项目开发中,我们有可能需要将图片或者一些文字转换为PDF的形式保存起来,那么如何将图片和文字等形式的内容生成PDF?其实也是很简单的,在就和我们画一个简单的图形是一样的道理,我们在绘图的时候会利用QPainter,你也许还记得生成QPainter的对象我们需要指定其绘图设备(QPaintDevice *device),即需要指定我们需要把图形画在哪里,那么在生成PDF的时候我们需要用到QPrinter,我们就可以把文字或者图片画到QPrinter中。
QPrinter printer_text;
printer_text.setPageSize(QPagedPaintDevice::A4);//设置打印纸张的大小为A4,会包含许多格式的纸张,可以根据自己的要求来设置打印纸张的大小
printer_text.setOutputFormat(QPrinter::PdfFormat);//设置输出格式为PDF
printer_text.setOutputFileName(tr("C:\\Users\\GiG\\Desktop\\text.pdf"));//设置保存位置
QStringList location1;
location1<< tr("北京")<<tr("上海")<<tr("西安")<<tr("深圳")<<tr("成都");
QStringList location2;
location2<< tr("湖人")<<tr("快船")<<tr("凯尔特人")<<tr("雄鹿")<<tr("猛龙");
QPainter painter;
painter.begin(&printer_text);//将printer_text作为当前的绘图设备
QString dateTime = QDateTime::currentDateTime().toString(tr("yyyy-MM-dd hh:mm:ss dddd"));
QPoint startPoint = QPoint(20,20);
for (int row = 0; row < 5; ++row)
{
QString message = QString("%1 %2 %3").arg(QString::number(row)).arg(dateTime).arg(location1.at(row));
int y = startPoint.y();
startPoint.setY(y+20);
painter.drawText(startPoint,message);
message.clear();
}
printer_text.newPage();//创建新的一页
QPoint newPoint = QPoint(20,20);
for (int row = 0; row < 5; ++row)
{
QString message = QString("%1 %2 %3 %4 %5").arg(QString::number(row)).arg(location2.at((row+1) % 5)).arg(tr("VS"))
.arg(location2.at(row)).arg(dateTime);
int y = newPoint.y();
newPoint.setY(y+20);
painter.drawText(newPoint,message);
message.clear();
}
painter.end();