代码之家  ›  专栏  ›  技术社区  ›  user3626232

无法使用节点中的图形Magick创建PDF

  •  0
  • user3626232  · 技术社区  · 6 年前

    我有一个node应用程序,在其中我使用graphics magick进行一些图像/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');         
            }
          })
        })
      })
    

    输出/控制台显示:

    stream
    reading errorStream
    streamError.txt contains no errors
    successfully read our new file
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   user3626232    6 年前

    最后,当我在编辑之前将pdf转换为png时,这个问题就消失了。 大概得出的结论是,当使用mosaic()时,它们需要是相同的类型。