学无先后,达者为师

网站首页 编程语言 正文

qt输出自定义的pdf文件源码详解

作者:我是标同学 更新时间: 2022-10-29 编程语言

qt中有两种方式可以输出pdf:

方式1:使用QPrinter即打印机的方式打印pdf

这种方式,在qt4成为唯一的方式。

QPrinter printer(QPrinter::HighResolution);    //高清晰度
printer.setPageSize(QPrinter::A4);             //设置纸张大小
printer.setResolution(300);                    //设置清晰度,即dpi ,每个平方英寸像素为300
printer.setOutputFormat(QPrinter::PdfFormat);  //设置导出类型

QPainter *painter = new QPainter();
painter->begin(&printer);
//显示文本
painter->drawText(50,50,ui->label->text());
//画横线
painter->drawLine(0,375,1500,375);
//显示图片
QPixmap pixmap("C:\\xx.png");
painter->drawPixmap(0,0,pixmap);

painter->end();
delete painter;
painter = Q_NULLPTR;    //养成编程好习惯,回收对象要置空

相关博客:

Qt开发-ui导出pdf格式 - 知乎

方式2:QPdfWriter方式输出pdf文档

qt5的版本,qt提供了一个独立的pdf文件写入方式,那就是QPdfWriter,所以咱们当然用QPdfWriter啦。

正确使用的示例代码如下:

//截取软件的界面作为截图,打印到pdf里
QPixmap pix=QWidget::grab(QRect(tmp,ui->customPlot->size()));

QFile pdfFile(path);
QPdfWriter *pdfWriter = new QPdfWriter(&pdfFile);   //实例化QPdfWriter

//设置分辨率,ScreenResolution, PrinterResolution(已经弃用),
//HighResolution(和ScreenResolution效果一样)
pdfWriter->setResolution(QPrinter::ScreenResolution);
pdfWriter->setPageSize(QPagedPaintDevice::A8);      //设置纸张为A8纸大小
//下面这行代码也是可以调整页面大小的,单位为毫米,如果加减一个大点的数,是有效果的
//pdfWriter->setPageSizeMM(QSizeF(pix.widthMM(),pix.heightMM())); 

//实例化QPainter,这里特别注意:pdf输出大小,是由这个QPainter决定的,
//所以实例化这个QPainter时,确保pdfWriter已经被设置完成,否则后面再设置的话
//是不会起作用的。要么就调用pdfWriter->newPage()函数,才会起作用,但是会新起一页了
QPainter *pic_painter = new QPainter(pdfWriter);    

//计算painter视口区域与抓取图片区域的尺寸比例因子
QRect rect = pic_painter->viewport();
//绘制时按照比例因子放大
pic_painter->scale(factor,factor);
//按照坐标画图
pic_painter->drawPixmap(0,0,pix);

delete pic_painter;
delete pdfWriter;
pdfFile.close();

//实例化QPainter,这里特别注意:pdf输出大小,是由这个QPainter决定的
//所以实例化这个QPainter时确保pdfWriter已经被设置完成,否则后面再设置的话
//是不会起作用的。要么就调用pdfWriter->newPage()函数,才会起作用,但是会新起一页了。典型的例子就是设置页面大小setPageSize或者setPageSizeMM函数设置的页面大小不起作用。

遇到这个问题的博客例子:

QPdfWriter和页面大小 - VoidCC

Qt使用QPDFWriter和QPainter生成PDF的问题_52_赫兹的鲸的博客-CSDN博客

比较好的参考博客

53.Qt-QPdfWriter绘制PDF,支持表单输出 - 走看看

QT 生成 pdf QPdfWriter_Beyond欣的博客-CSDN博客

原文链接:https://blog.csdn.net/kangkanglhb88008/article/details/127577650

栏目分类
最近更新