使用页眉和页脚扩展您的 ODT 导出

Available in Start planBetav0.3.0

@tiptap-pro/extension-export-odt 扩展内置支持自定义导出文档的页眉和页脚。您可以为首页、奇数页和偶数页配置不同的页眉和页脚。

页眉配置

headers 对象允许您自定义导出 ODT 文档的页眉:

属性类型说明
evenAndOddHeadersboolean是否为奇数页和偶数页使用不同的页眉
differentFirstPageboolean是否首页使用不同的页眉。当为 true 时,首页使用 first 的值,替代 default
defaultstring所有页的默认页眉,或当激活 evenAndOddHeaders 时,奇数页使用的页眉。支持纯文本字符串或字符串化的 Tiptap JSONContent 实现富格式化。
firststring首页页眉,仅当 differentFirstPage 设为 true 时生效。支持纯文本字符串或字符串化的 Tiptap JSONContent 实现富格式化。
evenstring偶数页页眉,仅当激活 evenAndOddHeaders 时生效。支持纯文本字符串或字符串化的 Tiptap JSONContent 实现富格式化。

使用纯文本时,将生成简单无样式的页眉。使用字符串化的 Tiptap JSONContent(通过 JSON.stringify())时,将保留粗体、斜体和链接等富格式化。

页脚配置

footers 对象允许您自定义导出 ODT 文档的页脚:

属性类型说明
evenAndOddFootersboolean是否为奇数页和偶数页使用不同的页脚
differentFirstPageboolean是否首页使用不同的页脚。当为 true 时,首页使用 first 的值,替代 default
defaultstring所有页的默认页脚,或当激活 evenAndOddFooters 时,奇数页使用的页脚。支持纯文本字符串或字符串化的 Tiptap JSONContent 实现富格式化。
firststring首页页脚,仅当 differentFirstPage 设为 true 时生效。支持纯文本字符串或字符串化的 Tiptap JSONContent 实现富格式化。
evenstring偶数页页脚,仅当激活 evenAndOddFooters 时生效。支持纯文本字符串或字符串化的 Tiptap JSONContent 实现富格式化。

使用纯文本时,将生成简单无样式的页脚。使用字符串化的 Tiptap JSONContent(通过 JSON.stringify())时,将保留粗体、斜体和链接等富格式化。

完整示例

import { ExportOdt } from '@tiptap-pro/extension-export-odt'

const editor = new Editor({
  extensions: [
    // 其他扩展...
    ExportOdt.configure({
      token: 'YOUR_TOKEN',
      appId: 'YOUR_APP_ID',
      headers: {
        evenAndOddHeaders: true,
        default: '我的文档 - 机密',
        first: '欢迎阅读我的文档',
        even: '我的文档 - 偶数页',
      },
      footers: {
        evenAndOddFooters: true,
        default: '公司名称 - 版权所有',
        first: '草稿版本 1.0',
        even: '公司名称 - 偶数页脚',
      },
    }),
    // 其他扩展...
  ],
})

// 以包含页眉和页脚的形式导出
editor
  .chain()
  .exportOdt({
    onCompleteExport(result) {
      const url = URL.createObjectURL(result)
      const a = document.createElement('a')

      a.href = url
      a.download = '带页眉的文档.odt'
      a.click()

      URL.revokeObjectURL(url)
    },
  })
  .run()

简单的页眉和页脚

如果您不需要奇偶页不同的页眉,可以只提供 default 值:

ExportOdt.configure({
  token: 'YOUR_TOKEN',
  appId: 'YOUR_APP_ID',
  headers: {
    default: '我的文档标题',
  },
  footers: {
    default: '页脚 - 公司名称',
  },
})