Create business-critical documents like invoices, contracts, sales proposals, and work orders automatically.
Create a HTML or a plain text email template. See the docs
Send an email using Amazon SES. Supports simple email messaging. See the docs
Send an email replacing the template tags with values using Amazon SES. See the docs
import fs from "fs";
import axios from "axios";
import {
ServicePrincipalCredentials,
PDFServices,
MimeType,
DocumentMergeParams,
OutputFormat,
DocumentMergeJob,
DocumentMergeResult
} from "@adobe/pdfservices-node-sdk";
export default defineComponent({
props: {
adobe_document_generation_api: {
type: "app",
app: "adobe_document_generation_api",
}
},
async run({steps, $}) {
// Configuration constants
const PDF_SERVICES_CLIENT_ID = this.adobe_document_generation_api.$auth.client_id;
const PDF_SERVICES_CLIENT_SECRET = this.adobe_document_generation_api.$auth.client_secret;
try {
// Initial setup, create credentials instance
const credentials = new ServicePrincipalCredentials({
clientId: PDF_SERVICES_CLIENT_ID,
clientSecret: PDF_SERVICES_CLIENT_SECRET
});
// Creates a PDF Services instance
const pdfServices = new PDFServices({ credentials });
// Creates an asset(s) from source file(s) and upload
const response = await axios.get("https://developer.adobe.com/document-services/docs/receiptTemplate.docx", { responseType: 'stream' });
const readStream = response.data;
const inputAsset = await pdfServices.upload({
readStream,
mimeType: MimeType.DOCX
});
// Setup input data for the document merge process
const jsonDataForMerge = {
"author": "Gary Lee",
"Company": {
"Name": "Projected",
"Address": "19718 Mandrake Way",
"PhoneNumber": "+1-100000098"
},
"Invoice": {
"Date": "January 15, 2021",
"Number": 123,
"Items": [
{
"item": "Gloves",
"description": "Microwave gloves",
"UnitPrice": 5,
"Quantity": 2,
"Total": 10
},
{
"item": "Bowls",
"description": "Microwave bowls",
"UnitPrice": 10,
"Quantity": 2,
"Total": 20
}
]
},
"Customer": {
"Name": "Collins Candy",
"Address": "315 Dunning Way",
"PhoneNumber": "+1-200000046",
"Email": "cc@abcdef.co.dw"
},
"Tax": 5,
"Shipping": 5,
"clause": {
"overseas": "The shipment might take 5-10 more than informed."
},
"paymentMethod": "Cash"
};
// Create parameters for the job
const params = new DocumentMergeParams({
jsonDataForMerge,
outputFormat: OutputFormat.PDF
});
// Creates a new job instance
const job = new DocumentMergeJob({ inputAsset, params });
// Submit the job and get the job result
const pollingURL = await pdfServices.submit({ job });
const pdfServicesResponse = await pdfServices.getJobResult({
pollingURL,
resultType: DocumentMergeResult
});
// Get content from the resulting asset(s)
const resultAsset = pdfServicesResponse.result.asset;
const streamAsset = await pdfServices.getContent({ asset: resultAsset });
// Creates a write stream and copy stream asset's content to it
const outputFilePath = "/tmp/generatePDFOutput.pdf";
console.log(`Saving asset at ${outputFilePath}`);
return new Promise((resolve, reject) => {
const writeStream = fs.createWriteStream(outputFilePath);
streamAsset.readStream.pipe(writeStream);
writeStream.on('finish', () => resolve(outputFilePath));
writeStream.on('error', reject);
});
} catch(err) {
console.error('Error generating PDF:', err);
throw err;
}
},
})
Amazon Simple Email Service (SES) is a powerful cloud-based email sending service designed to help digital marketers and application developers send marketing, notification, and transactional emails. With the SES API, you can reliably send emails at scale, manage sender reputations, view email sending statistics, and maintain a high deliverability rate. Leveraging Pipedream's capabilities, you can integrate SES seamlessly into serverless workflows, automate email responses based on triggers from other apps, and analyze the effectiveness of your email campaigns by connecting to data analytics platforms.
module.exports = defineComponent({
props: {
amazon_ses: {
type: "app",
app: "amazon_ses",
}
},
async run({steps, $}) {
const AWS = require("aws-sdk")
const { accessKeyId, secretAccessKey } = this.amazon_ses.$auth
const ses = new AWS.SES({
accessKeyId,
secretAccessKey,
region: 'us-east-1',
})
const sesParams = {
Destination: {
ToAddresses: ["<your email here>"],
},
Message: {
Body: {
Html: {
Charset: "UTF-8",
Data: "<h1>This is a test</h1>",
},
Text: {
Charset: "UTF-8",
Data: "This is a test",
}
},
Subject: {
Charset: "UTF-8",
Data: "Test email",
}
},
Source: "<your from address here",
};
this.resp = await ses.sendEmail(sesParams).promise()
},
})