Skip to main content
Glama
output.ts1.62 kB
import * as path from "node:path"; import { registerFileResource } from "../../resourceManager.js"; import { createSuccessResponse, type ToolContext, type ToolResponse } from "../common/types.js"; import { BrowserToolBase } from "./base.js"; /** * Tool for saving page as PDF */ 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); 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] } : {}), }; }); } }

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