Kostenloser PDF-Generator in n8n – ohne externe Bibliotheken oder kostenpflichtige Dienste

Experte

Dies ist ein Document Extraction, Multimodal AI-Bereich Automatisierungsworkflow mit 20 Nodes. Hauptsächlich werden Set, Slack, GoogleDrive, HttpRequest, ManualTrigger und andere Nodes verwendet. Generieren und Teilen von professionellen PDFs mit OpenAI, Google Docs und Slack

Voraussetzungen
  • Slack Bot Token oder Webhook URL
  • Google Drive API-Anmeldedaten
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • OpenAI API Key
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "BY9w2cNMUAvBWpJ7",
  "meta": {
    "instanceId": "4a2e6764ba7a6bc9890d9225f4b21d570ce88fc9bd57549c89057fcee58fed0f",
    "templateCredsSetupCompleted": true
  },
  "name": "Free PDF Generator in n8n – No External Libraries or Paid Services",
  "tags": [],
  "nodes": [
    {
      "id": "1a0c48b7-71a1-43ea-84f4-bc9d471f3d94",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        176,
        144
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1",
          "cachedResultName": "gpt-4.1"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "PPSwAKeLQYgAPobT",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "9c32fc19-37c9-4a40-90b1-a00ac76923d9",
      "name": "PDF-Datei archivieren",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1152,
        -80
      ],
      "parameters": {
        "name": "={{ $json.name }}.pdf",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1IPcko8bzogO3W4mxhrW2Q017QA0Lc5MI",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1IPcko8bzogO3W4mxhrW2Q017QA0Lc5MI",
          "cachedResultName": "SmartSales"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "fC471es5gk5Mm900",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "7e0a5a61-9004-4392-b1a5-786fd40cfcd9",
      "name": "Anhang herunterladen",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1376,
        -80
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "fC471es5gk5Mm900",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "bcb58059-951e-4e60-a925-595e4d9a7829",
      "name": "Dokumentdatei erstellen",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        704,
        -80
      ],
      "parameters": {
        "url": "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&supportsAllDrives=true",
        "body": "=--foo_bar_baz\nContent-Type: application/json; charset=UTF-8\n\n{\n  \"name\": \"{{ $json.Today }}\",\n  \"mimeType\": \"application/vnd.google-apps.document\",\n  \"parents\": [\"{{ $json['Drive Folder ID'] }}\"]\n}\n\n--foo_bar_baz\nContent-Type: text/markdown; charset=UTF-8\n\n{{ $('Generate sample markdown document').item.json.output }}\n\n--foo_bar_baz--",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendQuery": true,
        "contentType": "raw",
        "sendHeaders": true,
        "authentication": "predefinedCredentialType",
        "rawContentType": "multipart/related; boundary=foo_bar_baz",
        "queryParameters": {
          "parameters": [
            {
              "name": "uploadType",
              "value": "multipart"
            },
            {
              "name": "supportsAllDrives",
              "value": "true"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "boundary",
              "value": "foo_bar_baz"
            }
          ]
        },
        "nodeCredentialType": "googleDriveOAuth2Api"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "fC471es5gk5Mm900",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e540e238-4bde-4dae-ac86-ac88764e7dc9",
      "name": "Dokument in PDF konvertieren",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        928,
        -80
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {
          "googleFileConversion": {
            "conversion": {
              "docsToFormat": "application/pdf"
            }
          }
        },
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "fC471es5gk5Mm900",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "e214322b-302f-4c54-906c-75e1e6c93ba9",
      "name": "Bei Klick auf 'Workflow ausführen'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -144,
        -80
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "a36ca7db-6c6d-491a-8cd0-243916a2cd3a",
      "name": "Nachricht senden",
      "type": "n8n-nodes-base.slack",
      "position": [
        1600,
        -80
      ],
      "webhookId": "524619ce-d662-428d-bb56-ea97e5366dec",
      "parameters": {
        "options": {
          "fileName": "={{ $json.name }}",
          "channelId": "C097VAKKPUP",
          "initialComment": "Formatted PDF file from markdown"
        },
        "resource": "file",
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "4JSKt9sIRV1KGswQ",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "d1253bec-da2d-4530-baeb-6e5adc989a1c",
      "name": "Beispiel-Markdown-Dokument generieren",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        80,
        -80
      ],
      "parameters": {
        "text": "=You are a Markdown expert. Write a single sample document in Markdown format that demonstrates all major Markdown syntax.\nThe document should be well-organized and easy to follow, with each section labeled clearly.\n\nInclude examples for:\n\t1.\tHeadings (H1 to H6)\n\t2.\tParagraphs and line breaks\n\t3.\tBold, italic, bold italic, and strikethrough\n\t4.\tBlockquotes (single and nested)\n\t5.\tLists: unordered, ordered, nested lists, and task lists\n\t6.\tLinks: inline, reference-style, and automatic links\n\t7.\tImages: inline and reference-style\n\t8.\tCode: inline code, fenced code blocks with language highlighting\n\t9.\tTables with alignment options\n\t10.\tHorizontal rules\n\t11.\tFootnotes\n\t12.\tEscaping special characters\n\t13.\tEmoji usage (if supported)\n\t14.\tHTML elements inside Markdown (example: <details> or <sup>)\n\nAt the top, add a short title and description of the document.\nUse clear section headings and short explanations before each example.\nMake sure the output is entirely valid Markdown so it can be rendered directly without edits.\n\nOutput only the Markdown content, nothing else.",
        "options": {
          "systemMessage": ""
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "17545deb-4c68-4038-abd7-1c7e9de0b99f",
      "name": "Google Drive-Ordner konfigurieren",
      "type": "n8n-nodes-base.set",
      "position": [
        480,
        -80
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1ff0b9a4-7d60-44ec-b047-e49252f1ace9",
              "name": "Drive Folder ID",
              "type": "string",
              "value": "1IPcko8bzogO3W4mxhrW2Q017QA0Lc5MI"
            },
            {
              "id": "d64a1ac4-15db-4c84-a1db-fbd6b48084f5",
              "name": "Today",
              "type": "string",
              "value": "={{ $now.format(\"ddMMyyyyhhmmss\") }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "4bf9bfbc-3791-4c28-b32a-085f1864e726",
      "name": "Notiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1216,
        -720
      ],
      "parameters": {
        "width": 912,
        "height": 1472,
        "content": "# Free PDF Generator in n8n – No External Libraries or Paid Services\n> A 100% free n8n workflow for generating professionally formatted PDFs without relying on external libraries or paid converters. It uses OpenAI to create Markdown content, Google Docs to format and convert to PDF, and integrates with Google Drive and Slack for archiving and sharing, ideal for reports, BRDs, proposals, or any document you need directly inside n8n.\n### Watch the demo video below:\n[![Watch the video](https://wisestackai.s3.ap-southeast-1.amazonaws.com/Presentation1+(1).jpg)](https://www.youtube.com/watch?v=BB32RPQYI94)\n\n## **Who’s it for**\n- Teams that need **auto-generated documents** (reports, guides, checklists) in PDF format.\n- Operations or enablement teams who want files **archived in Google Drive** and **shared in Slack** automatically.\n- Anyone experimenting with **LLM-powered document generation** integrated into business workflows.\n\n## **How it works / What it does**\n1. **Manual trigger** starts the workflow.\n2. **LLM generates** a sample Markdown document (via OpenAI Chat Model).\n3. **Google Drive folder** is configured for storage.\n4. **Google Doc is created** from the generated Markdown content.\n5. **Document is exported to PDF** using Google Drive. ([Sample PDF generated from comprehensive markdown](https://wisestackai.s3.ap-southeast-1.amazonaws.com/12082025052957.pdf))\n6. **PDF is archived** in a designated Drive folder.\n7. **Archived PDF is downloaded** for sharing.\n8. **Slack message is sent** with the PDF attached.\n\n## **How to set up**\n1. **Add nodes in sequence**:\n   - Manual Trigger\n   - OpenAI Chat Model (prompt to generate sample Markdown)\n   - Set/Manual input for Google Drive folder ID(s)\n   - HTTP Request or Google Drive Upload (convert to Google Docs)\n   - Google Drive Download (PDF export)\n   - Google Drive Upload (archive PDF)\n   - Google Drive Download (fetch archived file)\n   - Slack Upload (send message with attachment)\n2. **Configure credentials** for OpenAI, Google Drive, and Slack.\n3. **Map output fields**:\n   - `data.markdown` → Google Docs creation\n   - `docId` → PDF export\n   - `fileId` → Slack upload\n4. **Test run** to ensure PDF is generated, archived, and posted to Slack.\n\n## **Requirements**\n- **Credentials**:\n  - OpenAI API key (or compatible LLM provider)\n  - Google Drive (OAuth2) with read/write permissions\n  - Slack bot token with `files:write` permission\n- **Access**:\n  - Write access to target Google Drive folders\n  - Slack bot invited to the target channel\n\n## **How to customize the workflow**\n- **Change the prompt** in the OpenAI Chat Model to generate different types of content (reports, meeting notes, checklists).\n- **Automate triggering**:\n  - Replace Manual Trigger with Cron for scheduled document generation.\n  - Use Webhook Trigger to run on-demand from external apps.\n- **Modify storage logic**:\n  - Save both `.md` and `.pdf` versions in Google Drive.\n  - Use separate folders for drafts vs. final versions.\n- **Enhance distribution**:\n  - Send PDFs to multiple Slack channels or via email.\n  - Integrate with project management tools for automated task creation."
      },
      "typeVersion": 1
    },
    {
      "id": "184cfef9-d92a-462d-9e8b-b6034eaa5ff9",
      "name": "Notiz1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -272,
        -208
      ],
      "parameters": {
        "color": 4,
        "width": 288,
        "height": 480,
        "content": "**Trigger the Workflow**  \n   Start the process manually or replace with another trigger (e.g., Cron or Webhook) to run automatically."
      },
      "typeVersion": 1
    },
    {
      "id": "49d2e923-1356-4671-96e4-a6a39893e291",
      "name": "Notiz2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        48,
        -208
      ],
      "parameters": {
        "color": 4,
        "width": 352,
        "height": 480,
        "content": "**Generate Markdown Content with AI**  \n   Use the OpenAI Chat Model to create a structured Markdown document based on your prompt, perfect for reports, BRDs, proposals, or meeting notes."
      },
      "typeVersion": 1
    },
    {
      "id": "350d767b-0ed5-4cbd-9f86-f5ea4044fbff",
      "name": "Notiz3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        432,
        -208
      ],
      "parameters": {
        "color": 4,
        "width": 432,
        "height": 480,
        "content": "**Create Google Doc from Markdown**  \n   Upload the generated Markdown content to Google Drive and convert it into a Google Doc for proper formatting.\n\n[Sample PDF generated from comprehensive markdown](https://wisestackai.s3.ap-southeast-1.amazonaws.com/12082025052957.pdf)"
      },
      "typeVersion": 1
    },
    {
      "id": "2c5fc8ea-4c52-4b4b-8e13-c2ae0041aa1f",
      "name": "Notiz4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        896,
        -208
      ],
      "parameters": {
        "color": 4,
        "width": 384,
        "height": 480,
        "content": "**Export and Archive as PDF**  \n   Convert the Google Doc to a PDF file, then upload it to your chosen Google Drive folder for storage and record-keeping."
      },
      "typeVersion": 1
    },
    {
      "id": "c3e95369-34a3-4f11-9204-78ee6b6e2217",
      "name": "Notiz5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1328,
        -208
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 480,
        "content": "**Share the PDF via Slack**  \n   Download the archived PDF and post it to a Slack channel with a message and links for quick access."
      },
      "typeVersion": 1
    },
    {
      "id": "9bc94ec2-4bce-4ed4-9afd-9270d2e46052",
      "name": "Notiz7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1808,
        -240
      ],
      "parameters": {
        "width": 768,
        "height": 528,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/pdf-1.png \"Optional title text\")"
      },
      "typeVersion": 1
    },
    {
      "id": "bf330105-df5e-4956-858a-b29d26e651d4",
      "name": "Notiz8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        352
      ],
      "parameters": {
        "width": 768,
        "height": 992,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/pdf-2.png \"Optional title text\")"
      },
      "typeVersion": 1
    },
    {
      "id": "12aea9ee-032f-4522-980b-69bee5d89913",
      "name": "Notiz9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        544,
        352
      ],
      "parameters": {
        "width": 768,
        "height": 992,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/pdf-3.png \"Optional title text\")"
      },
      "typeVersion": 1
    },
    {
      "id": "e754721c-dce2-4d19-a47d-b146e6bba331",
      "name": "Notiz10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1328,
        352
      ],
      "parameters": {
        "width": 768,
        "height": 992,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/pdf-4.png \"Optional title text\")"
      },
      "typeVersion": 1
    },
    {
      "id": "53e3dcc8-1e6e-4cb4-9f44-5fa49d731a9a",
      "name": "Notiz11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2112,
        352
      ],
      "parameters": {
        "width": 768,
        "height": 992,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/pdf-5.png \"Optional title text\")"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "93a6ffab-7fbe-42af-8025-f3e2a72ceea7",
  "connections": {
    "1a0c48b7-71a1-43ea-84f4-bc9d471f3d94": {
      "ai_languageModel": [
        [
          {
            "node": "d1253bec-da2d-4530-baeb-6e5adc989a1c",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "9c32fc19-37c9-4a40-90b1-a00ac76923d9": {
      "main": [
        [
          {
            "node": "7e0a5a61-9004-4392-b1a5-786fd40cfcd9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bcb58059-951e-4e60-a925-595e4d9a7829": {
      "main": [
        [
          {
            "node": "e540e238-4bde-4dae-ac86-ac88764e7dc9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e540e238-4bde-4dae-ac86-ac88764e7dc9": {
      "main": [
        [
          {
            "node": "9c32fc19-37c9-4a40-90b1-a00ac76923d9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7e0a5a61-9004-4392-b1a5-786fd40cfcd9": {
      "main": [
        [
          {
            "node": "a36ca7db-6c6d-491a-8cd0-243916a2cd3a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "17545deb-4c68-4038-abd7-1c7e9de0b99f": {
      "main": [
        [
          {
            "node": "bcb58059-951e-4e60-a925-595e4d9a7829",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d1253bec-da2d-4530-baeb-6e5adc989a1c": {
      "main": [
        [
          {
            "node": "17545deb-4c68-4038-abd7-1c7e9de0b99f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e214322b-302f-4c54-906c-75e1e6c93ba9": {
      "main": [
        [
          {
            "node": "d1253bec-da2d-4530-baeb-6e5adc989a1c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Dokumentenextraktion, Multimodales KI

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes20
Kategorie2
Node-Typen8
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Autor
Trung Tran

Trung Tran

@trungtran

Empowering small and medium businesses with smart automation and practical AI, no big tech team required.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34