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

问题描述

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

问题是我想创建一个包含所有报告的SINGLE PDF。我正在尝试使用CombinedStream节点程序包https://www.npmjs.com/package/combined-stream附加每个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(我将其读取为Buffers,然后将它们附加到最终结果中),这种情况下的区别在于,我需要附加那些外部PDF作为流,同时流化主要的CombinedStream。

如果我通过控制台记录合并后的流,则会得到以下信息:

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           |        _eventsCount: 1 } ],metrics           |   _currentStream: null,metrics           |   _insideLoop: false,metrics           |   _pendingNext: false }

关于如何进行这项工作的任何想法?我乐于更改软件包,我只是在测试以查看此时有效的方法。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)