问题描述
我有一个应用程序,其中我可以从多个度量标准及其结果创建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 (将#修改为@)