QT += axcontainer
1.mainwindows.cpp
//word转pdf
HRESULT r = OleInitialize(0);//初始化框架
QAxObject *pWordApplication = new QAxObject("Word.Application",0);
QAxObject *pWordDocuments = pWordApplication->querySubObject("Documents");
QString fileName = "D:\\111_202212050023.docx";
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);
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();
}
2.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
3.workthread.cpp
//解决中文显示问题
#pragma execution_character_set("utf-8")
#include "workthread.h"
#include <QAxObject>
#include <QDebug>
#include <QTime>
#include <workthread.h>
#include <windows.h>
WorkThread::WorkThread(int i)
{
odd = i;
}
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:\\111_202212050023.docx";
QString toFilePath = "D:\\111_202212050023.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); //转换PDF
QVariant OpenAfterExport(false);
doc->querySubObject("ExportAsFixedFormat(const QVariant&,const QVariant&,const QVariant&)",
OutputFileName,
ExportFormat,
OpenAfterExport);
doc->dynamicCall("Close(boolean)",false);
qDebug()<<"运行时间:"<<t.elapsed();
OleUninitialize();//关闭
}