PDF 中的自定义页面布局

Available in Start planBetav0.3.0

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

页面大小配置

使用 pageSize 选项定义导出 PDF 文件的自定义页面尺寸。页面大小配置支持多种计量单位的宽度和高度数值。

支持的单位

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

单位说明
cm厘米(默认)
in英寸
pt
pc派卡
mm毫米
px像素

配置选项

属性类型说明默认值
widthstring页面宽度。必须是一个正数,后跟有效单位(cm、in、pt、pc、mm、px)。"21cm"
heightstring页面高度。必须是一个正数,后跟有效单位(cm、in、pt、pc、mm、px)。"29.7cm"
import { ExportPdf } from '@tiptap-pro/extension-export-pdf'

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

页面边距配置

pageMargins 选项允许您为文档页面的各侧设置自定义边距。与页面大小不同,顶部和底部边距可以接受负值。

配置选项

属性类型说明默认值
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 { ExportPdf } from '@tiptap-pro/extension-export-pdf'

ExportPdf.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 扩展ExportPdf 一起配置时,headerfooter 偏移量会自动根据 Pages 存储中的 headerTopMarginfooterBottomMargin 值派生。您传递给 pageMargins 的值始终具有优先级。

转换服务要求

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

完整示例

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

import { ExportPdf } from '@tiptap-pro/extension-export-pdf'

const editor = new Editor({
  extensions: [
    // 其他扩展...
    ExportPdf.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()
  .exportPdf({
    onCompleteExport(result) {
      const url = URL.createObjectURL(result)
      const a = document.createElement('a')

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

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

常用页面尺寸

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

格式宽度高度
A421cm29.7cm
A514.8cm21cm
Letter8.5in11in
Legal8.5in14in
Tabloid11in17in

不同计量单位混用

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

ExportPdf.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', // 毫米
  },
})

单位一致性

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