全部產品
Search
文件中心

Intelligent Media Management:文字情境

更新時間:Oct 30, 2024

本文將介紹如何配置文字情境中常見的幾種情況。

如何限制使用者只能修改指定位置內容

在文字組件(Word)中,如何限制使用者只能修改指定位置內容?

  • 建立.docx格式檔案,目前僅有該格式支援開啟內容控制項。

  • 編寫文檔本文。

  • 在需要的位置插入內容控制項

  • 點擊按鈕「審閱」-「限制編輯」進行限制。

如何查詢文本位置和進行文本替換

查詢指定文本的位置

  • 通過Range擷取全文文本。注意這個方法可以使用(0, 10000)之類的,看具體查詢範圍。

  • 通過 JavaScript 尋找到對應的模板內容,擷取開始位置之類的(例如 JavaScript 字串的find方法)。

替換文本

通過修改文本替換文本。

如何移動游標到指定文本

  • 定位文字:const info = await app.ActiveDocument.Find.Execute('WebOffice'); // 返回 [{ pos: 16, len: 2 }]

  • 擷取pos位置資訊:const pos = info[0].pos;

  • 移動游標:await app.ActiveDocument.Range.SetRange(pos, pos);

 async function example() { 
 await instance.ready();
  const app = instance.Application;
  // 1. 搜尋並高亮文本
  const findResult = await app.ActiveDocument.Find.Execute('WebOffice');
  // 2. 擷取位置資訊
  const { pos } = findResult[0];
  // 3. 擷取地區對象
  const range = await app.ActiveDocument.Range.SetRange(pos, pos);
}
async function example() {
  // 前面步驟同上,代碼省略
  // 4. 滾動文件視窗, 顯示指定的地區
  await app.ActiveDocument.ActiveWindow.ScrollIntoView(range);
} 

如何將 A 文檔內容同步到 B 文檔

在日常的業務中,我們可能接到需求,需要將 A 文檔與 B 文檔合并,或者將 A 文檔內容同步到 B 文檔中。

我們可以通過ActiveDocument.Range(Start, End).GetHtmlData()擷取 A 文檔中的 HTML 資料:

async function example() {
await instance.ready();

const app = instance.Application;
 
// 擷取選中地區
 const range = await app.ActiveDocument.Range(10, 20);

 // 擷取指定地區的帶格式 HTML 資料
 const htmlInfo = await range.GetHtmlData();
 console.log(htmlInfo);
}

htmlInfo 的傳回值如下:{ HTML, Text }

屬性

資料類型

說明

HTML

String

HTML 資料

Text

String

文本資料

然後,根據擷取的 HTML 資料,我們可以通過ActiveDocument.Range(Start, End).PasteHtml({ HTML })將它粘貼到 B 文檔中:

async function example() {
await instance.ready();
const app = instance.Application;
  // 擷取選中地區
const range = await app.ActiveDocument.Range(10, 20);
// 擷取指定地區的帶格式 HTML 資料
  const htmlInfo = await range.GetHtmlData();
  
  // 粘貼帶格式的 HTML 資料到指定地區
  await app.ActiveDocument.Range(110, 110).PasteHtml({
    HTML: htmlInfo.HTML,
  });
}

最後,如果我們需要確定文檔的末尾,可以通過ActiveDocument.GetDocumentRange()來擷取全文 Range,並通過Range.SetRange()將位置定位過去:

說明

GetHtmlData介面依賴剪下板能力,需要文檔開啟複製許可權。開啟方式:後端file/info回調介面user_acl.copy置為1

async function example() {
 await instance.ready();
 const app = instance.Application;
 // 擷取選中地區
 const DocumentRange = await app.ActiveDocument.GetDocumentRange();
// 擷取末尾
  const End = await DocumentRange.End;
 // 定位到末尾
  await app.ActiveDocument.Range(0, 1).SetRange({
   Start: End,
    End: End,
 });
}

這樣,可以將A文檔的內容完整地追加到B文檔的末尾,或者通過這種方法,以前端方式實現A、B文檔的合并。