案例分享:数字化智能制造工艺报告生成工具Demo(当前v1.0.1)
需求
工艺通用模板展示文件、报告和相关模板导出pdf
1.封面:左上序号,右上版本,文件名称,公司名称,公司logo,零件编号,零件名称。
2.首页表头:机器型号、指令编号、指令版次、有效性、阶段标识
3.首页内容:FO任务卡控制,换版说明,所需图样,所需技术文件
4.其他页继续开发中
5.设计采用接口的形式(当前使用txt),
6.展示可2和3支持无限行数据,翻页,空格行,调整位置等等。
7.可加载不同数据的txt直接生成pdf,并应用中展示和调用本地pdf打开,方便测试与生成。
8.后续可添加表格,图像,三维图等等,此模块作为长期报告和展示模块会持续开发。
9.不依赖系统和第三方插件,支持windows,linux和arm,只依赖qt本身,方便后续迭代和移植兼容。

数据文件:






windows 运行包下载地址:
QQ技术群,进Q群,点击“文件”搜索“displayProcess”,群内与博文同步更新)

// 生成报告
_listImage = DisplayProcessManager::getInstance()->createDisplayProcessImages();
if(_listImage.size() > 0)
{
_currentPage = 0;
ui->widget_image->setImage(_listImage.at(_currentPage));
// 打印打pdf
QString filePath = PrinterManager::getInstance()->printToPdf(_listImage);
ui->lineEdit_pdfFilePath->setText(filePath);
}else{
_currentPage = 0;
}
#ifndef DISPLAYPROCESSMANAGER
#define DISPLAYPROCESSMANAGER
#include <QObject>
#include <QMutex>
#include <QMutexLocker>
#include <QPrinterInfo>
#include <QImage>
#include <QPainter>
#include <QFontMetrics>
#include "displayProcessCommon.h"
class DisplayProcessManager : public QObject
{
Q_OBJECT
private:
explicit DisplayProcessManager(QObject *parent = 0);
public:
static DisplayProcessManager * getInstance();
public:
QList<QImage> createDisplayProcessImages();
...
protected:
QSize getA4Size();
QImage createShouYe(); // 创建首页
QList<QImage> createFoRenWuKaKongZhi(); // 创建FO卡任务控制(FO任务卡控制+换版说明+所需图样+所需技术文件)
QList<QImage> createGongZuoShuoMing(); // 创建工作说明(工作说明+原材料控制+设备汇总+工量具汇总+工装汇总)
protected:
void saveCurrentImage(QImage image); // 存储当前图片
protected:
void drawContentPageTemplate(QPainter *painter);// 第二页开始的页模板(不含页码)
protected: // 通用使用函数(固定位置)
void drawBorder(QPainter *painter); // 绘制边框
void drawZHFO(QPainter *painter); // 绘制ZHFO
void drawJiXing(QPainter *painter); // 绘制机型
void drawFoXuLieHao(QPainter *painter); // 绘制FO系列号
void drawHeaderInfo(QPainter *painter); // 绘制表头信息
void drawFooterInfo(QPainter *painter); // 绘制页脚信息(不含页码)
void drawPageNum(QPainter *painter, int currentNum, int totalNum); // 绘制页码(因为动态最后单独刷一次)
protected: // 仅“首页”使用函数(固定位置)
void drawBanCi(QPainter *painter); // 绘制版次
void drawInnerBorder(QPainter *painter); // 绘制边框
void drawFileTitle(QPainter *painter); // 绘制文件标题
void drawCompanyName(QPainter *painter); // 绘制公司名称
void drawLogoImage(QPainter *painter); // 绘制logo
void drawLingJianHao(QPainter *painter); // 绘制零件号
void drawLingJianMingCheng(QPainter *painter); // 绘制零件名称
protected: // 可能导致分页,具体内容
QList<QImage> drawFoRenWuKaKongZhiTable(int y, int width, int height); // 绘制“FO任务卡控制”表
QList<QImage> 