admin管理员组文章数量:1633181
qt绘制pdf主要步骤如下:
- 选择保存的pdf文件路径及名称
- 创建pdf文件
- 绘制pdf
- 关闭pdf文件
- 使用其他pdf阅读器打开(可不用)
主流程代码如下:
//1 保存位置及文件名
QString strPath = QFileDialog::getSaveFileName(nullptr , tr("保存到"), "", "Text Files (*.pdf)");
if(strPath.isEmpty())
return;
//2 创建pdf文件
QFile pdfFile(strPath);
pdfFile.open(QIODevice::WriteOnly);
QPdfWriter *pPdfWriter = new QPdfWriter(&pdfFile);
pPdfWriter->setResolution(300);
pPdfWriter->setPageSize(QPagedPaintDevice::A4);
pPdfWriter->setPageMargins(QMarginsF(30, 30, 30, 30));
//3 绘制pdf
paintReport(pPdfWriter);
//4
delete pPdfWriter;
pdfFile.close();
//5 通过其他pdf阅读器来打开pdf文件
QDesktopServices::openUrl(QUrl::fromLocalFile(strPath));
其中具体绘制的内容在paintSlideReport
函数中,下面我们单独描述绘制方式。
void paintReport(QPdfWriter *pPdfWriter)
{
QPainter *pPainter = new QPainter(pPdfWriter);
int nPdfWidth = pPainter->viewport().width();
int nPdfHeight = pPainter->viewport().height();
//以下内容为pPainter绘制PDF具体的内容 操作,绘制方法与绘制控件一样
//...
//比如 绘制报告标题
int nTitleH = 120;
pPainter->setFont(QFont("微软雅黑", 18, QFont::Normal));
pPainter->drawText(QRect(0, 0, nPdfWidth, nTitleH), Qt::AlignCenter, tr("试剂使用报告"));
//比如 绘制图片,如公司log等
int nLogoW = nPdfWidth / 5;
int nLogoH = 80;
QPixmap pixmapLogo(":/rs_SystemSetting/Images/my_logo.png");
pixmapLogo = pixmapLogo.scaled(nLogoW, nLogoH, Qt::IgnoreAspectRatio);
painter->drawPixmap(0, 120, pixmapLogo);
...
...
...
//最后释放pPainter内存吗,否则会造成内存泄漏
delete pPainter
}
QPainter绘制方法可参考文章:https://blog.csdn/weixin_42887343/article/details/116739778
版权声明:本文标题:使用QPainter绘制pdf 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729157635a1188130.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论