Skip to main content
Glama

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
NameRequiredDescriptionDefault
outputPathYesDirectory path where PDF will be saved
filenameNoName of the PDF file (default: page.pdf)
formatNoPage format (e.g. 'A4', 'Letter')
printBackgroundNoWhether to print background graphics
marginNoPage margins

Implementation Reference

  • Implements the core logic: generates PDF options from args, calls page.pdf(), registers the saved PDF as an MCP resource, and returns a success response with the resource URI.
    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);
        let resourceLink: Awaited<ReturnType<typeof registerFileResource>> | undefined;
        let savedLocation = options.path;
        try {
          resourceLink = await registerFileResource({
            filePath: options.path,
            name: filename,
            mimeType: "application/pdf",
            server: this.server,
          });
          if (resourceLink?.uri) {
            savedLocation = resourceLink.uri;
          }
        } catch (error) {
          console.warn("Failed to register PDF as resource:", error);
        }
        return {
          ...createSuccessResponse(`Saved page as PDF: ${savedLocation}`),
          ...(resourceLink ? { resourceLinks: [resourceLink] } : {}),
        };
      });
    }
  • Defines the tool name, description, and input schema for validation including required outputPath and optional PDF options.
      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"],
      },
    },
  • Dispatches tool calls matching 'playwright_save_as_pdf' to the SaveAsPdfTool instance's execute method in the main handleToolCall switch statement.
    case "playwright_save_as_pdf":
      return await saveAsPdfTool.execute(args, context);
  • src/tools.ts:514-514 (registration)
    Includes the tool in BROWSER_TOOLS array, which determines when to ensure browser context is available before execution.
    "playwright_save_as_pdf",
  • Imports the SaveAsPdfTool class required for instantiation and execution.
    import { SaveAsPdfTool } from "./tools/browser/output.js";

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aakashH242/mcp-playwright'

If you have feedback or need assistance with the MCP directory API, please join our Discord server