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

如何在React Syncfusion文档编辑器中自定义每页尺寸?

实现Syncfusion DocumentEditor单页自定义页面尺寸

Syncfusion的DocumentEditor支持基于**节(Section)**的页面设置,每个节可以独立配置页面尺寸、方向等属性,以此实现单页自定义的需求。以下是具体实现方案:

核心思路

文档的页面属性绑定到节,通过插入下一页分节符将文档拆分为多个独立节,再为每个节单独配置pageSettings,即可实现不同页面的自定义尺寸设置。

实现步骤与代码示例

1. 获取DocumentEditor实例

通过React ref获取DocumentEditorContainerComponent的内部documentEditor实例,用于后续操作文档内容:

import * as React from 'react';
import './App.css';
import { DocumentEditorContainerComponent, Toolbar } from '@syncfusion/ej2-react-documenteditor';

DocumentEditorContainerComponent.Inject(Toolbar);

function App() {
  // 创建ref获取编辑器实例
  const containerRef = React.useRef(null);

  // 自定义多页面尺寸的函数
  const setCustomPageSizes = () => {
    const documentEditor = containerRef.current.documentEditor;
    if (!documentEditor) return;

    // 配置第一页:A4横向
    documentEditor.selection.sectionFormat.pageSettings = {
      size: 'A4',
      orientation: 'Landscape'
    };

    // 插入下一页分节符,创建第二个独立节
    documentEditor.editor.insertSectionBreak('NextPage');

    // 配置第二页:A3纵向
    documentEditor.selection.sectionFormat.pageSettings = {
      size: 'A3',
      orientation: 'Portrait'
    };

    // 插入下一页分节符,创建第三个独立节
    documentEditor.editor.insertSectionBreak('NextPage');

    // 配置第三页:自定义尺寸(8.5×11英寸,约216×279mm)
    // 注意:尺寸单位为磅,1mm≈2.83465磅,1英寸=72磅
    documentEditor.selection.sectionFormat.pageSettings = {
      size: 'Custom',
      width: 216 * 2.83465,
      height: 279 * 2.83465,
      orientation: 'Portrait'
    };
  };

  return (
    <div>
      <button onClick={setCustomPageSizes}>设置多页自定义尺寸</button>
      <DocumentEditorContainerComponent
        ref={containerRef}
        id='container'
        height={'880px'}
        serviceUrl='https://ej2services.syncfusion.com/production/web-services/api/documenteditor/'
        enableToolbar={true}
        pageSettings={{
          size: 'A4',
          orientation: 'Landscape'
        }}
      />
    </div>
  );
}
export default App;

2. 关键API说明

  • insertSectionBreak('NextPage'):插入下一页分节符,将文档拆分为独立的节,每个节可单独设置页面属性。
  • selection.sectionFormat.pageSettings:获取当前选中节的页面设置对象,修改其属性即可更新对应节的页面配置:
    • 预设尺寸:支持A0-A6、Letter、Legal等标准纸张尺寸。
    • 自定义尺寸:将size设为'Custom',通过width和height设置自定义尺寸(单位为磅)。

3. 修改现有文档的页面尺寸

如果需要对已存在的文档页面修改尺寸,可直接遍历文档的节进行配置:

const modifyExistingSections = () => {
  const documentEditor = containerRef.current.documentEditor;
  if (!documentEditor) return;

  const sections = documentEditor.document.sections;
  // 修改第一节页面设置
  sections[0].format.pageSettings = { size: 'A4', orientation: 'Landscape' };
  // 修改第二节页面设置(若存在)
  if (sections.length > 1) {
    sections[1].format.pageSettings = { size: 'A3', orientation: 'Portrait' };
  }
  // 刷新编辑器视图生效
  documentEditor.refresh();
};

内容的提问来源于stack exchange,提问作者Ajith Mohan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:37:49