You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过PSPDFKit API或Chrome扩展向已有PSPDFKit批注注入文本?

PSPDFKit 批注操作相关问题解答

1. 是否可使用PSPDFKit API向已有批注中注入文本?

可以直接通过PSPDFKit官方API实现,核心思路是获取目标批注实例、修改内容属性后更新批注:

  • 首先通过instance.getAnnotation(annotationId)获取指定ID的批注,或者用instance.getSelectedAnnotations()获取当前选中的批注
  • 针对文本类批注(如TextAnnotation、FreeTextAnnotation),修改其content属性(可直接追加或替换文本)
  • 调用instance.updateAnnotation(annotation)将修改同步到文档

代码示例:

// 假设已获取PSPDFKit实例instance,以及目标批注ID annotationId
const annotation = instance.getAnnotation(annotationId);
// 向批注内容追加文本
annotation.content += " [扩展注入的额外文本]";
// 更新批注
instance.updateAnnotation(annotation);

不同类型的批注可能对应不同的内容属性,具体可参考PSPDFKit Web的批注API规范。

2. Chrome扩展是否可为PSPDFKit创建的现有批注添加脚本,向批注实例/气泡中添加字符串?

可以实现,由于Chrome扩展的内容脚本与页面上下文隔离,需要像你提供的TinyMCE示例那样,向页面注入脚本在页面上下文内操作PSPDFKit:

核心步骤:

  1. 在内容脚本中等待PSPDFKit实例加载完成(可通过轮询window.PSPDFKit.getInstance()或监听页面事件)
  2. 向页面注入脚本,在页面上下文内执行以下操作:
    • 获取目标批注实例,通过API修改内容(同第一问的方法)
    • 若要直接操作批注气泡的DOM,可定位气泡对应的元素(如类名为.PSPDFKit-AnnotationBubble的节点),添加额外文本元素

代码示例:

// Chrome扩展内容脚本中的注入函数
function injectTextToPSPDFKitAnnotation(text) {
  const script = document.createElement('script');
  script.textContent = `
    // 确保PSPDFKit实例已初始化
    const pspdfkitInstance = window.PSPDFKit.getInstance();
    if (pspdfkitInstance) {
      // 获取当前选中的批注
      const selectedAnnots = pspdfkitInstance.getSelectedAnnotations();
      if (selectedAnnots.length > 0) {
        const targetAnnot = selectedAnnots[0];
        // 向批注内容追加文本
        targetAnnot.content += " ${text}";
        pspdfkitInstance.updateAnnotation(targetAnnot);

        // 额外:向批注气泡DOM添加字符串
        const bubble = document.querySelector('.PSPDFKit-AnnotationBubble');
        if (bubble) {
          const extraText = document.createElement('div');
          extraText.style.marginTop = '8px';
          extraText.textContent = " - 扩展添加的附加文本";
          bubble.appendChild(extraText);
        }
      }
    }
  `;
  document.head.appendChild(script);
  script.remove();
}

// 调用示例:注入指定文本
injectTextToPSPDFKitAnnotation("Chrome扩展注入的内容");

注意事项:

  • PSPDFKit的DOM类名可能随版本变化,需根据目标页面的实际DOM结构调整选择器
  • 扩展manifest需配置对应页面的host权限,确保能访问目标PSPDFKit页面
  • 需等待PSPDFKit实例完全初始化后再执行操作,避免获取实例失败

内容的提问来源于stack exchange,提问作者11teenth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 00:22:02