Créer un PDF à partir d'images gratuitement avec Google Slides et Google Drive
Ceci est unDesign, AI, Marketingworkflow d'automatisation du domainecontenant 20 nœuds.Utilise principalement des nœuds comme Set, Sort, Limit, Filter, GoogleDrive, combinant la technologie d'intelligence artificielle pour une automatisation intelligente. Créer gratuitement des PDF à partir d'images via Google Slides et Google Drive
- •Informations d'identification Google Drive API
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
Nœuds utilisés (20)
{
"meta": {
"instanceId": "632f65756c0dfa07ac80bbf68a720ffbe7ae34338cadcb46b58428622d4ef469",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "65d94bcc-e528-46a5-be6e-393a06ec620c",
"name": "When clicking ‘Test workflow’",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-360,
200
],
"parameters": {},
"typeVersion": 1
},
{
"id": "36d5034f-6d1a-4619-a009-f6e2e30ec7a5",
"name": "Trier par date de création",
"type": "n8n-nodes-base.sort",
"position": [
1140,
200
],
"parameters": {
"options": {},
"sortFieldsUi": {
"sortField": [
{
"fieldName": "createdTime"
}
]
}
},
"typeVersion": 1
},
{
"id": "bc3a71c4-e073-4ef0-b74e-62e6005ee3c7",
"name": "Boucler sur les éléments",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1360,
200
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "5698ad5a-7635-423c-a63c-a1d5266551ea",
"name": "Mettre à jour les permissions de l'image",
"type": "n8n-nodes-base.googleDrive",
"position": [
1800,
200
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Sort by Created Date').item.json.id }}"
},
"options": {},
"operation": "share",
"permissionsUi": {
"permissionsValues": {
"role": "reader",
"type": "anyone"
}
}
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "2aQwB7XQiOAR6v4J",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "7862bbd3-2300-4dd5-9ad9-02c81d608f3d",
"name": "Convertir les diapositives en PDF",
"type": "n8n-nodes-base.googleDrive",
"position": [
2020,
0
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $('CopyPdfTemplate').item.json.id }}"
},
"options": {
"googleFileConversion": {
"conversion": {
"docsToFormat": "application/pdf",
"slidesToFormat": "application/pdf"
}
}
},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "2aQwB7XQiOAR6v4J",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "07e69808-f221-4424-838c-e1d53ce7ca0c",
"name": "Limite : 1 page",
"type": "n8n-nodes-base.limit",
"position": [
1580,
0
],
"parameters": {
"keep": "lastItems"
},
"typeVersion": 1
},
{
"id": "0028a6c9-460b-4ee9-968c-f46b6102fd44",
"name": "Filtre : images uniquement",
"type": "n8n-nodes-base.filter",
"position": [
920,
200
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "12999f01-4775-46ab-bc60-1c1e68a3c4d2",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.mimeType }}",
"rightValue": "image/png"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "9d0898a8-4f62-4c03-bf9f-5f62177854a7",
"name": "Téléverser le fichier PDF final",
"type": "n8n-nodes-base.googleDrive",
"position": [
2240,
0
],
"parameters": {
"name": "={{ $('Set Pdf File Name').item.json.presentation_title }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Get Folder Id w Presentation').item.json.parents[0] }}"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "2aQwB7XQiOAR6v4J",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "0d51a9da-0a99-47ab-a356-fd084d3d3a58",
"name": "Note autocollante",
"type": "n8n-nodes-base.stickyNote",
"position": [
-820,
-240
],
"parameters": {
"color": 4,
"width": 400,
"height": 1020,
"content": "## 📚 Create a PDF from Google Drive Images\n\nThis workflow takes all images from a Google Drive folder you specify, sorts them by creation date, and compiles them into a single PDF using a Google Slides template.\n\n**Key Things to Know Before You Start:**\n\n **Set Your File Name:**\n- Go to the **'Set Pdf File Name'** node \n- Update the `presentation_title` value with your desired PDF name.\n\n🔑 **Connect Google Accounts:**\n- Authenticate your Google Drive & Google Slides accounts in all relevant Google nodes and HTTP nodes.\n\n📏 **Use a Google Slides Template for Custom Page Size:**\n- Google Slides defaults to a 16:9 aspect ratio. If you need specific PDF dimensions (e.g., A4, US Letter, square), **first create a Google Slides file with your desired page size.**\n- Then, select this custom Google Slides file in the **'CopyPdfTemplate'** node (under 'File').\n\n🖼️ **Image & Folder Setup:**\n- In the **'CopyPdfTemplate'** node, also select the Google Drive **Folder** where your source images are located. The copied presentation and final PDF will also be created here.\n- The workflow filters for `.png` images by default. To use other types (like JPG), update the **'Filter: Only Images'** node.\n\n⚠️ **Image Size & Workflow Limits:**\n- Google Slides may have limitations on individual image size and the overall PDF file size when exporting.\n- This workflow works well for smaller presentations (10–20 pages). Larger files may run into errors or performance issues during export.\n\n💰 **Cost:** Free to use (relies on standard Google API calls, which are generally within free tier limits for typical usage)."
},
"typeVersion": 1
},
{
"id": "478b42b2-ad5a-4e2d-bbe0-88f412cb57b2",
"name": "Définir le nom du fichier PDF",
"type": "n8n-nodes-base.set",
"position": [
-140,
200
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "b994aa5e-1580-43f6-90b0-f0ea8efd9614",
"name": "presentation_title",
"type": "string",
"value": "[Your PDF Name Here]"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "eb4ef58f-77cd-408a-825a-720ced2a07f1",
"name": "Supprimer la première diapositive vide",
"type": "n8n-nodes-base.httpRequest",
"position": [
1800,
0
],
"parameters": {
"url": "=https://slides.googleapis.com/v1/presentations/{{ $('Get Created Presentation').item.json.presentationId }}:batchUpdate",
"method": "POST",
"options": {},
"jsonBody": "={\n \"requests\": [\n {\n \"deleteObject\": {\n \"objectId\": \"{{ $('Get Created Presentation').item.json.slides[0].objectId }}\" \n } \n } \n ]\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleSlidesOAuth2Api"
},
"credentials": {
"googleSlidesOAuth2Api": {
"id": "puHiyhiyJ7v8EzCp",
"name": "Google Slides account"
}
},
"typeVersion": 4.2
},
{
"id": "fccfdcd0-9407-45bb-9065-ba0d0d63b1a6",
"name": "Copier le modèle PDF",
"type": "n8n-nodes-base.googleDrive",
"position": [
80,
200
],
"parameters": {
"name": "={{ $json.presentation_title }}",
"fileId": {
"__rl": true,
"mode": "list",
"value": "1_Mfgb7lUD8tXRg3cXeIQXjQ9vgCG-TzwOoWVok_ROQ8",
"cachedResultUrl": "https://docs.google.com/presentation/d/1_Mfgb7lUD8tXRg3cXeIQXjQ9vgCG-TzwOoWVok_ROQ8/edit?usp=drivesdk",
"cachedResultName": "Book_Template"
},
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "",
"cachedResultName": ""
},
"operation": "copy",
"sameFolder": false
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "2aQwB7XQiOAR6v4J",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "e9fb8627-1385-474c-badc-7aa1645a99da",
"name": "Obtenir la présentation créée",
"type": "n8n-nodes-base.googleSlides",
"position": [
300,
200
],
"parameters": {
"operation": "get",
"presentationId": "={{ $('CopyPdfTemplate').item.json.id }}"
},
"credentials": {
"googleSlidesOAuth2Api": {
"id": "puHiyhiyJ7v8EzCp",
"name": "Google Slides account"
}
},
"typeVersion": 2
},
{
"id": "c6429ca5-db95-4e33-b470-43a5df1feed3",
"name": "Obtenir l'ID du dossier avec la présentation",
"type": "n8n-nodes-base.httpRequest",
"position": [
500,
200
],
"parameters": {
"url": "=https://www.googleapis.com/drive/v3/files/{{ $json.presentationId }}?fields=parents",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleDriveOAuth2Api"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "2aQwB7XQiOAR6v4J",
"name": "Google Drive account"
}
},
"typeVersion": 4.2
},
{
"id": "bd8c64b0-f8a4-4bf6-bb3a-cabba5597fed",
"name": "Obtenir tous les fichiers du dossier",
"type": "n8n-nodes-base.googleDrive",
"position": [
700,
200
],
"parameters": {
"filter": {
"folderId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.parents[0] }}"
}
},
"options": {
"fields": [
"*"
]
},
"resource": "fileFolder",
"returnAll": true,
"queryString": "="
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "2aQwB7XQiOAR6v4J",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "f1680bfa-8ce1-4b0e-af59-83332e9511a0",
"name": "Créer une diapositive vide",
"type": "n8n-nodes-base.httpRequest",
"position": [
1580,
200
],
"parameters": {
"url": "=https://slides.googleapis.com/v1/presentations/{{ $('CopyPdfTemplate').item.json.id }}:batchUpdate",
"method": "POST",
"options": {},
"jsonBody": "{\n \"requests\": [\n {\n \"createSlide\": {\n \"slideLayoutReference\": {\n \"predefinedLayout\": \"BLANK\"\n \n } \n } \n } \n ]\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleSlidesOAuth2Api"
},
"credentials": {
"googleSlidesOAuth2Api": {
"id": "puHiyhiyJ7v8EzCp",
"name": "Google Slides account"
}
},
"typeVersion": 4.2
},
{
"id": "0c883f43-b498-4da5-a5ee-ee44d11bb7f6",
"name": "Ajouter une image à la diapositive",
"type": "n8n-nodes-base.httpRequest",
"position": [
2020,
280
],
"parameters": {
"url": "=https://slides.googleapis.com/v1/presentations/{{ $('CopyPdfTemplate').item.json.id }}:batchUpdate",
"method": "POST",
"options": {},
"jsonBody": "={\n \"requests\": [\n {\n \"createImage\": {\n \"url\": \"{{ $('Sort by Created Date').item.json.webContentLink }}\",\n \"elementProperties\": {\n \"size\": {\n \"width\": {\n \"unit\": \"{{ $('Get Created Presentation').item.json.pageSize.width.unit }}\",\n \"magnitude\": {{ $('Get Created Presentation').item.json.pageSize.width.magnitude }}\n },\n \"height\": {\n \"unit\": \"{{ $('Get Created Presentation').item.json.pageSize.height.unit }}\",\n \"magnitude\": {{ $('Get Created Presentation').item.json.pageSize.height.magnitude }}\n }\n },\n \"transform\": {\n \"scaleX\": 1,\n \"scaleY\": 1,\n \"translateX\": 0,\n \"translateY\": 0,\n \"unit\": \"PT\"\n },\n \"pageObjectId\": \"{{ $('Create An Empty Slide').item.json.replies[0].createSlide.objectId }}\" \n } \n } \n } \n ]\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleSlidesOAuth2Api"
},
"credentials": {
"googleSlidesOAuth2Api": {
"id": "puHiyhiyJ7v8EzCp",
"name": "Google Slides account"
}
},
"typeVersion": 4.2
},
{
"id": "4ba1bd72-7097-4774-9ce6-a770d4e8cacc",
"name": "Note autocollante 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
20,
-180
],
"parameters": {
"color": 6,
"width": 440,
"height": 620,
"content": "## Configure Template & Image Folder\n\n⚙️ In the **'CopyPdfTemplate'** node configure:\n\n1. **File -> From list:** Select your Google Slides template file. This will be the base for your PDF. If you want book orientation, it should be specified in the template in File-> Page Setup\n\n2. **Parent Folder -> From list:** Choose the Google Drive folder where your source images are located.\n\n➡️ **Important:** The workflow will create the final PDF in the *same folder* where you have your images"
},
"typeVersion": 1
},
{
"id": "e1e1bb1f-d73e-4dd5-b665-e669b5c343b1",
"name": "Note autocollante 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
860,
-180
],
"parameters": {
"color": 6,
"width": 420,
"height": 600,
"content": "## Image Filter Information\n\n🖼️ **Image Format Note** \n\nThis workflow is preset to find and process `.png` images from your Google Drive folder (using MIME type `image/png`).\n\nIf you're using other image formats (e.g., JPG, GIF), you'll need to update the **'Filter: Only Images'** node.\n\nSpecifically, change the filter condition from `image/png` to the correct MIME type for your image files (e.g., `image/jpeg` for JPGs)."
},
"typeVersion": 1
},
{
"id": "ba71a7ef-5309-4eb9-9aa8-a0bf275127a7",
"name": "Note autocollante 4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1320,
500
],
"parameters": {
"color": 6,
"width": 840,
"height": 340,
"content": "## How the Image-to-Slide Process Works\n\n🔄 **How Images Are Added to Slides** \n1. The workflow fetches all images (that pass the filter) from your specified Google Drive folder.\n2. It sorts these images by their creation date.\n3. For each image, the workflow:\n a. Creates a new blank slide in your Google Slides presentation.\n b. Updates the image's permissions in Google Drive to be publicly readable (this is a temporary step, necessary for the Google Slides API to insert the image using its URL).\n c. Adds the image to the new slide, fitting it to the slide's dimensions.\n\n**Final Touch:** After all images are added, the *very first slide* of the presentation (which is a blank page from your template) is deleted."
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"07e69808-f221-4424-838c-e1d53ce7ca0c": {
"main": [
[
{
"node": "eb4ef58f-77cd-408a-825a-720ced2a07f1",
"type": "main",
"index": 0
}
]
]
},
"fccfdcd0-9407-45bb-9065-ba0d0d63b1a6": {
"main": [
[
{
"node": "e9fb8627-1385-474c-badc-7aa1645a99da",
"type": "main",
"index": 0
}
]
]
},
"bc3a71c4-e073-4ef0-b74e-62e6005ee3c7": {
"main": [
[
{
"node": "07e69808-f221-4424-838c-e1d53ce7ca0c",
"type": "main",
"index": 0
}
],
[
{
"node": "f1680bfa-8ce1-4b0e-af59-83332e9511a0",
"type": "main",
"index": 0
}
]
]
},
"478b42b2-ad5a-4e2d-bbe0-88f412cb57b2": {
"main": [
[
{
"node": "fccfdcd0-9407-45bb-9065-ba0d0d63b1a6",
"type": "main",
"index": 0
}
]
]
},
"0028a6c9-460b-4ee9-968c-f46b6102fd44": {
"main": [
[
{
"node": "36d5034f-6d1a-4619-a009-f6e2e30ec7a5",
"type": "main",
"index": 0
}
]
]
},
"36d5034f-6d1a-4619-a009-f6e2e30ec7a5": {
"main": [
[
{
"node": "bc3a71c4-e073-4ef0-b74e-62e6005ee3c7",
"type": "main",
"index": 0
}
]
]
},
"7862bbd3-2300-4dd5-9ad9-02c81d608f3d": {
"main": [
[
{
"node": "9d0898a8-4f62-4c03-bf9f-5f62177854a7",
"type": "main",
"index": 0
}
]
]
},
"f1680bfa-8ce1-4b0e-af59-83332e9511a0": {
"main": [
[
{
"node": "5698ad5a-7635-423c-a63c-a1d5266551ea",
"type": "main",
"index": 0
}
]
]
},
"0c883f43-b498-4da5-a5ee-ee44d11bb7f6": {
"main": [
[
{
"node": "bc3a71c4-e073-4ef0-b74e-62e6005ee3c7",
"type": "main",
"index": 0
}
]
]
},
"eb4ef58f-77cd-408a-825a-720ced2a07f1": {
"main": [
[
{
"node": "7862bbd3-2300-4dd5-9ad9-02c81d608f3d",
"type": "main",
"index": 0
}
]
]
},
"e9fb8627-1385-474c-badc-7aa1645a99da": {
"main": [
[
{
"node": "c6429ca5-db95-4e33-b470-43a5df1feed3",
"type": "main",
"index": 0
}
]
]
},
"5698ad5a-7635-423c-a63c-a1d5266551ea": {
"main": [
[
{
"node": "0c883f43-b498-4da5-a5ee-ee44d11bb7f6",
"type": "main",
"index": 0
}
]
]
},
"c6429ca5-db95-4e33-b470-43a5df1feed3": {
"main": [
[
{
"node": "bd8c64b0-f8a4-4bf6-bb3a-cabba5597fed",
"type": "main",
"index": 0
}
]
]
},
"bd8c64b0-f8a4-4bf6-bb3a-cabba5597fed": {
"main": [
[
{
"node": "0028a6c9-460b-4ee9-968c-f46b6102fd44",
"type": "main",
"index": 0
}
]
]
},
"65d94bcc-e528-46a5-be6e-393a06ec620c": {
"main": [
[
{
"node": "478b42b2-ad5a-4e2d-bbe0-88f412cb57b2",
"type": "main",
"index": 0
}
]
]
}
}
}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é - Design, Intelligence Artificielle, Marketing
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.
Workflows recommandés
Nadia Privalikhina
@nadiapAutomation consultant with a dev brain and a get-things-done mindset. I help marketing and content teams build automation workflows, learn the tools, and actually use them in their business
Partager ce workflow