{ "id": "i8nBvPOtFYWk5eoq", "meta": { "instanceId": "workflow-c92ffc68", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:46.908805", "updatedAt": "2025-09-29T07:07:46.908823", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "name": "Get PDF with JSReport", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "nodes": [ { "id": "9514b49d-80f3-41d2-bcbc-8fa08e27cb64", "name": "Get PDF From JSReport", "type": "n8n-nodes-base.httpRequest", "notes": "Generating the document in JSReport", "position": [ 1040, 320 ], "parameters": { "url": "{{ $env.API_BASE_URL }}", "method": "POST", "options": {}, "jsonBody": "= {\n \"template\": { \"name\" : \"invoice-main\" },\n \"data\" :{\n \"number\": \"123\",\n \"seller\": {\n \"name\": \"Next Step Webs, Inc.\",\n \"road\": \"12345 Sunny Road\",\n \"country\": \"Sunnyville, TX 12345\"\n },\n \"buyer\": {\n \"name\": \"{{ $json[\"buyer name\"] }}\",\n \"road\": \"{{ $json[\"buyer road\"] }}\",\n \"country\": \"{{ $json[\"buyer country\"] }}\"\n },\n \"items\": [{\n \"name\": \"{{ $json[\"Item 1 Name\"] }}\",\n \"price\": {{ $json[\"Item 1 Price\"] }}\n }, {\n \"name\": \"{{ $json[\"Item 2 Name\"] }}\",\n \"price\": {{ $json[\"Item 2 Price\"] }}\n }]\n}\n }", "sendBody": true, "specifyBody": "json", "authentication": "{{ $credentials.genericCredentialType }}", "genericAuthType": "httpBasicAuth" }, "credentials": { "httpBasicAuth": { "id": "oKwHNpbRnChEV8xq", "name": "Unnamed credential" } }, "notesInFlow": true, "typeVersion": 4.2 }, { "id": "d33abb5b-50b0-44d9-8a92-e910bb180ea5", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ 460, 240 ], "parameters": { "height": 372, "content": "## Streamlining Billing Processes: From Data Input to Document Generation\n\nThis process presents the possibility of using a form, such as the one provided by n8n, to enter billing information, then calling JSReport to generate documents such as PDFs, Word, Excel, etc., and finally sending the invoice by email.\n" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "85981fc7-ecb5-49f3-9395-9866ded70257", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ 903, 240 ], "parameters": { "color": 4, "width": 363, "height": 568, "content": "## Information for calling JSReport\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### URL API : \n{{ $env.API_BASE_URL }}\n\n### Use :\nTo use JSReport, simply call the APIs with the base URL. You can create a free account here: {{ $env.WEBHOOK_URL }}\n\nThe APIs are available here: {{ $env.API_BASE_URL }}\n\nIn this example, we're sending a sample body that you can find in your JSReport test space." }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "94ae99b3-0ec9-4916-9bf4-19cfeb599966", "name": "Form Invoice", "type": "n8n-nodes-base.formTrigger", "notes": "Allows you to enter invoice information", "position": [ 740, 320 ], "webhookId": "1d0c5777-4033-4bf4-8d0e-8a2069d79c86", "parameters": { "path": "1d0c5777-4033-4bf4-8d0e-8a2069d79c86", "options": {}, "formTitle": "Create Facture", "formFields": { "values": [ { "fieldLabel": "buyer name", "requiredField": true }, { "fieldLabel": "buyer road", "requiredField": true }, { "fieldLabel": "buyer country", "requiredField": true }, { "fieldLabel": "Item 1 Name" }, { "fieldType": "number", "fieldLabel": "Item 1 Price" }, { "fieldLabel": "Item 2 Name" }, { "fieldLabel": "Item 2 Price" } ] }, "formDescription": "Create a PDF invoice from an n8n and JSReport form" }, "notesInFlow": true, "typeVersion": 2 }, { "id": "142c4a45-1228-4be5-8172-9834bb9ca491", "name": "Send invoice", "type": "n8n-nodes-base.gmail", "notes": "Using GMAIL to send the invoice", "position": [ 1340, 320 ], "parameters": { "sendTo": "contact@nonocode.fr", "message": "Good morning, \n\nPlease find your invoice. \n\nSincerely,", "options": { "attachmentsUi": { "attachmentsBinary": [ {} ] } }, "subject": "New Facture" }, "credentials": { "gmailOAuth2": { "id": "N3pxr94UxrQSovu5", "name": "Gmail account" } }, "notesInFlow": true, "typeVersion": 2.1 } ], "active": true, "pinData": {}, "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "versionId": "8e1b0f98-68ec-4300-a948-52439d00db66", "connections": { "9514b49d-80f3-41d2-bcbc-8fa08e27cb64": { "main": [ [ { "node": "error-handler-9514b49d-80f3-41d2-bcbc-8fa08e27cb64", "type": "main", "index": 0 } ], [ { "node": "error-handler-9514b49d-80f3-41d2-bcbc-8fa08e27cb64-09185eac", "type": "main", "index": 0 } ], [ { "node": "error-handler-9514b49d-80f3-41d2-bcbc-8fa08e27cb64-3175d0a0", "type": "main", "index": 0 } ], [ { "node": "error-handler-9514b49d-80f3-41d2-bcbc-8fa08e27cb64-b37cb83f", "type": "main", "index": 0 } ], [ { "node": "error-handler-9514b49d-80f3-41d2-bcbc-8fa08e27cb64-0b17950f", "type": "main", "index": 0 } ], [ { "node": "error-handler-9514b49d-80f3-41d2-bcbc-8fa08e27cb64-da2f4482", "type": "main", "index": 0 } ], [ { "node": "error-handler-9514b49d-80f3-41d2-bcbc-8fa08e27cb64-f759cc9b", "type": "main", "index": 0 } ], [ { "node": "error-handler-9514b49d-80f3-41d2-bcbc-8fa08e27cb64-e1e243c6", "type": "main", "index": 0 } ], [ { "node": "error-handler-9514b49d-80f3-41d2-bcbc-8fa08e27cb64-e35b7ed9", "type": "main", "index": 0 } ] ] } }, "description": "Automated workflow: Get PDF with JSReport. This workflow integrates 5 different services: stickyNote, httpRequest, formTrigger, stopAndError, gmail. It contains 7 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: Get PDF with JSReport. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }