首页 > 解决方案 > 两个渲染的空 PDF 不相同

问题描述

我正在使用 TypeScript + Node.js + pdfkit 库来创建 PDF 并验证它们是否一致。

但是,当只是创建最基本的 PDF 时,一致性已经失败。这是我的测试。

import {readFileSync, createWriteStream} from "fs";
const PDFDocument = require('pdfkit');

const assert = require('assert').strict;
const fileName = '/tmp/tmp.pdf'

async function makeSimplePDF() {
    return new Promise(resolve => {
        const stream = createWriteStream(fileName);
        const doc = new PDFDocument();
        doc.pipe(stream);
        doc.end();
        stream.on('finish', resolve);
    })
}

describe('test that pdfs are consistent', () => {
    it('simple pdf test.', async () => {
        await makeSimplePDF();
        const data: Buffer = readFileSync(fileName);
        await makeSimplePDF(); // make PDF again
        const data2: Buffer = readFileSync(fileName);
        assert.deepStrictEqual(data, data2); // fails!
    });
});

两个 Buffers 中的大多数值是相同的,但其中一些不是。这里发生了什么事?

标签: node.jspdfkit

解决方案


我相信由于创建时间以某种方式被计入缓冲区,字节可能会略有不同。当我使用mockdatehttps://www.npmjs.com/package/mockdate)修复“现在”时,我最终得到了一致的缓冲区。


推荐阅读