
Research
Malicious npm Package Brand-Squats TanStack to Exfiltrate Environment Variables
A brand-squatted TanStack npm package used postinstall scripts to steal .env files and exfiltrate developer secrets to an attacker-controlled endpoint.
easypdfcloud-node
Advanced tools
A Node library for easyPDF Cloud API https://www.easypdfcloud.com/developer/reference
The easyPDF Cloud API is a cloud-based platform that allows PDF generation, conversion and automation.
This easy-to-use tool eliminates the need for separate APIs for different file formats and works with Word, Excel, PowerPoint, HTML, and images.
To get started, sign up for free and then get your API access credentials from the developer information page.
For detailed information about the easyPDF Cloud API, visit the API reference page.
npm install easypdfcloud-node
You can create a workflow by connecting series of workflow tasks with mouse drag & drop from easyPDF Cloud website. After creating a new workflow, you can get its workflow ID from the developer information page.
"use strict";
const fs = require('fs');
const easyPdfCloud = require('easypdfcloud-node');
// easyPDF Cloud API credentials
const clientConfig = new easyPdfCloud.ClientConfig('<client ID>', '<client secret>');
// Create easyPDF Cloud client object
const client = new easyPdfCloud.Client(clientConfig);
// Load input file
const inputFileBuffer = fs.readFileSync('/Users/someone/input.docx');
const inputFileData = new easyPdfCloud.FileData('input.docx', Uint8Array.from(inputFileBuffer));
// Upload input file and start new job
console.log('Start new job ...');
client.startNewJob('<workflow ID>', inputFileData).then(function(job) {
// Wait until job execution is completed
console.log('Wait for job execution completion ...');
job.waitForJobExecutionCompletion().then(function(jobExecutionResult) {
// Save output to file
const fileData = jobExecutionResult.fileData;
console.log('Output: ' + fileData.name + ' (' + fileData.getDataByteSize() + ' bytes)');
fs.writeFileSync('/Users/someone/output.pdf', fileData.blob, 'binary');
}, function(err) {
console.log(err);
});
}, function(err) {
console.log(err);
});
"use strict";
const fs = require('fs');
const easyPdfCloud = require('easypdfcloud-node');
// easyPDF Cloud API credentials
const clientConfig = new easyPdfCloud.ClientConfig('<client ID>', '<client secret>');
(async () => {
// Create easyPDF Cloud client object
const client = new easyPdfCloud.Client(clientConfig);
// Load input file
const inputFileBuffer = fs.readFileSync('/Users/someone/input.docx');
const inputFileData = new easyPdfCloud.FileData('input.docx', Uint8Array.from(inputFileBuffer));
// Upload input file and start new job
console.log('Start new job ...');
const job = await client.startNewJob('<workflow ID>', inputFileData);
// Wait until job execution is completed
console.log('Wait for job execution completion ...');
const jobExecutionResult = await job.waitForJobExecutionCompletion();
// Save output to file
const fileData = jobExecutionResult.fileData;
console.log('Output: ' + fileData.name + ' (' + fileData.getDataByteSize() + ' bytes)');
fs.writeFileSync('/Users/someone/output.pdf', fileData.blob, 'binary');
})();
Alternatively, you can create a workflow on the spot and pass it to the API. Below example creates a workflow that adds a custom watermark text to a PDF.
"use strict";
const fs = require('fs');
const easyPdfCloud = require('easypdfcloud-node');
// easyPDF Cloud API credentials
const clientConfig = new easyPdfCloud.ClientConfig('<client ID>', '<client secret>');
// Create easyPDF Cloud client object
const client = new easyPdfCloud.Client(clientConfig);
// Load input file
const inputFileBuffer = fs.readFileSync('/Users/someone/input.pdf');
const inputFileData = new easyPdfCloud.FileData('input.pdf', Uint8Array.from(inputFileBuffer));
// Dynamically create workflow
const workflowSetting = new easyPdfCloud.WorkflowSetting();
// Add "Add watermark" task
const addWatermarkToPdfTask = workflowSetting.AddNewAddWatermarkToPdfTask();
// Configure watermark settings
addWatermarkToPdfTask.Angle = 45;
addWatermarkToPdfTask.OutlineOnly = true;
addWatermarkToPdfTask.Text = 'Hello';
// Upload input file and start new job
console.log('Start new job ...');
client.startNewJob(workflowSetting, inputFileData).then(function(job) {
// Wait until job execution is completed
console.log('Wait for job execution completion ...');
job.waitForJobExecutionCompletion().then(function(jobExecutionResult) {
// Save output to file
const fileData = jobExecutionResult.fileData;
console.log('Output: ' + fileData.name + ' (' + fileData.getDataByteSize() + ' bytes)');
fs.writeFileSync('/Users/someone/output.pdf', fileData.blob, 'binary');
}, function(err) {
console.log(err);
});
}, function(err) {
console.log(err);
});
"use strict";
const fs = require('fs');
const easyPdfCloud = require('easypdfcloud-node');
// easyPDF Cloud API credentials
const clientConfig = new easyPdfCloud.ClientConfig('<client ID>', '<client secret>');
(async () => {
// Create easyPDF Cloud client object
const client = new easyPdfCloud.Client(clientConfig);
// Load input file
const inputFileBuffer = fs.readFileSync('/Users/someone/input.pdf');
const inputFileData = new easyPdfCloud.FileData('input.pdf', Uint8Array.from(inputFileBuffer));
// Dynamically create workflow
const workflowSetting = new easyPdfCloud.WorkflowSetting();
// Add "Add watermark" task
const addWatermarkToPdfTask = workflowSetting.AddNewAddWatermarkToPdfTask();
// Configure watermark settings
addWatermarkToPdfTask.Angle = 45;
addWatermarkToPdfTask.OutlineOnly = true;
addWatermarkToPdfTask.Text = 'Hello';
// Upload input file and start new job
console.log('Start new job ...');
const job = await client.startNewJob(workflowSetting, inputFileData);
// Wait until job execution is completed
console.log('Wait for job execution completion ...');
const jobExecutionResult = await job.waitForJobExecutionCompletion();
// Save output to file
const fileData = jobExecutionResult.fileData;
console.log('Output: ' + fileData.name + ' (' + fileData.getDataByteSize() + ' bytes)');
fs.writeFileSync('/Users/someone/output.pdf', fileData.blob, 'binary');
})();
FAQs
A Node library for easyPDF Cloud API
We found that easypdfcloud-node demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
A brand-squatted TanStack npm package used postinstall scripts to steal .env files and exfiltrate developer secrets to an attacker-controlled endpoint.

Research
Compromised SAP CAP npm packages download and execute unverified binaries, creating urgent supply chain risk for affected developers and CI/CD environments.

Company News
Socket has acquired Secure Annex to expand extension security across browsers, IDEs, and AI tools.