Générateur de PDF gratuit dans n8n – sans bibliothèques externes ou services payants

Avancé

Ceci est unDocument Extraction, Multimodal AIworkflow d'automatisation du domainecontenant 20 nœuds.Utilise principalement des nœuds comme Set, Slack, GoogleDrive, HttpRequest, ManualTrigger. Générer et partager des PDF professionnels avec OpenAI, Google Docs et Slack

Prérequis
  • Token Bot Slack ou URL Webhook
  • Informations d'identification Google Drive API
  • Peut nécessiter les informations d'identification d'authentification de l'API cible
  • Clé API OpenAI
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "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": "Modèle de chat OpenAI",
      "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": "Archivage du fichier PDF",
      "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": "Télécharger le fichier joint",
      "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": "Créer un fichier document",
      "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": "Convertir le document en PDF",
      "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": "Au clic sur 'Exécuter le workflow'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -144,
        -80
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "a36ca7db-6c6d-491a-8cd0-243916a2cd3a",
      "name": "Envoyer un message",
      "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": "Générer un exemple de document Markdown",
      "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": "Configurer le dossier Google Drive",
      "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": "Note adhésive",
      "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": "Note adhésive1",
      "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": "Note adhésive2",
      "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": "Note adhésive3",
      "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": "Note adhésive4",
      "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": "Note adhésive5",
      "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": "Note adhésive7",
      "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": "Note adhésive8",
      "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": "Note adhésive9",
      "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": "Note adhésive10",
      "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": "Note adhésive11",
      "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
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - Extraction de documents, IA Multimodale

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds20
Catégorie2
Types de nœuds8
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
Trung Tran

Trung Tran

@trungtran

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

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34