set_page_margins
Adjust page margins in Word documents by specifying top, right, bottom, and left values to control document layout and formatting.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | ||
| top | No | ||
| right | No | ||
| bottom | No | ||
| left | No |
Implementation Reference
- src/services/DocumentService.ts:192-219 (handler)The `setPageMargins` method implements the core logic for setting page margins on a document by creating a new docx Document instance with the specified margins (in twips, default 1440) and overwriting the file at filePath.async setPageMargins(filePath: string, margins: PageMargins): Promise<APIResponse> { try { const doc = new Document({ sections: [{ properties: { page: { margin: { top: margins.top || 1440, // 默认 1 英寸 (1440 twips) right: margins.right || 1440, bottom: margins.bottom || 1440, left: margins.left || 1440, }, }, }, children: [], }], }); await Packer.toBuffer(doc).then((buffer) => { return fs.writeFile(filePath, buffer); }); return { success: true }; } catch (error) { const err = error as Error; return { success: false, error: `设置页面边距失败: ${err.message}` }; } }
- src/mcp-server.ts:150-176 (registration)Registers the 'set_page_margins' tool in the MCP server using McpServer.tool, with Zod schema for parameters and an async handler that calls DocumentService.setPageMargins.server.tool( "set_page_margins", { filePath: z.string(), top: z.number().optional(), right: z.number().optional(), bottom: z.number().optional(), left: z.number().optional(), }, async (params) => { const result = await docService.setPageMargins(params.filePath, { top: params.top, right: params.right, bottom: params.bottom, left: params.left, }); return { content: [ { type: "text", text: result.success ? "页面边距已设置" : result.error!, }, ], isError: !result.success, }; } );
- src/types/index.ts:51-56 (schema)TypeScript interface PageMargins defining the input parameters for margins (optional numbers, units in twips). Used by the handler.export interface PageMargins { top?: number; right?: number; bottom?: number; left?: number; }
- src/server.ts:158-165 (registration)In the HTTP server's tool dispatcher switch statement, handles 'set_page_margins' by calling DocumentService.setPageMargins.case 'set_page_margins': result = await docService.setPageMargins(parameters.filePath, { top: parameters.top, right: parameters.right, bottom: parameters.bottom, left: parameters.left, }); break;
- src/server.ts:82-95 (schema)JSON schema definition for the 'set_page_margins' tool in the HTTP server, listing parameters and requirements.name: 'set_page_margins', description: '设置页面边距', parameters: { properties: { filePath: { type: 'string', description: '文档路径' }, top: { type: 'number', description: '上边距' }, right: { type: 'number', description: '右边距' }, bottom: { type: 'number', description: '下边距' }, left: { type: 'number', description: '左边距' }, }, required: ['filePath'], type: 'object', }, },