配置组件服务
Java中使用jacob调用WPS的COM组件的时候,手动启动可以,但是开机自启却不行
按 Win R
快捷键进入运行菜单,输入
Dcomcnfg
找到: [组件服务]
=>[计算机]
=>[我的电脑]
=>[DCOM配置]
=>[wps……]
如果没找到(wps……):
按 Win R
快捷键进入运行菜单
输入:
代码语言:javascript复制mmc -32
[文件]
——[添加或删除管理单元]
——[组件服务]
(从可用管理单元,添加到所选管理单元,点击:确定)
添加完以后,在控制台根节点下,找到[wps……],
右键设置属性,
设置标识
为:交互式用户
点击”安全”标签,
在”启动和激活权限”上点击”自定义”,然后点击对应的”编辑”按钮,在弹出的”安全性”对话框中填加
NETWORK SERVICE
用户(注意要选择本计算机名)IIS_IUSRS
并给它们赋予本地启动
和本地激活
权限;
在”访问权限”上点击”自定义”,然后点击”编辑”,在弹出的”安全性”对话框中也填加
NETWORK SERVICE
IIS_IUSRS
然后给他们赋予”本地访问”权限.
Java调用COM
工具类开头的宏说明 构件ActiveX组件实例
代码语言:javascript复制ActiveXComponent ax = new ActiveXComponent("name");
其中的 name 的值和你需要调用的ActiveX控件有关 每个 Dispatch 对象看成是对 ActiveX 控件的一个操作,这一步是获得该 ActiveX 控件的控制权
9.0之后的版本接口名称
MS控件名 | name |
---|---|
WPS文字 | KWPS.Aplication |
WPS的Excel | KET.Application |
WPS的演示文档 | KWPP.Application |
Word | Word.Application |
Excel | Excel.Application |
Powerpoint | Powerpoint.Application |
浅谈不同WPS的Api版本调用–老版本V8与新版本V9
对象名称修改
代码语言:javascript复制createobject("wps.applicaion")
修改为
代码语言:javascript复制createObject("kwps.application")
Python调用
安装依赖
代码语言:javascript复制pip install pypiwin32
代码
代码语言:javascript复制#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
import win32com.client
def ConvertByWps(sourceFile, targetFile):
if not os.path.exists(sourceFile):
print(sourceFile "不存在,无法继续!")
return False
typemap = {
'doc': 'word',
'docx': 'word',
'ppt': 'ppt',
'pptx': 'ppt',
'xls': 'excel',
'xlsx': 'excel',
}
name_arr = sourceFile.split(".")
suffix = name_arr[len(name_arr) - 1]
wpstype = typemap.get(suffix)
if (wpstype is None):
return False
os.system('taskkill /im wps.exe')
# 如果文件存在就删除
if os.path.exists(targetFile):
os.remove(targetFile)
if wpstype == 'word':
ConvertDocToPdf(sourceFile, targetFile)
elif wpstype == 'ppt':
ConvertPptToPdf(sourceFile, targetFile)
elif wpstype == 'excel':
ConvertXlsToPdf(sourceFile, targetFile)
if os.path.exists(targetFile):
return True
else:
return False
# 转换 Word文件档到pdf
def ConvertDocToPdf(src, dst):
wps = win32com.client.Dispatch("Kwps.Application")
wps.Visible = False
doc = wps.Documents.Open(src)
doc.ExportAsFixedFormat(dst, 17)
doc.Close()
wps.Quit()
# 转换 PPT文件档到pdf
def ConvertPptToPdf(src, dst):
wps = win32com.client.Dispatch("Kwpp.Application")
wps.Visible = False
ppt = wps.Presentations.Open(src)
ppt.SaveAs(dst, 32)
ppt.Close()
wps.Quit()
# 转换 XLS文件档到pdf
def ConvertXlsToPdf(src, dst):
wps = win32com.client.Dispatch("Ket.Application")
excel = wps.Workbooks.Open(src)
excel.ExportAsFixedFormat(0, dst)
excel.Close()
wps.Quit()
if __name__ == '__main__':
# 当前目录
d = os.path.dirname(__file__)
abspath = os.path.abspath(d)
# 测试用例
src = abspath r"/Doc/test.docx"
dst = abspath r"/Doc/test.pdf"
r = ConvertByWps(src, dst)
print(r)