跳转到主要内容
static insertElements(notePath: string, page: number, elements: Element[]): Promise<APIResponse<boolean>>;
参数
参数类型说明
notePathstring笔记文件路径
pagenumber页面索引(从 0 开始)
elementsElement[]元素数据数组
返回

示例

import { PluginFileAPI, PluginCommAPI, PointUtils, type Element } from 'sn-plugin-lib';

/**
 * 创建一个 Element 并插入到指定页面的示例。
 */
export async function exampleInsertElements() {
  const notePath = '/storage/emulated/0/Note/demo.note';
  const page = 0;

  const createRes = await PluginCommAPI.createElement(0);
  if (!createRes.success) {
    throw new Error(createRes.error?.message ?? 'createElement 调用失败');
  }

  const element = createRes.result as Element;
  const pixelPoints = [
    { x: 100, y: 100 },
    { x: 200, y: 220 },
    { x: 300, y: 260 },
  ];
  const pressures = [800, 900, 1000];
  const pageSizeRes = await PluginFileAPI.getPageSize(notePath, page);
  if (!pageSizeRes.success) {
    throw new Error(pageSizeRes.error?.message ?? 'getPageSize 调用失败');
  }
  const pageSize = pageSizeRes.result;
  const points = pixelPoints.map((p) => PointUtils.androidPoint2Emr(p, pageSize));
  element.thickness = 2;
  if (element.stroke) {
    element.stroke.penColor = 0;
    element.stroke.penType = 1;
    await element.stroke.points.setRange(0, points.length - 1, points);
    await element.stroke.pressures.setRange(0, pressures.length - 1, pressures);
  }
  const res = await PluginFileAPI.insertElements(notePath, page, [element]);
  if (!res.success) {
    throw new Error(res.error?.message ?? 'insertElements 调用失败');
  }
  return res.result;
}