Javascript 将PDFKit文档连续附加到Node.js中的CombinedStream
我有一个应用程序,其中我从多个度量来源及其结果创建PDF报告:每个度量填充各自的PDF,通过管道将其传输到b64编码流,并通过电子邮件发送给用户 问题是我想创建一个包含所有报告的PDF。我尝试使用CombinedStream节点包附加每个PDFKit结果(可读取的流),但生成的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
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。