playwright_save_as_pdf
Convert web pages to PDF files with customizable formatting options including page size, margins, and background graphics.
Instructions
Save the current page as a PDF file
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| outputPath | Yes | Directory path where PDF will be saved | |
| filename | No | Name of the PDF file (default: page.pdf) | |
| format | No | Page format (e.g. 'A4', 'Letter') | |
| printBackground | No | Whether to print background graphics | |
| margin | No | Page margins |
Implementation Reference
- src/tools/browser/output.ts:8-31 (handler)Implementation of the SaveAsPdfTool class containing the execute method that saves the current Playwright page as a PDF file using page.pdf() with configurable options.export class SaveAsPdfTool extends BrowserToolBase { /** * Execute the save as PDF tool */ async execute(args: any, context: ToolContext): Promise<ToolResponse> { return this.safeExecute(context, async (page) => { const filename = args.filename || 'page.pdf'; const options = { path: path.resolve(args.outputPath || '.', filename), format: args.format || 'A4', printBackground: args.printBackground !== false, margin: args.margin || { top: '1cm', right: '1cm', bottom: '1cm', left: '1cm' } }; await page.pdf(options); return createSuccessResponse(`Saved page as PDF: ${options.path}`); }); } }
- src/tools.ts:411-434 (schema)Tool schema definition including name, description, and input validation schema for the playwright_save_as_pdf tool.{ name: "playwright_save_as_pdf", description: "Save the current page as a PDF file", inputSchema: { type: "object", properties: { outputPath: { type: "string", description: "Directory path where PDF will be saved" }, filename: { type: "string", description: "Name of the PDF file (default: page.pdf)" }, format: { type: "string", description: "Page format (e.g. 'A4', 'Letter')" }, printBackground: { type: "boolean", description: "Whether to print background graphics" }, margin: { type: "object", description: "Page margins", properties: { top: { type: "string" }, right: { type: "string" }, bottom: { type: "string" }, left: { type: "string" } } } }, required: ["outputPath"], }, },
- src/toolHandler.ts:548-549 (registration)Registration in the handleToolCall switch statement that routes calls to the SaveAsPdfTool's execute method.case "playwright_save_as_pdf": return await saveAsPdfTool.execute(args, context);
- src/toolHandler.ts:347-347 (registration)Instantiation of the SaveAsPdfTool instance during tool initialization.if (!saveAsPdfTool) saveAsPdfTool = new SaveAsPdfTool(server);
- src/toolHandler.ts:45-45 (registration)Import of the SaveAsPdfTool class.import { SaveAsPdfTool } from './tools/browser/output.js';