无法在节点中使用 Graphics Magick 创建 PDF
Unable to create PDF with Graphics Magick in Node
我有一个 Node 应用程序,我在其中使用 Graphics Magick 进行一些 image/pdf 操作。
我有以下代码调用 mosaic() 来合并 pdf 和 png。如果我将结果导出为 png,则该过程成功。但是,如果我尝试将结果导出为 pdf,则生成的 pdf 文件确实有一个大小,但打开它显示没有什么可看的,它似乎是空白的。没有抛出任何错误。
var newFileName = "result.pdf";
gm()
.in('-page', '+0+0')
.in('C:\Code\ProjectName\src\api\test\TestTemplatePDF.pdf')
.in('-page', '+103+70')
.in('C:\Code\ProjectName\src\api\test\pic1.png')
.mosaic()
.stream('pdf', (err, stdout, stderr) => {
if (err) console.log('stream error', err);
console.log('stream');
var writeStream = fs.createWriteStream('./etc/' + newFileName);
stdout.pipe(writeStream);
stderr.on('end', () => {
fs.readFile('./etc/streamError.txt', (err, data) => {
console.log('reading errorStream');
// if (err) console.error(err);
if (err) {
console.log('We found an error reading streamError.txt', err);
res.send(err);
} else if (data.length !== 0) {
console.log('streamError.txt should contain a detailed error message', data);
res.send(data);
} else {
console.log('streamError.txt contains no errors');
}
});
});
stdout.on('end', () => {
fs.readFile('./etc/' + newFileName, (err, data) => {
if (err) {
console.log("stdout error: " + err);
res.end();
} else {
console.log('Successfully read our new image file');
}
})
})
})
Output/console 显示:
stream
reading errorStream
streamError.txt contains no errors
successfully read our new file
最后,当我在编辑前将 pdf 转换为 png 时,这个问题就消失了。
大概的结论是,当使用 mosaic() 时,它们需要是相同的类型。
我有一个 Node 应用程序,我在其中使用 Graphics Magick 进行一些 image/pdf 操作。
我有以下代码调用 mosaic() 来合并 pdf 和 png。如果我将结果导出为 png,则该过程成功。但是,如果我尝试将结果导出为 pdf,则生成的 pdf 文件确实有一个大小,但打开它显示没有什么可看的,它似乎是空白的。没有抛出任何错误。
var newFileName = "result.pdf";
gm()
.in('-page', '+0+0')
.in('C:\Code\ProjectName\src\api\test\TestTemplatePDF.pdf')
.in('-page', '+103+70')
.in('C:\Code\ProjectName\src\api\test\pic1.png')
.mosaic()
.stream('pdf', (err, stdout, stderr) => {
if (err) console.log('stream error', err);
console.log('stream');
var writeStream = fs.createWriteStream('./etc/' + newFileName);
stdout.pipe(writeStream);
stderr.on('end', () => {
fs.readFile('./etc/streamError.txt', (err, data) => {
console.log('reading errorStream');
// if (err) console.error(err);
if (err) {
console.log('We found an error reading streamError.txt', err);
res.send(err);
} else if (data.length !== 0) {
console.log('streamError.txt should contain a detailed error message', data);
res.send(data);
} else {
console.log('streamError.txt contains no errors');
}
});
});
stdout.on('end', () => {
fs.readFile('./etc/' + newFileName, (err, data) => {
if (err) {
console.log("stdout error: " + err);
res.end();
} else {
console.log('Successfully read our new image file');
}
})
})
})
Output/console 显示:
stream
reading errorStream
streamError.txt contains no errors
successfully read our new file
最后,当我在编辑前将 pdf 转换为 png 时,这个问题就消失了。 大概的结论是,当使用 mosaic() 时,它们需要是相同的类型。