n8n-nodes-pdf-api-hub 4.0.19 → 4.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,22 +1,4 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64" fill="none" aria-label="PDF API Hub">
3
- <defs>
4
- <linearGradient id="bg" x1="8" y1="8" x2="56" y2="56" gradientUnits="userSpaceOnUse">
5
- <stop offset="0" stop-color="#0B1220"/>
6
- <stop offset="1" stop-color="#1F1B3A"/>
7
- </linearGradient>
8
- </defs>
9
-
10
- <!-- Slight inset so it doesn't look full-bleed in n8n -->
11
- <rect x="4" y="4" width="56" height="56" rx="12" fill="url(#bg)" stroke="#334155" stroke-width="1"/>
12
-
13
- <!-- Centered logo text: </pdf> -->
14
- <text x="32" y="33" text-anchor="middle" dominant-baseline="middle"
15
- font-family="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace"
16
- font-size="18" font-weight="700" letter-spacing="-0.5">
17
- <tspan fill="#E2E8F0">&lt;/</tspan><tspan fill="#A78BFA">pdf</tspan><tspan fill="#E2E8F0">&gt;</tspan>
18
- </text>
19
-
20
- <!-- Small page corner mark -->
21
- <path d="M44 18h-6a2 2 0 0 0-2 2v6" stroke="#64748B" stroke-width="2" stroke-linecap="round"/>
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
3
+ <text x="32" y="40" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="28" font-weight="bold" fill="#F77522">PDF</text>
22
4
  </svg>
@@ -1,22 +1,4 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64" fill="none" aria-label="PDF API Hub">
3
- <defs>
4
- <linearGradient id="bg" x1="8" y1="8" x2="56" y2="56" gradientUnits="userSpaceOnUse">
5
- <stop offset="0" stop-color="#EEF2FF"/>
6
- <stop offset="1" stop-color="#DDD6FE"/>
7
- </linearGradient>
8
- </defs>
9
-
10
- <!-- Slight inset so it doesn't look full-bleed in n8n -->
11
- <rect x="4" y="4" width="56" height="56" rx="12" fill="url(#bg)" stroke="#CBD5E1" stroke-width="1"/>
12
-
13
- <!-- Centered logo text: </pdf> -->
14
- <text x="32" y="33" text-anchor="middle" dominant-baseline="middle"
15
- font-family="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace"
16
- font-size="18" font-weight="700" letter-spacing="-0.5">
17
- <tspan fill="#0F172A">&lt;/</tspan><tspan fill="#6D28D9">pdf</tspan><tspan fill="#0F172A">&gt;</tspan>
18
- </text>
19
-
20
- <!-- Small page corner mark (subtle, optional) -->
21
- <path d="M44 18h-6a2 2 0 0 0-2 2v6" stroke="#94A3B8" stroke-width="2" stroke-linecap="round"/>
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
3
+ <text x="32" y="40" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="28" font-weight="bold" fill="#F77522">PDF</text>
22
4
  </svg>
@@ -1,5 +1,18 @@
1
- import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
1
+ import type { IExecuteFunctions, ILoadOptionsFunctions, INodeExecutionData, INodePropertyOptions, INodeType, INodeTypeDescription, ResourceMapperFields } from 'n8n-workflow';
2
2
  export declare class PdfSplitMerge implements INodeType {
3
3
  description: INodeTypeDescription;
4
+ methods: {
5
+ loadOptions: {
6
+ getTemplates(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
7
+ getStarterTemplates(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
8
+ };
9
+ resourceMapping: {
10
+ getTemplatePlaceholderFields(this: ILoadOptionsFunctions): Promise<ResourceMapperFields>;
11
+ getStarterTemplatePlaceholders(this: ILoadOptionsFunctions): Promise<ResourceMapperFields>;
12
+ getStarterTemplatePlaceholdersImage(this: ILoadOptionsFunctions): Promise<ResourceMapperFields>;
13
+ getStarterTemplateHtml(this: ILoadOptionsFunctions): Promise<ResourceMapperFields>;
14
+ getStarterTemplateHtmlImage(this: ILoadOptionsFunctions): Promise<ResourceMapperFields>;
15
+ };
16
+ };
4
17
  execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
18
  }
@@ -12,7 +12,7 @@ class PdfSplitMerge {
12
12
  icon: { light: 'file:../../icons/pdfhub.light.svg', dark: 'file:../../icons/pdfhub.dark.svg' },
13
13
  group: ['transform'],
14
14
  version: 1,
15
- description: 'HTML/URL to PDF API, OCR, merge/split/compress PDFs, convert formats, and website screenshots. Complete PDF processing toolkit.',
15
+ description: 'Convert HTML to PDF, take website screenshots, run OCR on scanned files.',
16
16
  defaults: {
17
17
  name: 'PDF API Hub',
18
18
  },
@@ -31,6 +31,220 @@ class PdfSplitMerge {
31
31
  ...actions_1.allActionDescriptions,
32
32
  ],
33
33
  };
34
+ this.methods = {
35
+ loadOptions: {
36
+ async getTemplates() {
37
+ var _a;
38
+ const responseData = await this.helpers.httpRequestWithAuthentication.call(this, 'pdfapihubApi', {
39
+ method: 'GET',
40
+ url: 'https://pdfapihub.com/api/v1/templates',
41
+ json: true,
42
+ });
43
+ const templates = (_a = responseData.templates) !== null && _a !== void 0 ? _a : [];
44
+ return templates.map((t) => ({
45
+ name: t.name || t.template_id,
46
+ value: t.template_id,
47
+ }));
48
+ },
49
+ async getStarterTemplates() {
50
+ try {
51
+ const responseData = await this.helpers.httpRequest({
52
+ method: 'GET',
53
+ url: 'https://pdfapihub.com/starter-templates.json',
54
+ json: true,
55
+ });
56
+ return [
57
+ { name: '— None —', value: '' },
58
+ ...responseData.map((t) => ({
59
+ name: t.category ? `${t.category}: ${t.title}` : t.title,
60
+ value: t.id,
61
+ })),
62
+ ];
63
+ }
64
+ catch {
65
+ return [{ name: '— None —', value: '' }];
66
+ }
67
+ },
68
+ },
69
+ resourceMapping: {
70
+ async getTemplatePlaceholderFields() {
71
+ var _a;
72
+ const templateId = this.getCurrentNodeParameter('gen_template_id');
73
+ if (!templateId)
74
+ return { fields: [] };
75
+ try {
76
+ const responseData = await this.helpers.httpRequestWithAuthentication.call(this, 'pdfapihubApi', {
77
+ method: 'GET',
78
+ url: `https://pdfapihub.com/api/v1/templates/${encodeURIComponent(templateId)}`,
79
+ json: true,
80
+ });
81
+ const keys = new Set();
82
+ if (responseData.default_params) {
83
+ for (const k of Object.keys(responseData.default_params)) {
84
+ keys.add(k);
85
+ }
86
+ }
87
+ if (responseData.html_content) {
88
+ const patterns = [
89
+ /\{\{@(\w+)\}\}/g,
90
+ /\{\{\$(\w+)\}\}/g,
91
+ /\$\{(\w+)\}/g,
92
+ /\{(\w+)\}/g,
93
+ /%(\w+)%/g,
94
+ ];
95
+ for (const pattern of patterns) {
96
+ let match;
97
+ while ((match = pattern.exec(responseData.html_content)) !== null) {
98
+ keys.add(match[1]);
99
+ }
100
+ }
101
+ }
102
+ const defaultParams = (_a = responseData.default_params) !== null && _a !== void 0 ? _a : {};
103
+ return {
104
+ fields: Array.from(keys).sort().map((k) => {
105
+ var _a;
106
+ return ({
107
+ id: k,
108
+ displayName: k,
109
+ type: 'string',
110
+ required: false,
111
+ defaultMatch: false,
112
+ display: true,
113
+ defaultValue: (_a = defaultParams[k]) !== null && _a !== void 0 ? _a : '',
114
+ });
115
+ }),
116
+ };
117
+ }
118
+ catch {
119
+ return { fields: [] };
120
+ }
121
+ },
122
+ async getStarterTemplatePlaceholders() {
123
+ const templateId = this.getCurrentNodeParameter('starter_template');
124
+ if (!templateId)
125
+ return { fields: [] };
126
+ try {
127
+ const allTemplates = await this.helpers.httpRequest({
128
+ method: 'GET',
129
+ url: 'https://pdfapihub.com/starter-templates.json',
130
+ json: true,
131
+ });
132
+ const template = allTemplates.find((t) => t.id === templateId);
133
+ if (!template)
134
+ return { fields: [] };
135
+ return {
136
+ fields: template.fields.map((f) => {
137
+ var _a;
138
+ return ({
139
+ id: f.key,
140
+ displayName: f.label || f.key,
141
+ type: 'string',
142
+ required: false,
143
+ defaultMatch: false,
144
+ display: true,
145
+ defaultValue: (_a = f.defaultValue) !== null && _a !== void 0 ? _a : '',
146
+ });
147
+ }),
148
+ };
149
+ }
150
+ catch {
151
+ return { fields: [] };
152
+ }
153
+ },
154
+ async getStarterTemplatePlaceholdersImage() {
155
+ const templateId = this.getCurrentNodeParameter('image_starter_template');
156
+ if (!templateId)
157
+ return { fields: [] };
158
+ try {
159
+ const allTemplates = await this.helpers.httpRequest({
160
+ method: 'GET',
161
+ url: 'https://pdfapihub.com/starter-templates.json',
162
+ json: true,
163
+ });
164
+ const template = allTemplates.find((t) => t.id === templateId);
165
+ if (!template)
166
+ return { fields: [] };
167
+ return {
168
+ fields: template.fields.map((f) => {
169
+ var _a;
170
+ return ({
171
+ id: f.key,
172
+ displayName: f.label || f.key,
173
+ type: 'string',
174
+ required: false,
175
+ defaultMatch: false,
176
+ display: true,
177
+ defaultValue: (_a = f.defaultValue) !== null && _a !== void 0 ? _a : '',
178
+ });
179
+ }),
180
+ };
181
+ }
182
+ catch {
183
+ return { fields: [] };
184
+ }
185
+ },
186
+ async getStarterTemplateHtml() {
187
+ var _a;
188
+ const templateId = this.getCurrentNodeParameter('starter_template');
189
+ if (!templateId)
190
+ return { fields: [] };
191
+ try {
192
+ const allTemplates = await this.helpers.httpRequest({
193
+ method: 'GET',
194
+ url: 'https://pdfapihub.com/starter-templates.json',
195
+ json: true,
196
+ });
197
+ const template = allTemplates.find((t) => t.id === templateId);
198
+ if (!template)
199
+ return { fields: [] };
200
+ return {
201
+ fields: [{
202
+ id: 'html_content',
203
+ displayName: 'HTML Content',
204
+ type: 'string',
205
+ required: false,
206
+ defaultMatch: false,
207
+ display: true,
208
+ defaultValue: (_a = template.html) !== null && _a !== void 0 ? _a : '',
209
+ }],
210
+ };
211
+ }
212
+ catch {
213
+ return { fields: [] };
214
+ }
215
+ },
216
+ async getStarterTemplateHtmlImage() {
217
+ var _a;
218
+ const templateId = this.getCurrentNodeParameter('image_starter_template');
219
+ if (!templateId)
220
+ return { fields: [] };
221
+ try {
222
+ const allTemplates = await this.helpers.httpRequest({
223
+ method: 'GET',
224
+ url: 'https://pdfapihub.com/starter-templates.json',
225
+ json: true,
226
+ });
227
+ const template = allTemplates.find((t) => t.id === templateId);
228
+ if (!template)
229
+ return { fields: [] };
230
+ return {
231
+ fields: [{
232
+ id: 'html_content',
233
+ displayName: 'HTML Content',
234
+ type: 'string',
235
+ required: false,
236
+ defaultMatch: false,
237
+ display: true,
238
+ defaultValue: (_a = template.html) !== null && _a !== void 0 ? _a : '',
239
+ }],
240
+ };
241
+ }
242
+ catch {
243
+ return { fields: [] };
244
+ }
245
+ },
246
+ },
247
+ };
34
248
  }
35
249
  async execute() {
36
250
  return actions_1.executePdfSplitMerge.call(this);
@@ -1 +1 @@
1
- {"version":3,"file":"PdfSplitMerge.node.js","sourceRoot":"","sources":["../../../nodes/PdfSplitMerge/PdfSplitMerge.node.ts"],"names":[],"mappings":";;;AAMA,+CAAmD;AACnD,uCAAwE;AACxE,iDAAuE;AAEvE,MAAa,aAAa;IAA1B;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,aAAa;YAC1B,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,EAAE,KAAK,EAAE,mCAAmC,EAAE,IAAI,EAAE,kCAAkC,EAAE;YAC9F,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,WAAW,EACV,iIAAiI;YAClI,QAAQ,EAAE;gBACT,IAAI,EAAE,aAAa;aACnB;YACD,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YACnC,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,cAAc;oBACpB,QAAQ,EAAE,IAAI;iBACd;aACD;YACD,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE;gBACX,+BAAgB;gBAChB,GAAG,kCAAmB;gBACtB,GAAG,+BAAqB;aACxB;SACD,CAAC;IAKH,CAAC;IAHA,KAAK,CAAC,OAAO;QACZ,OAAO,8BAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;CACD;AA/BD,sCA+BC"}
1
+ {"version":3,"file":"PdfSplitMerge.node.js","sourceRoot":"","sources":["../../../nodes/PdfSplitMerge/PdfSplitMerge.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeProperties } from 'n8n-workflow';
2
+ export declare const description: INodeProperties[];
3
+ export declare function execute(this: IExecuteFunctions, index: number, returnData: INodeExecutionData[], operation: string): Promise<void>;
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.description = void 0;
4
+ exports.execute = execute;
5
+ const helpers_1 = require("../helpers");
6
+ const BASE_URL = 'https://pdfapihub.com/api';
7
+ exports.description = [
8
+ {
9
+ displayName: 'Template Name or ID',
10
+ name: 'gen_template_id',
11
+ type: 'options',
12
+ typeOptions: { loadOptionsMethod: 'getTemplates' },
13
+ default: '',
14
+ required: true,
15
+ description: 'Select a saved template. Create new templates at <a href="https://pdfapihub.com/template-studio" target="_blank">Template Studio</a>. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
16
+ displayOptions: { show: { operation: ['templateToPdf', 'templateToImage'] } },
17
+ },
18
+ {
19
+ displayName: 'Output Format',
20
+ name: 'gen_tpl_output_format',
21
+ type: 'options',
22
+ options: [
23
+ {
24
+ name: 'URL (Hosted Link)',
25
+ value: 'url',
26
+ description: 'Returns a downloadable URL — file hosted for 30 days',
27
+ },
28
+ {
29
+ name: 'Binary File (Download)',
30
+ value: 'file',
31
+ description: 'Returns raw binary — great for piping into other nodes',
32
+ },
33
+ ],
34
+ default: 'url',
35
+ description: 'How the generated file is returned',
36
+ displayOptions: { show: { operation: ['templateToPdf', 'templateToImage'] } },
37
+ },
38
+ {
39
+ displayName: 'Dynamic Params',
40
+ name: 'gen_tpl_dynamic_params',
41
+ type: 'resourceMapper',
42
+ noDataExpression: true,
43
+ default: {
44
+ mappingMode: 'defineBelow',
45
+ value: null,
46
+ },
47
+ description: "Key/value pairs that replace placeholders in the template. All template placeholders are loaded automatically — fill in values and remove any you don't need.",
48
+ displayOptions: { show: { operation: ['templateToPdf', 'templateToImage'] } },
49
+ typeOptions: {
50
+ loadOptionsDependsOn: ['gen_template_id'],
51
+ resourceMapper: {
52
+ resourceMapperMethod: 'getTemplatePlaceholderFields',
53
+ mode: 'add',
54
+ fieldWords: {
55
+ singular: 'placeholder',
56
+ plural: 'placeholders',
57
+ },
58
+ addAllFields: true,
59
+ multiKeyMatch: false,
60
+ supportAutoMap: false,
61
+ },
62
+ },
63
+ },
64
+ {
65
+ displayName: 'Custom Dynamic Params',
66
+ name: 'gen_tpl_dynamic_params_manual',
67
+ type: 'fixedCollection',
68
+ typeOptions: { multipleValues: true },
69
+ default: {},
70
+ description: 'Additional custom key/value pairs. These are merged with the template placeholders above (manual values win on conflict).',
71
+ displayOptions: { show: { operation: ['templateToPdf', 'templateToImage'] } },
72
+ options: [
73
+ {
74
+ name: 'params',
75
+ displayName: 'Parameter',
76
+ values: [
77
+ {
78
+ displayName: 'Key',
79
+ name: 'key',
80
+ type: 'string',
81
+ default: '',
82
+ placeholder: 'custom_field',
83
+ description: 'Placeholder key \u2014 without the {{ }} braces',
84
+ },
85
+ {
86
+ displayName: 'Value',
87
+ name: 'value',
88
+ type: 'string',
89
+ default: '',
90
+ placeholder: 'My Value',
91
+ description: 'Replacement value for this placeholder',
92
+ },
93
+ ],
94
+ },
95
+ ],
96
+ },
97
+ ];
98
+ async function execute(index, returnData, operation) {
99
+ var _a, _b;
100
+ const templateId = this.getNodeParameter('gen_template_id', index);
101
+ const outputFormat = this.getNodeParameter('gen_tpl_output_format', index);
102
+ const body = {
103
+ template_id: templateId,
104
+ output_format: outputFormat,
105
+ };
106
+ const allDynamic = {};
107
+ const dynamicParamsRaw = this.getNodeParameter('gen_tpl_dynamic_params', index, {});
108
+ if (dynamicParamsRaw.value && typeof dynamicParamsRaw.value === 'object') {
109
+ for (const [k, v] of Object.entries(dynamicParamsRaw.value)) {
110
+ if (k)
111
+ allDynamic[k] = v !== null && v !== void 0 ? v : '';
112
+ }
113
+ }
114
+ const manualParams = this.getNodeParameter('gen_tpl_dynamic_params_manual', index, {});
115
+ if ((_a = manualParams.params) === null || _a === void 0 ? void 0 : _a.length) {
116
+ for (const p of manualParams.params) {
117
+ if (p.key)
118
+ allDynamic[p.key] = (_b = p.value) !== null && _b !== void 0 ? _b : '';
119
+ }
120
+ }
121
+ if (Object.keys(allDynamic).length)
122
+ body.dynamic_params = allDynamic;
123
+ const isPdf = operation === 'templateToPdf';
124
+ const endpoint = isPdf
125
+ ? `${BASE_URL}/v1/generatePdf`
126
+ : `${BASE_URL}/v1/generateImage`;
127
+ const fallbackFileName = isPdf ? 'template-output.pdf' : 'template-output.png';
128
+ const fallbackMimeType = isPdf ? 'application/pdf' : 'image/png';
129
+ if (outputFormat === 'file') {
130
+ const responseData = await this.helpers.httpRequestWithAuthentication.call(this, 'pdfapihubApi', {
131
+ method: 'POST',
132
+ url: endpoint,
133
+ body,
134
+ json: true,
135
+ encoding: 'arraybuffer',
136
+ returnFullResponse: true,
137
+ ignoreHttpStatusErrors: true,
138
+ });
139
+ if (responseData.statusCode >= 400) {
140
+ let errorBody;
141
+ try {
142
+ errorBody = JSON.parse(Buffer.from(responseData.body).toString('utf8'));
143
+ }
144
+ catch {
145
+ errorBody = {};
146
+ }
147
+ (0, helpers_1.checkApiResponse)(this, responseData.statusCode, errorBody, index);
148
+ }
149
+ returnData.push(await helpers_1.prepareBinaryResponse.call(this, index, responseData, fallbackFileName, fallbackMimeType));
150
+ }
151
+ else {
152
+ const responseData = await this.helpers.httpRequestWithAuthentication.call(this, 'pdfapihubApi', {
153
+ method: 'POST',
154
+ url: endpoint,
155
+ body,
156
+ json: true,
157
+ returnFullResponse: true,
158
+ ignoreHttpStatusErrors: true,
159
+ });
160
+ (0, helpers_1.checkApiResponse)(this, responseData.statusCode, responseData.body, index);
161
+ returnData.push({
162
+ json: responseData.body,
163
+ pairedItem: { item: index },
164
+ });
165
+ }
166
+ }
167
+ //# sourceMappingURL=generateFromTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateFromTemplate.js","sourceRoot":"","sources":["../../../../nodes/PdfSplitMerge/actions/generateFromTemplate.ts"],"names":[],"mappings":"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"}