我们的合同存放地址:
https://backimg.rchang.cn/laborcontract_wps/laborcontract_template_HT4308_20241023191908.docx
正常WPS桌面应用打开就没有问题,使用 websdk 打开就多出空白页
请问该怎么搞?
我们的合同存放地址:
https://backimg.rchang.cn/laborcontract_wps/laborcontract_template_HT4308_20241023191908.docx
正常WPS桌面应用打开就没有问题,使用 websdk 打开就多出空白页
请问该怎么搞?
您好,未能复现您的问题,在线打开文档后是否有其它操作呢。
const replaceList = []
window.onload = function () {
const cancelBtn = document.getElementById('cancel');
const saveBtn = document.getElementById('save');
const submitBtn = document.getElementById('submit');
const webOfficeInstance = WebOfficeSDK.init({
fileId: '13',
officeType: 'w',
appId: 'SX20241015NREVZW',
mount: document.querySelector('#app'),
token: 'asdjkhfkjsad',
})
const ApiEvent = webOfficeInstance.ApiEvent
const fileOpen = async () => {
console.log('fileOpen');
// webOfficeInstance.ready().then(readyCbs)
}
ApiEvent.AddApiEventListener('fileOpen', fileOpen)
// ready 回调
async function readyCbs() {
const app = webOfficeInstance.Application
await customizationToolbar(app) // 定制化工具栏
replaceAllInfo(app, replaceList)
await startProject(app) // 开启限制编辑模式
// await openTrackRevisions(app) // 强制开启修订模式
// 绑定提交事件
submitBtn.addEventListener('click', async () => {
// 1、导出一个修订版的 pdf
const pdfUrl1 = await saveAsPdf(app, {
Item: app.Enum.WdExportItem.wdExportDocumentWithMarkup, // 指定导出过程是只包括文本还是包括文本和标记
IncludeDocProps: true, // 指定在最新导出的文件中是否包括文档属性
})
console.log('pdfUrl1: ', pdfUrl1);
// 取消限制编辑模式
await closeProject(app)
// 2、接受所有修订
await acceptAllRevisions(app)
// 3、导出一个正常版的 pdf
const pdfUrl2 = await saveAsPdf(app)
// await startProject(app)
console.log('带批注的 pdfUrl1: ', pdfUrl1);
console.log('原版 pdfUrl2: ', pdfUrl2);
// 保存文件
await webOfficeInstance.save()
})
}
// 设置工具栏
async function customizationToolbar(app) {
const moreMenus = await app.CommandBars('MoreMenus')
moreMenus.Visible = false // 更多按钮隐藏
// const tabReviewWord = await app.CommandBars('TabReviewWord')
// tabReviewWord.Visible = false // 审阅按钮
const contextMenuConvene = await app.CommandBars('ContextMenuConvene')
contextMenuConvene.Visible = false // 右键-召唤在线协助者 隐藏
const reviewTrackChanges = await app.CommandBars('ReviewTrackChanges')
reviewTrackChanges.Visible = false // 修订开关按钮 隐藏
const revisionSetting = await app.CommandBars('RevisionSetting')
revisionSetting.Visible = false // 修订设置功能 隐藏
}
// 开启限制编辑为修订模式
async function startProject(app) {
console.log('startProject');
// 获取限制编辑模式
const mode = await app.ActiveDocument.RestrictEditMode
if (mode != 2) {
// 开启限制编辑
await app.ActiveDocument.Protect('test', app.Enum.WdRestrictEditMode.wdEditModeTrackedChanges)
}
}
// 取消限制编辑模式
async function closeProject(app) {
console.log('closeProject');
// 获取限制编辑模式
const mode = await app.ActiveDocument.RestrictEditMode
if (mode != 0) {
// 停止限制编辑
await app.ActiveDocument.Unprotect('test')
}
}
// 开启修订模式
async function openTrackRevisions(app) {
// 获取页面是否处于修订模式
const TrackRevisions = await app.ActiveDocument.TrackRevisions // true - 在修订模式下,false - 不在修订模式下
if (!TrackRevisions) {
// 不处于修订模式,则设置为修订模式
// 将当前文档的编辑状态切换成修订模式
app.ActiveDocument.TrackRevisions = true
}
}
// 全文替换
async function replaceAllInfo(app, queryList = []) {
console.log('replaceAllInfo');
// 检测需要替换的内容是否存在
let findReplaceList = []
for (let i = 0; i < queryList.length; i++) {
const item = queryList[i]
const findList = await app.ActiveDocument.Find.Execute(item.key, false)
console.log(item.key, findList);
if (findList.length > 0) {
findReplaceList.push(item)
}
}
console.log(findReplaceList.length);
// 如果检测到了要替换的内容,则执行替换操作,否则不执行替换操作
if (findReplaceList.length > 0) {
await closeProject(app) // 关闭保护模式
// 获取当前文档
const ActiveDocument = await app.ActiveDocument
// 全文替换
await ActiveDocument.ReplaceText(findReplaceList)
await acceptAllRevisions(app)// 接受所有修订
await webOfficeInstance.save() // 保存一下
}
}
// 接受所有修订
async function acceptAllRevisions(app) {
console.log('acceptAllRevisions');
// 获取修订对象
const revisions = await app.ActiveDocument.Revisions
// 获取全文修订内容
const revisionData = await revisions.Json()
if (revisionData.length > 0) {
// 获取第 1 个代表已修订过的文档的单个审阅者
const reviewer =
await app.ActiveDocument.ActiveWindow.View.Reviewers.Item(1)
console.log('reviewer', reviewer);
// 控制接受文档中指定审阅者的所有修订
reviewer.Visible = true
// 接受文档中指定审阅者的所有修订
await app.ActiveDocument.AcceptAllRevisionsShown()
}
}
// 导出 PDF,并获取导出后的 url
async function saveAsPdf(app, option = null) {
console.log('saveAsPdf: ', option);
const pdfUrl = await app.ActiveDocument.ExportAsFixedFormat(option) // 默认导出 PDF,所以可以不传参
return pdfUrl
}
}