n8n-nodes-pdforge
Version:
pdf noodle (previously pdforge) automates PDF Generation in minutes using AI.Create custom PDF templates in seconds using our AI Agents, fine tune the design with our PDF builder and automate the PDF delivery with our native pdforge node inside n8n. No co
124 lines • 5.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Pdforge = void 0;
const HtmlToPdfDescription_1 = require("./descriptions/HtmlToPdfDescription");
const ImageDescription_1 = require("./descriptions/ImageDescription");
const TemplateFields_1 = require("./descriptions/TemplateFields");
const PdfDescription_1 = require("./descriptions/PdfDescription");
const SharedFields_1 = require("./descriptions/SharedFields");
const GenericFunctions_1 = require("./GenericFunctions");
class Pdforge {
constructor() {
this.description = {
displayName: 'PDF Noodle',
name: 'pdforge',
icon: 'file:pdfnoodle.svg',
group: ['transform'],
version: 1,
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
description: 'Generate PDF from HTML or reusable templates with PDF Noodle (previously pdforge).',
defaults: {
name: 'PDF Noodle',
},
inputs: ["main"],
outputs: ["main"],
credentials: [
{
name: 'pdforgeApi',
required: true,
},
],
requestDefaults: {
baseURL: 'https://api.pdfnoodle.com',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
},
properties: [
{
displayName: 'Resource',
name: 'resource',
type: 'options',
noDataExpression: true,
options: [
{
name: 'Generate PDF',
value: 'pdf',
},
{
name: 'Generate Image',
value: 'image',
},
{
name: 'Convert HTML to PDF',
value: 'html-to-pdf',
},
],
default: 'pdf',
},
...PdfDescription_1.pdfOperations,
...ImageDescription_1.imageOperations,
...HtmlToPdfDescription_1.htmlToPdfOperations,
...TemplateFields_1.templateFields,
...HtmlToPdfDescription_1.htmlToPdfFields,
...SharedFields_1.sharedFields,
],
};
this.methods = {
loadOptions: {
async getTemplates() {
const returnData = [];
const { templates } = await GenericFunctions_1.pdforgeApiRequest.call(this, 'GET', '/integration', 'templates');
for (const template of templates) {
returnData.push({
name: template.displayName,
value: template.id,
});
}
return returnData;
},
},
};
}
async execute() {
const items = this.getInputData();
const returnData = [];
const length = items.length;
let responseData;
const resource = this.getNodeParameter('resource', 0);
const operation = this.getNodeParameter('operation', 0);
for (let itemIndex = 0; itemIndex < length; itemIndex++) {
const templateId = resource !== 'html-to-pdf' &&
this.getNodeParameter('templateId', itemIndex, undefined);
const variables = resource !== 'html-to-pdf' && this.getNodeParameter('variables', itemIndex, undefined);
const data = resource !== 'html-to-pdf' && typeof variables === 'string'
? JSON.parse(variables)
: variables;
const html = resource === 'html-to-pdf' &&
this.getNodeParameter('html', itemIndex, undefined);
const pdfParams = resource === 'html-to-pdf' && this.getNodeParameter('pdfParams', itemIndex, undefined);
const webhook = operation === 'async' ? this.getNodeParameter('webhook', itemIndex, undefined) : undefined;
const { s3_bucket, s3_key, hasCover, debug } = this.getNodeParameter('options', itemIndex, {});
const convertToImage = resource === 'image' ? true : false;
const body = {
templateId,
convertToImage,
html,
pdfParams,
webhook,
s3_bucket,
s3_key,
hasCover,
data,
debug,
};
const endpoint = resource === 'html-to-pdf' ? '/html-to-pdf' : '/pdf';
responseData = await GenericFunctions_1.pdforgeApiRequest.call(this, 'POST', endpoint, operation, body);
returnData.push(responseData);
}
return [this.helpers.returnJsonArray(returnData)];
}
}
exports.Pdforge = Pdforge;
//# sourceMappingURL=Pdforge.node.js.map