跳转到主要内容
本章主要介绍如何使用插件接口在笔记应用(Note)中插入、修改链接数据。

获取套索链接数据

通过 PluginNoteAPI.getLassoLinks 获取套索中的链接数据。样例代码如下:
import {PluginNoteAPI} from 'sn-plugin-lib';
PluginNoteAPI.getLassoLinks()
    .then(data => {
    console.log('getLassoLinks success:', data);
    })
    .catch(error => {
    console.error('getLassoLinks error:', error);
    });
如果套索中没有链接数据,那么返回的 result 数据为空;有链接数据时会返回一个链接数组(Link)。 详细解析请看 PluginNoteAPI.getLassoLinks 的接口描述。
Link.linkType 的取值范围以类型定义为准。读取接口可能返回 linkType=6(摘录链接)。 当前插件接口不支持创建或修改为摘录链接(写入接口如 insertTextLinkmodifyLassoLink 通常只允许 0..4),但可以读取到摘录链接数据并用于展示或识别。

文本链接(Text Link)

笔记链接有两种类型:第一种是文本链接;第二种是笔划链接。需要注意的是,链接只能在主图层操作,不可插入其他图层。 本节将详细介绍文本链接的创建方法。 调用 PluginNoteAPI.insertTextLink 接口, 可以向当前打开笔记的当前页主图层插入一个文本链接。
import { PluginNoteAPI } from 'sn-plugin-lib';

const textLink = {
  destPath: '/storage/emulated/0/Note/test.note', // 目标路径
  destPage: 2, // 目标页码
  style: 0, // 样式:0 实下划线,1 实边框,2 虚边框
  linkType: 0, // 类型:0 笔记页,1 笔记文件,2 文档,3 图片,4 网址
  rect: { left: 100, top: 100, right: 300, bottom: 150 }, // 显示区域(像素坐标)
  fontSize: 49,
  fullText: 'Show Text',
  showText: 'Show Text',
  isItalic: 1, // 是否斜体:0 否,1 是
};

PluginNoteAPI.insertTextLink(textLink)
  .then(data => {
    console.log('insertTextLink success:', data);
  })
  .catch(error => {
    console.error('insertTextLink error:', error);
  });
如代码所示,insertTextLink 传入了一个 TextLink 对象。 调用 insertTextLink 接口之后,会向当前打开笔记的当前页主图层插入一个文本链接。 如果链接需要跳转到笔记的指定页面,linkType 应设置为 0。 如果需要跳转到文档的指定页面,linkType 应设置为 2。当 linkType === 2 时:
  • destPage < 0:跳转到文档当前页或文档第一页
  • destPage >= 0:跳转到文档目标页
linkType === 4(网址)时,destPath 应为 URL 地址;此时 destPage 可设置为 0

笔划链接(Stroke Link)

笔划链接是将笔划设置为链接,其中笔划包括普通笔划和几何图形。 要创建此类链接,必须先框选相应的笔划,否则无法设置链接。此外,必须只套索纯笔划和几何图形,不能包含文本框、标题等元素。
套索的笔划必须是主图层数据,其他图层无法创建链接。
套索笔划和几何图形后,可以调用 PluginNoteAPI.setLassoStrokeLink 接口将套索的元素设置为链接。示例代码如下:
import {PluginNoteAPI} from 'sn-plugin-lib';

PluginNoteAPI.setLassoStrokeLink({
      destPath: '/storage/emulated/0/Note/test.note',
      destPage: 12,
      style: 1,
      linkType: 2,
    })
    .then(data => {
    console.log('setLassoStrokeLink success:', data);
    })
    .catch(error => {
    console.error('setLassoStrokeLink error:', error);
    });
如上述代码所示,setLassoStrokeLink 传入的对象和 TextLink 很像, 只是少了 rectfontSizefullTextshowTextisItalic 这几个参数,因为笔划链接不需要这些参数。

修改套索链接

链接需要套索之后才能修改,调用 PluginNoteAPI.modifyLassoLink 接口, 代码如下:
import { PluginNoteAPI } from 'sn-plugin-lib';



PluginNoteAPI.getLassoLinks()
    .then(({success, result}) => {
    if (!success || !result || result.length === 0) {
        throw new Error('getLassoLinks result is empty');
    }

    const lassoLink = result[0];
    const modifyLassoLink = {
        category: lassoLink.category,
        destPath: currentFilePath,
        destPage: 1,
        linkType: 1,
        style: 1,
        showText: 'Show Text1',
        fullText: 'Show Text1',
    };

    return PluginNoteAPI.modifyLassoLink(modifyLassoLink);
    })
    .then(data => {
    console.log('modifyLassoLink success:', data);
    })
    .catch(error => {
    console.error('modifyLassoLink error:', error);
    });
参数含义上文已说明,这里不再重复。PluginNoteAPI.modifyLassoLink 这个接口既可以修改文字链接,也可以修改笔划链接。文字链接需要填写 fullTextshowText 这些参数; 而笔划链接不需要填写 fullTextshowText 接口 PluginNoteAPI.modifyLassoLink 能够修改的是单个链接,所以如果套索了多个链接或套索了其他元素,调用该接口会失败。