Qt多线程下Word转换为PDF
在工作的项目中需要让计算机自动生成公司生产产品的电子版的质检报告.
我首先用的是让软件生成Word格式的报告,但是这个格式容易修改因此领导不太满意.现在只能修改成PDF格式.因为公司的质检报告有固定的的模板,使用Qt很方便的实现生成Word版本,所以用的方法是先生成Word格式的质检报告然后格式进行转换.
一个重要的问题就是格式转换需要很长的时间,在转换期间软件会处于冻结转态.因此需要使用到多线程的方法加快转换的速度.
下面是以四个Word文档转换为例讲解.
代码结构如下
QT += axcontainer .pro下面
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <workthread.h>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();WorkThread *workThread[4];
private:Ui::Widget *ui;
};
#endif // WIDGET_H
workthread.h
#ifndef WORKTHREAD_H
#define WORKTHREAD_H
#include <QThread>
#include <QtDebug>
class WorkThread : public QThread
{Q_OBJECT
public:WorkThread(int i);int odd;
protected:void run() ;};#endif // WORKTHREAD_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QAxObject>
#include <QDebug>
#include <QTime>
#include <workthread.h>
#include <windows.h>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{int j = 0;for (int i=1;i<=7;i+=2){workThread[j] = new WorkThread(i); //新建多线程 一共创建四个j++;}for(int i =0;i<4;i++) //依次启动{workThread[i]->start();}// ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}
void WorkThread::run()
{QTime t;t.restart(); //测试多线程下的转换时间HRESULT r = OleInitialize(0);//初始化框架QAxObject *pWordApplication = new QAxObject("Word.Application",0);QAxObject *pWordDocuments = pWordApplication->querySubObject("Documents");QString fileName = "D:\\KHDCheckReport\\2020-1-11\\"+QString::number(odd)+".docx";QString toFilePath = "D:\\KHDCheckReport\\2020-1-11\\"+QString::number(odd)+".pdf";QVariant filename(fileName);QVariant confirmconversions(false);QVariant readonly(true);QVariant addtorecentfiles(false);QVariant passworddocument("");QVariant passwordtemplate("");QVariant revert(false);QAxObject *doc = pWordDocuments->querySubObject("Open(const QVariant&, const QVariant&,const QVariant&, ""const QVariant&, const QVariant&, ""const QVariant&,const QVariant&)",filename,confirmconversions,readonly,addtorecentfiles,passworddocument,passwordtemplate,revert);QVariant OutputFileName(toFilePath);QVariant ExportFormat(17); //转换PDFQVariant OpenAfterExport(false);doc->querySubObject("ExportAsFixedFormat(const QVariant&,const QVariant&,const QVariant&)",OutputFileName,ExportFormat,OpenAfterExport);doc->dynamicCall("Close(boolean)",false);qDebug()<<"运行时间:"<<t.elapsed();OleUninitialize();//关闭}
workthread.cpp
#include "workthread.h"WorkThread::WorkThread(int i)
{odd = i;
}
main.cpp
#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
程序很简单不需要过多说明
Qt多线程下Word转换为PDF相关推荐
- Qt下使用QAxObject进行Word转换为PDF出现错误 error: undefined reference to `QAxObject::QAxObject(QObject*)‘
Qt下使用QAxObject进行Word转换为PDF出现错误 error: undefined reference to `QAxObject::QAxObject(QObject*)' 首先检查以下 ...
- ubuntu 下 python 将ppt,word 转换为pdf.
最近发现了一个挺厉害的人工智能学习网站,内容通俗易懂,风趣幽默,感兴趣的可以点击此链接进行查看:床长人工智能教程 废话不多说,请看正文! 前言: 在我以前的博客中有这么两篇博客,一篇是:将word 转 ...
- python ubuntu word txt 转pdf_ubuntu 下 python 将ppt,word 转换为pdf.
前言: 在我以前的博客中有这么两篇博客,一篇是:将word 转换为图片(word to pdf ->pdf to image),另一篇是:python将ppt文件转换为jpg图片. 这两篇博客都 ...
- ubuntu下使用python将ppt转成图片_在Ubuntu下,python将PPT和word转换为PDF,ubuntu,pptword,pdf...
前言: 在我以前的博客中有这么两篇博客,一篇是: python将ppt文件转换为jpg图片 . 这两篇博客都是讲如何将word,ppt转换为图片,但是这些方法都是在win系统中实现的,而在ubuntu ...
- Word处理控件Aspose.Words功能演示:在 C# .NET 中将 Word 转换为 PDF - 完整指南
Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word.此 ...
- 教你用8行代码将word转换为pdf格式 及 6行代码实现批量将word转换为pdf格式--python实用小技能get起来
目录 将word转换为pdf格式 安装pywin32 上代码 运行结果 批量实现word转pdf 安装docx2pdf 上代码 运行结果 将word转换为pdf格式 安装pywin32 代码(Anac ...
- (五)java项目中的文档转换案例实战——Word转换为PDF
前言 由于在开发中需要适配不同的多端应用,在文件相关处理中也会存在相同的问题,需要将文档转换为不同的格式展示,本节我们主要通过一个小案例实现在java环境下实现Word2003(doc). Word2 ...
- 如何通过Java将Word转换为PDF
Word是我们日常编辑文档内容时十分常用的一种文档格式.但相比之下,PDF文档的格式.布局更为固定,不易被更改.在保存或传输较为重要的文档内容时,PDF文档格式也时很多人的不二选择.很多时候我们都会遇 ...
- winform实现word转换为PDF(.doc)
注意:实现word转换为PDF文件,本人安装Office为2013; word以后缀为.doc为例实现文件类型转换,具体方式如下所示: 实现步骤: 1.添加命名空间引用--using Microsof ...
最新文章
- python+selenium百度贴吧自动签到
- 《DBA修炼之道:数据库管理员的第一本书》——1.4节评估DBA的工作邀请
- 不再有神的概念,将所有存在称之为文明,这很有意思
- 一些在NLP的面试中提问频率非常高的问题
- 两种求集合全部子集的方法
- 到底什么才是人生最大的投资
- wfm扩展_WFM的完整形式是什么?
- README.md怎么写比较好
- return可以返回多个值_JDK10的新特性:var泛型和多个接口实现
- delphi查看源码版本_Eigen 版本切换(ubuntu 16.04)
- win10系统下将DMG转为ISO镜像——(虚拟机黑苹果操作)
- 码栈使用手册(二)---界面介绍
- p值小于0.05拒绝还是接受_干货:关乎你的实验成败,0.05这个值不容小觑!
- 刷机-3.71M33升级到3.71M33-3的方法
- ShaRF: Shape-conditioned Radiance Fields from a Single View
- netscape.exe_评论-Netscape 6.1
- WPF实战之DataGrid设置行高
- 速看|快速软件开发框架突破信息孤岛,高效实现数字化发展!
- 函数模板的特例化(专用化)以及类型含有const的特殊情况
- 粒子群优化算法改进之多子群合作粒子群优化算法
热门文章
- Wdatepicker日期控件的下载和详细使用说明
- CoppeliaSim(原Vrep)中实现多关节机械臂的逆运动学仿真(tar-tip)
- Vue + Element + animate.css 音乐网站(网易云版)
- SecurityError Error 2148 SWF 不能访问本地资源
- Cisco无线控制器配置Radius
- vivo联合Shopee独家发布T系列智能手机,掀起东南亚移动游戏热潮
- Canva做海报使用心得
- 关于VeriSign(威瑞信)_VeriSign(威瑞信)全球服务网络遍及全球,面向各地客户提供PKI及SSL证书、代码签名证书服务...
- SpringBoot源码初学者(二):SpringBoot事件监听器
- 香港首批虚拟银行牌照将下发 腾讯蚂蚁金服等或在列