ODT 中的自定义页面布局

Available in Start planBetav0.3.0

ODT 导出扩展支持自定义页面尺寸和页边距,允许您创建符合精确布局要求的文档。无论您需要 A5 页面、自定义纸张尺寸,还是特定的页边距配置,都可以直接在扩展中进行设置。

页面尺寸配置

使用 pageSize 选项定义导出 ODT 文件的自定义页面尺寸。页面尺寸配置接受带有多种计量单位的宽度和高度值。

支持的单位

所有页面尺寸和页边距单位支持以下单位:

UnitDescription
cm厘米(默认)
in英寸
pt
pc派卡
mm毫米
px像素

配置选项

PropertyTypeDescriptionDefault
widthstring页面的宽度。必须是一个正数,后跟有效单位(cm、in、pt、pc、mm、px)。"21cm"
heightstring页面的高度。必须是一个正数,后跟有效单位(cm、in、pt、pc、mm、px)。"29.7cm"
import { ExportOdt } from '@tiptap-pro/extension-export-odt'

ExportOdt.configure({
  token: 'YOUR_TOKEN',
  appId: 'YOUR_APP_ID',
  pageSize: {
    width: '14.8cm', // A5 宽度
    height: '21cm', // A5 高度
  },
})

页面边距配置

pageMargins 选项允许您为文档页面的所有边设置自定义边距。与页面尺寸不同,上下边距可以接受负值。

配置选项

PropertyTypeDescriptionDefault
topstring页面的上边距。可以为负值。必须是一个数字,后跟有效单位(cm、in、pt、pc、mm、px)。"1cm"
bottomstring页面的下边距。可以为负值。必须是一个数字,后跟有效单位(cm、in、pt、pc、mm、px)。"1cm"
leftstring页面的左边距。必须是一个正数,后跟有效单位(cm、in、pt、pc、mm、px)。"1cm"
rightstring页面的右边距。必须是一个正数,后跟有效单位(cm、in、pt、pc、mm、px)。"1cm"
headerstring从页面上边缘到页眉顶部的距离。应小于 top。必须是一个带单位的正数。"1.25cm"
footerstring从页面下边缘到页脚底部的距离。应小于 bottom。必须是一个带单位的正数。"1.25cm"
import { ExportOdt } from '@tiptap-pro/extension-export-odt'

ExportOdt.configure({
  token: 'YOUR_TOKEN',
  appId: 'YOUR_APP_ID',
  pageMargins: {
    top: '2cm',
    bottom: '2cm',
    left: '1.5cm',
    right: '1.5cm',
    // 从页面边缘到页眉/页脚的距离
    header: '1cm',
    footer: '1cm',
  },
})

由 Pages 扩展自动派生

Pages 扩展ExportOdt 一起配置时,headerfooter 偏移量会自动从 Pages 存储值 headerTopMarginfooterBottomMargin 中派生。您传递给 pageMargins 的值始终具有优先级。

转换服务要求

要端到端支持 pageMargins.headerpageMargins.footer,需要 Tiptap convert 服务版本能够接受这些字段,并且提供更新的 @tiptap-pro/extension-export-docx。在较旧的 convert 服务版本中,这些值会被忽略,并使用 Word 的默认值。

完整示例

以下是如何使用 ODT 导出扩展配置自定义页面布局的完整示例:

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

const editor = new Editor({
  extensions: [
    // 其他扩展...
    ExportOdt.configure({
      token: 'YOUR_TOKEN',
      appId: 'YOUR_APP_ID',
      // A5 页面尺寸
      pageSize: {
        width: '14.8cm',
        height: '21cm',
      },
      // 自定义边距
      pageMargins: {
        top: '2cm',
        bottom: '2cm',
        left: '2cm',
        right: '2cm',
      },
    }),
    // 其他扩展...
  ],
})

// 使用自定义布局导出
editor
  .chain()
  .exportOdt({
    onCompleteExport(result) {
      const url = URL.createObjectURL(result)
      const a = document.createElement('a')

      a.href = url
      a.download = 'custom-layout.odt'
      a.click()

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

常见页面尺寸

以下是一些可供参考的常见页面尺寸:

FormatWidthHeight
A421cm29.7cm
A514.8cm21cm
Letter8.5in11in
Legal8.5in14in
Tabloid11in17in

不同的计量单位

您可以根据喜好混合使用不同单位:

ExportOdt.configure({
  token: 'YOUR_TOKEN',
  appId: 'YOUR_APP_ID',
  // 美式 Letter 尺寸(英寸)
  pageSize: {
    width: '8.5in',
    height: '11in',
  },
  // 使用不同单位的边距
  pageMargins: {
    top: '0.75in', // 英寸
    bottom: '72pt', // 磅(1 英寸 = 72 磅)
    left: '2cm', // 厘米
    right: '20mm', // 毫米
  },
})

单位一致性

虽然您可以混合使用不同单位,但通常建议在整个配置中使用一致的单位,以便更易于维护并提高清晰度。