Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将PDFKit文档连续附加到Node.js中的CombinedStream_Javascript_Node.js_Pdf_Stream_Pdfkit - Fatal编程技术网

Javascript 将PDFKit文档连续附加到Node.js中的CombinedStream

Javascript 将PDFKit文档连续附加到Node.js中的CombinedStream,javascript,node.js,pdf,stream,pdfkit,Javascript,Node.js,Pdf,Stream,Pdfkit,我有一个应用程序,其中我从多个度量来源及其结果创建PDF报告:每个度量填充各自的PDF,通过管道将其传输到b64编码流,并通过电子邮件发送给用户 问题是我想创建一个包含所有报告的PDF。我尝试使用CombinedStream节点包附加每个PDFKit结果(可读取的流),但生成的CombinedStream要么充满空白页,要么没有数据,下面是代码示例: const combinedStream = CombinedStream.create(); const title = aw

我有一个应用程序,其中我从多个度量来源及其结果创建PDF报告:每个度量填充各自的PDF,通过管道将其传输到b64编码流,并通过电子邮件发送给用户

问题是我想创建一个包含所有报告的PDF。我尝试使用CombinedStream节点包附加每个PDFKit结果(可读取的流),但生成的CombinedStream要么充满空白页,要么没有数据,下面是代码示例:

    const combinedStream = CombinedStream.create();

    const title = await this.generateReportTitle(identifiers);

    const options: IReportAnalysisOptions = {
      identifiers,
      title,
    };

    const schneider = await SchneiderCulturalAssessmentReportGenerator.fillReport(
      options
    );
    
    combinedStream.append(schneider);

    const lifeSatisfaction = await LifeSatisfactionReportGenerator.fillReport(
      options
    );

    combinedStream.append(lifeSatisfaction);

    const result = await PDFGenerator.getB64Result(combinedStream); // result.pdf is empty
我尝试在获取每个报表后调用report.end(),创建组合流,并使用
pauseStreams:false
获得相同的结果

此外,使用单个PDFKit文档来编写所有报告不是一个选项,因为我使用多个外部PDF,我将其读取为缓冲区,然后将它们附加到最终结果中。这种情况下的区别是,我需要将这些外部PDF附加为流,同时流式传输主组合流

如果我在控制台中记录组合流,我会得到以下结果:

metrics           | CombinedStream {
metrics           |   writable: false,
metrics           |   readable: true,
metrics           |   dataSize: 0,
metrics           |   maxDataSize: 2097152,
metrics           |   pauseStreams: true,
metrics           |   _released: false,
metrics           |   _streams:
metrics           |    [ DelayedStream {
metrics           |        source: [PDFDocument],
metrics           |        dataSize: 0,
metrics           |        maxDataSize: Infinity,
metrics           |        pauseStream: true,
metrics           |        _maxDataSizeExceeded: false,
metrics           |        _released: false,
metrics           |        _bufferedEvents: [Array],
metrics           |        _events: [Object],
metrics           |        _eventsCount: 1 },
metrics           |      DelayedStream {
metrics           |        source: [PDFDocument],
metrics           |        dataSize: 0,
metrics           |        maxDataSize: Infinity,
metrics           |        pauseStream: true,
metrics           |        _maxDataSizeExceeded: false,
metrics           |        _released: false,
metrics           |        _bufferedEvents: [Array],
metrics           |        _events: [Object],
metrics           |        _eventsCount: 1 } ],
metrics           |   _currentStream: null,
metrics           |   _insideLoop: false,
metrics           |   _pendingNext: false }

你知道怎么做吗?我愿意改变软件包,我只是测试一下,看看在这一点上什么是有效的。谢谢

简单地连接多个pdf流不会创建单个有效文档。(实际上没有太多的文件格式…)您必须使用一些pdf库方法来合并pdf。