Hello,
So I'm getting the a maxbuffer exceeded error using Node.js for very large Pdf's over like 2MB's. Im using the ExecFile function like so:
let child = execFile(
"./prince",
princeArgs,
opts,
function (err, stdout, stderr) {
if (err) {
console.log("E2: Error on " + url);
reject(err);
}
if (
err === null &&
(m = stderr.toString().match(/prince:\s+error:\s+([^\n]+)/))
) {
console.log("E3: Error on " + url);
reject(Error(m[1]));
}
resolve(stdout);
}
);
i decided to try the spawn method and it has resolved my maxbuffer issue but now im getting blank pdf's.
Here is my code. Any help would be appreciated
async function generatePDF(html, url) {
if (html == null || html === "") {
reject(Error("No data came back from https.get call"));
}
var princeArgs = [
"-",
"--output=-",
"--media=screen",
"--insecure",
"--baseurl=" + process.env.BASE_URL,
"--debug",
"--verbose",
// "--log=/tmp/log.txt",
];
return new Promise(function (resolve, reject) {
let stdoutData = '';
let child = spawn(
"./prince",
princeArgs);
child.stdout.on('data', (data) => {
stdoutData += data.toString();
});
child.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
child.on('close', (code) => {
console.error(`close: ${stdoutData}`);
resolve(stdoutData);
});
child.on('error', (err) => {
console.error(`Failed to start subprocess: ${err}`);
});
child.stdin.write(html);
child.stdin.end();
});
}
So I'm getting the a maxbuffer exceeded error using Node.js for very large Pdf's over like 2MB's. Im using the ExecFile function like so:
let child = execFile(
"./prince",
princeArgs,
opts,
function (err, stdout, stderr) {
if (err) {
console.log("E2: Error on " + url);
reject(err);
}
if (
err === null &&
(m = stderr.toString().match(/prince:\s+error:\s+([^\n]+)/))
) {
console.log("E3: Error on " + url);
reject(Error(m[1]));
}
resolve(stdout);
}
);
i decided to try the spawn method and it has resolved my maxbuffer issue but now im getting blank pdf's.
Here is my code. Any help would be appreciated
async function generatePDF(html, url) {
if (html == null || html === "") {
reject(Error("No data came back from https.get call"));
}
var princeArgs = [
"-",
"--output=-",
"--media=screen",
"--insecure",
"--baseurl=" + process.env.BASE_URL,
"--debug",
"--verbose",
// "--log=/tmp/log.txt",
];
return new Promise(function (resolve, reject) {
let stdoutData = '';
let child = spawn(
"./prince",
princeArgs);
child.stdout.on('data', (data) => {
stdoutData += data.toString();
});
child.stderr.on('data', (data) => {
console.error(`stderr: ${data}`);
});
child.on('close', (code) => {
console.error(`close: ${stdoutData}`);
resolve(stdoutData);
});
child.on('error', (err) => {
console.error(`Failed to start subprocess: ${err}`);
});
child.stdin.write(html);
child.stdin.end();
});
}