AutomationFlowsWeb Scraping › Convert and Manipulate Pdfs with Api2pdf and AWS Lambda

Convert and Manipulate Pdfs with Api2pdf and AWS Lambda

ByDavid Ashby @cfomodz on n8n.io

Complete MCP server exposing 9 Api2Pdf - PDF Generation, Powered by AWS Lambda API operations to AI agents.

Event trigger★★★★☆ complexityAI-powered17 nodesMcp TriggerHTTP Request Tool
Web Scraping Trigger: Event Nodes: 17 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #5522 — we link there as the canonical source.

This workflow follows the HTTP Request Tool → Mcptrigger recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "L7ZgmrqmEBeiLlPk",
  "meta": null,
  "name": "Api2Pdf - PDF Generation, Powered by AWS Lambda MCP Server",
  "tags": [],
  "nodes": [
    {
      "id": "65d3bc5d-fb22-4959-9fde-ebf153e1bfc3",
      "name": "Setup Instructions",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1380,
        -240
      ],
      "parameters": {
        "color": 4,
        "height": 1060,
        "content": "### \u2699\ufe0f Setup Instructions\n\n1. **Import Workflow**: \nLoad this workflow into your n8n instance\n\n2. **Configure Authentication**: \nSet up apiKey credentials\n   - Type: API Key in header\n   - Key name: Authorization\n\n3. **Activate Workflow**:\nEnable the workflow to start the MCP server\n\n4. **Get MCP URL**: \nCopy the webhook URL from the MCP trigger\n\n5. **Connect AI Agent**:\nUse the MCP URL in your AI agent configuration\n\n\n### \ud83d\udca1 Usage Notes\n\u2022 Parameters are auto-populated by AI using $fromAI() expressions\n\u2022 With 9 API endpoints available as tools\n\u2022 Responses maintain original API structure\n\n\n### \ud83d\udee0\ufe0f Customization\n\u2022 Add data transformation nodes if needed\n\u2022 Implement custom error handling\n\u2022 Add logging or monitoring nodes\n\n\u2022 Modify parameter defaults in any HTTP request node as needed\n\n### \ud83d\udcac Need Help?\nPing me on [discord](https://discord.me/cfomodz) for integration guidance and custom automations. Check the [n8n documentation](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/) for more information."
      },
      "typeVersion": 1
    },
    {
      "id": "94fe9d0f-2004-409b-a8cc-8217f65d20c1",
      "name": "Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1120,
        -240
      ],
      "parameters": {
        "width": 420,
        "height": 1300,
        "content": "## \ud83d\udee0\ufe0f Api2Pdf - PDF Generation, Powered by AWS Lambda MCP Server \u2705 9 operations\n\n### About\nIntroduction [Api2Pdf](https://www.api2pdf.com) is a powerful PDF generation API with no rate limits or file size constraints. Api2Pdf runs on AWS Lambda, a serverless architecture powered by Amazon to scale to millions of requests while being up to 90% cheaper than alternatives. **Supports wkhtmltopdf, Headless Chrome, LibreOffice, and PDF Merge.** You can also generate barcodes with ZXING (Zebra Crossing). SDKs & Client Libraries We've made a number of open source libraries available for the API - Python: [https://github.com/api2pdf/api2pdf.python](https://github.com/api2pdf/api2pdf.python) - .NET: [https://github.com/api2pdf/api2pdf.dotnet](https://github.com/api2pdf/api2pdf.dotnet) - Nodejs: [https://github.com/api2pdf/api2pdf.node](https://github.com/api2pdf/api2pdf.node) - PHP: [https://github.com/Api2Pdf/api2pdf.php](https://github.com/Api2Pdf/api2pdf.php) - Ruby: (Coming soon) Authorization Create an account at [portal.api2pdf.com](https://portal.api2pdf.com/register) to get an API key. **Authorize your API calls** - GET requests, include apikey=YOUR-API-KEY as a query string parameter - POST requests, add **Authorization** to your header. ``` Authorization: YOUR-API-KEY ``` Quickstart If you are looking for just a quick call to grab PDFs of a URL, you can do a GET request like: ``` https://v2018.api2pdf.com/chrome/url?url={UrlToConvert}&apikey={YourApiKey} ``` For more advanced usage and settings, see the API specification below.\n\n### \ud83d\udd27 How it Works\n\nThis workflow converts the Api2Pdf - PDF Generation, Powered by AWS Lambda API into an MCP-compatible interface for AI agents.\n\n\u2022 **MCP Trigger**: Serves as your server endpoint for AI agent requests\n\u2022 **HTTP Request Nodes**: Handle API calls to https://v2018.api2pdf.com\n\u2022 **AI Expressions**: Automatically populate parameters via `$fromAI()` placeholders\n\u2022 **Native Integration**: Returns responses directly to the AI agent\n\n\n### \ud83d\udccb Available Operations (9 endpoints)\n\n**Headless Chrome (3 operations)**\nconvert\n\n**Libre Office (1 operations)**\nconvert\n\n**Merge / Combine Pdfs (1 operations)**\nmerge\n\n**W K Html To Pdf (3 operations)**\nconvert\n\n**Zxing (zebra Crossing) Bar Codes (1 operations)**\ngenerate\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9fb074ab-63a5-4128-a578-9ccedea16425",
      "name": "Api2Pdf - PDF Generation, Powered by AWS Lambda MCP Server",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        -580,
        -240
      ],
      "parameters": {
        "path": "api2pdf---pdf-generation,-powered-by-aws-lambda-mcp"
      },
      "typeVersion": 1
    },
    {
      "id": "a7de75a3-d818-43e1-a3da-93f727a63fda",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -660,
        -100
      ],
      "parameters": {
        "color": 2,
        "width": 700,
        "height": 200,
        "content": "## Headless Chrome"
      },
      "typeVersion": 1
    },
    {
      "id": "93b208ae-c5a1-4403-9533-eed464c4a850",
      "name": "Convert raw HTML to PDF",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -520,
        -60
      ],
      "parameters": {
        "url": "=https://v2018.api2pdf.com/chrome/html",
        "method": "POST",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "toolDescription": "Convert raw HTML to PDF"
      },
      "typeVersion": 4.2
    },
    {
      "id": "9362c0b2-02eb-4d27-8098-13791767ef25",
      "name": "Convert URL to PDF",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -320,
        -60
      ],
      "parameters": {
        "url": "=https://v2018.api2pdf.com/chrome/url",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "url",
              "value": "={{ $fromAI('url', 'Url of the page to convert to PDF. Must start with http:// or https://.', 'string') }}"
            },
            {
              "name": "output",
              "value": "={{ $fromAI('output', 'Specify output=json to receive a JSON output. Defaults to PDF file.', 'string') }}"
            }
          ]
        },
        "toolDescription": "Convert URL to PDF\n\nParameters:\n- Query parameters:\n  \u2022 url (required) - Url of the page to convert to PDF. Must start with http:// or https://.\n  \u2022 output (optional) - Specify output=json to receive a JSON output. Defaults to PDF file."
      },
      "typeVersion": 4.2
    },
    {
      "id": "8e713c5a-1416-4c77-bff1-ca2e01d82699",
      "name": "Convert URL to PDF 1",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -120,
        -60
      ],
      "parameters": {
        "url": "=https://v2018.api2pdf.com/chrome/url",
        "method": "POST",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "toolDescription": "Convert URL to PDF"
      },
      "typeVersion": 4.2
    },
    {
      "id": "d577b5ba-7dc9-48ca-8f59-483423cd3380",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -660,
        140
      ],
      "parameters": {
        "color": 3,
        "width": 300,
        "height": 200,
        "content": "## Libre Office"
      },
      "typeVersion": 1
    },
    {
      "id": "a25f441d-4db0-48a0-a3df-4c0df9922d94",
      "name": "Convert office document or image to PDF",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -520,
        180
      ],
      "parameters": {
        "url": "=https://v2018.api2pdf.com/libreoffice/convert",
        "method": "POST",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "toolDescription": "Convert office document or image to PDF"
      },
      "typeVersion": 4.2
    },
    {
      "id": "292f4eb9-8c03-4687-ac9d-129780ca1110",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -660,
        380
      ],
      "parameters": {
        "color": 4,
        "width": 300,
        "height": 200,
        "content": "## Merge / Combine Pdfs"
      },
      "typeVersion": 1
    },
    {
      "id": "3efbf8bc-12ba-4549-b22c-efd94393b968",
      "name": "Merge multiple PDFs together",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -520,
        420
      ],
      "parameters": {
        "url": "=https://v2018.api2pdf.com/merge",
        "method": "POST",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "toolDescription": "Merge multiple PDFs together"
      },
      "typeVersion": 4.2
    },
    {
      "id": "69bfade2-eef2-4eda-873f-23c4102ccbe9",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -660,
        620
      ],
      "parameters": {
        "color": 5,
        "width": 700,
        "height": 200,
        "content": "## W K Html To Pdf"
      },
      "typeVersion": 1
    },
    {
      "id": "54e6233c-dd39-4de5-8c71-7e6cc1437163",
      "name": "Convert raw HTML to PDF 1",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -520,
        660
      ],
      "parameters": {
        "url": "=https://v2018.api2pdf.com/wkhtmltopdf/html",
        "method": "POST",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "toolDescription": "Convert raw HTML to PDF"
      },
      "typeVersion": 4.2
    },
    {
      "id": "dd97a4ce-df42-4675-93cf-8109a9771567",
      "name": "Convert URL to PDF 2",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -320,
        660
      ],
      "parameters": {
        "url": "=https://v2018.api2pdf.com/wkhtmltopdf/url",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "url",
              "value": "={{ $fromAI('url', 'Url of the page to convert to PDF. Must start with http:// or https://.', 'string') }}"
            },
            {
              "name": "output",
              "value": "={{ $fromAI('output', 'Specify output=json to receive a JSON output. Defaults to PDF file.', 'string') }}"
            }
          ]
        },
        "toolDescription": "Convert URL to PDF\n\nParameters:\n- Query parameters:\n  \u2022 url (required) - Url of the page to convert to PDF. Must start with http:// or https://.\n  \u2022 output (optional) - Specify output=json to receive a JSON output. Defaults to PDF file."
      },
      "typeVersion": 4.2
    },
    {
      "id": "ceba0dad-6e3f-4f94-ac91-c74f533a092d",
      "name": "Convert URL to PDF 3",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -120,
        660
      ],
      "parameters": {
        "url": "=https://v2018.api2pdf.com/wkhtmltopdf/url",
        "method": "POST",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "toolDescription": "Convert URL to PDF"
      },
      "typeVersion": 4.2
    },
    {
      "id": "0d31e401-d0f2-4e3a-9656-eb910de634b4",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -660,
        860
      ],
      "parameters": {
        "color": 6,
        "width": 300,
        "height": 200,
        "content": "## Zxing (zebra Crossing) Bar Codes"
      },
      "typeVersion": 1
    },
    {
      "id": "6717ea20-b643-48c6-8c25-9f7e21e7801e",
      "name": "Generate bar codes and QR codes with ZXING.",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -520,
        900
      ],
      "parameters": {
        "url": "=https://v2018.api2pdf.com/zebra",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "format",
              "value": "={{ $fromAI('format', 'Most common is CODE_39 or QR_CODE', 'string') }}"
            },
            {
              "name": "value",
              "value": "={{ $fromAI('value', 'Specify the text value you want to convert', 'string') }}"
            },
            {
              "name": "showlabel",
              "value": "={{ $fromAI('showlabel', 'Show label of text below barcode', 'boolean') }}"
            },
            {
              "name": "height",
              "value": "={{ $fromAI('height', 'Height of the barcode generated image', 'number') }}"
            },
            {
              "name": "width",
              "value": "={{ $fromAI('width', 'Width of the barcode generated image', 'number') }}"
            }
          ]
        },
        "toolDescription": "Generate bar codes and QR codes with ZXING.\n\nParameters:\n- Query parameters:\n  \u2022 format (required) - Most common is CODE_39 or QR_CODE\n  \u2022 value (required) - Specify the text value you want to convert\n  \u2022 showlabel (optional) - Show label of text below barcode\n  \u2022 height (optional) - Height of the barcode generated image\n  \u2022 width (optional) - Width of the barcode generated image"
      },
      "typeVersion": 4.2
    }
  ],
  "active": false,
  "shared": [
    {
      "role": "workflow:owner",
      "project": {
        "id": "G5fce9xGuBAsWBXe",
        "icon": null,
        "name": "David Ashby <david.ashby.lds@gmail.com>",
        "type": "personal",
        "createdAt": "2025-06-04T02:55:02.013Z",
        "updatedAt": "2025-06-04T02:56:01.361Z",
        "projectRelations": [
          {
            "role": "project:personalOwner",
            "user": {
              "id": "715c1c00-cb48-4712-9a32-f1f4b6db2b30",
              "role": "global:owner",
              "email": "david.ashby.lds@gmail.com",
              "disabled": false,
              "lastName": "Ashby",
              "settings": {
                "npsSurvey": {
                  "responded": true,
                  "lastShownAt": 1749357655581
                },
                "userActivated": true,
                "userActivatedAt": 1749075994495,
                "easyAIWorkflowOnboarded": true,
                "firstSuccessfulWorkflowId": "3N3vVikZb3MckFYm"
              },
              "createdAt": "2025-06-04T02:55:01.745Z",
              "firstName": "David",
              "isPending": false,
              "updatedAt": "2025-06-08T04:40:58.399Z",
              "mfaEnabled": false,
              "personalizationAnswers": {
                "version": "v4",
                "personalization_survey_n8n_version": "1.95.3",
                "personalization_survey_submitted_at": "2025-06-04T02:56:07.075Z"
              }
            },
            "userId": "715c1c00-cb48-4712-9a32-f1f4b6db2b30",
            "createdAt": "2025-06-04T02:55:02.013Z",
            "projectId": "G5fce9xGuBAsWBXe",
            "updatedAt": "2025-06-04T02:55:02.013Z"
          }
        ]
      },
      "createdAt": "2025-07-01T14:38:52.773Z",
      "projectId": "G5fce9xGuBAsWBXe",
      "updatedAt": "2025-07-01T14:38:52.773Z",
      "workflowId": "L7ZgmrqmEBeiLlPk"
    }
  ],
  "settings": {
    "timezone": "America/New_York"
  },
  "createdAt": "2025-07-01T14:38:52.768Z",
  "updatedAt": "2025-07-01T17:11:36.000Z",
  "versionId": "8986c82d-cdf4-4eeb-a574-555d65fd4829",
  "isArchived": false,
  "staticData": null,
  "connections": {
    "Convert URL to PDF": {
      "ai_tool": [
        [
          {
            "node": "Api2Pdf - PDF Generation, Powered by AWS Lambda MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Convert URL to PDF 1": {
      "ai_tool": [
        [
          {
            "node": "Api2Pdf - PDF Generation, Powered by AWS Lambda MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Convert URL to PDF 2": {
      "ai_tool": [
        [
          {
            "node": "Api2Pdf - PDF Generation, Powered by AWS Lambda MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Convert URL to PDF 3": {
      "ai_tool": [
        [
          {
            "node": "Api2Pdf - PDF Generation, Powered by AWS Lambda MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Convert raw HTML to PDF": {
      "ai_tool": [
        [
          {
            "node": "Api2Pdf - PDF Generation, Powered by AWS Lambda MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Convert raw HTML to PDF 1": {
      "ai_tool": [
        [
          {
            "node": "Api2Pdf - PDF Generation, Powered by AWS Lambda MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Merge multiple PDFs together": {
      "ai_tool": [
        [
          {
            "node": "Api2Pdf - PDF Generation, Powered by AWS Lambda MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Convert office document or image to PDF": {
      "ai_tool": [
        [
          {
            "node": "Api2Pdf - PDF Generation, Powered by AWS Lambda MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Generate bar codes and QR codes with ZXING.": {
      "ai_tool": [
        [
          {
            "node": "Api2Pdf - PDF Generation, Powered by AWS Lambda MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  },
  "triggerCount": 0
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Complete MCP server exposing 9 Api2Pdf - PDF Generation, Powered by AWS Lambda API operations to AI agents.

Source: https://n8n.io/workflows/5522/ — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator?

Mcp Trigger, HTTP Request Tool
Web Scraping

Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator?

Mcp Trigger, HTTP Request Tool
Web Scraping

Complete MCP server exposing 21 api.clarify.io API operations to AI agents.

Mcp Trigger, HTTP Request Tool
Web Scraping

Complete MCP server exposing 9 NPR Listening Service API operations to AI agents.

Mcp Trigger, HTTP Request Tool
Web Scraping

Complete MCP server exposing 14 Domains-Index API operations to AI agents.

Mcp Trigger, HTTP Request Tool