@pdfme/pdf-lib
Version:
Create and modify PDF files with JavaScript
89 lines (79 loc) • 2.73 kB
text/typescript
import { PDFCrossRefSection, PDFRef } from '../../../src/core';
import { toCharCode, typedArrayFor } from '../../../src/utils';
describe(`PDFCrossRefSection`, () => {
it(`can be constructed from PDFCrossRefSection.create()`, () => {
expect(PDFCrossRefSection.create()).toBeInstanceOf(PDFCrossRefSection);
});
const xref1 = PDFCrossRefSection.create();
xref1.addEntry(PDFRef.of(1), 21);
xref1.addDeletedEntry(PDFRef.of(2, 1), 24);
xref1.addEntry(PDFRef.of(3), 192188923);
xref1.addEntry(PDFRef.of(4), 129219);
const xref2 = PDFCrossRefSection.create();
xref2.addEntry(PDFRef.of(3), 21);
xref2.addDeletedEntry(PDFRef.of(4, 1), 24);
xref2.addEntry(PDFRef.of(6), 192188923);
xref2.addEntry(PDFRef.of(7), 129219);
it(`can be converted to a string with a single subsection`, () => {
expect(String(xref1)).toEqual(
'xref\n' +
'0 5\n' +
'0000000000 65535 f \n' +
'0000000021 00000 n \n' +
'0000000024 00001 f \n' +
'0192188923 00000 n \n' +
'0000129219 00000 n \n',
);
});
it(`can be converted to a string with multiple subsections and without object number 1`, () => {
expect(String(xref2)).toEqual(
'xref\n' +
'0 1\n' +
'0000000000 65535 f \n' +
'3 2\n' +
'0000000021 00000 n \n' +
'0000000024 00001 f \n' +
'6 2\n' +
'0192188923 00000 n \n' +
'0000129219 00000 n \n',
);
});
it(`can provide its size in bytes with a single subsection`, () => {
expect(xref1.sizeInBytes()).toBe(109);
});
it(`can provide its size in bytes with multiple subsections and without object number 1`, () => {
expect(xref2.sizeInBytes()).toBe(117);
});
it(`can be serialized with a single subsection`, () => {
const buffer = new Uint8Array(113).fill(toCharCode(' '));
expect(xref1.copyBytesInto(buffer, 3)).toBe(109);
expect(buffer).toEqual(
typedArrayFor(
' xref\n' +
'0 5\n' +
'0000000000 65535 f \n' +
'0000000021 00000 n \n' +
'0000000024 00001 f \n' +
'0192188923 00000 n \n' +
'0000129219 00000 n \n ',
),
);
});
it(`can be serialized with multiple subsections and without object number 1`, () => {
const buffer = new Uint8Array(121).fill(toCharCode(' '));
expect(xref2.copyBytesInto(buffer, 3)).toBe(117);
expect(buffer).toEqual(
typedArrayFor(
' xref\n' +
'0 1\n' +
'0000000000 65535 f \n' +
'3 2\n' +
'0000000021 00000 n \n' +
'0000000024 00001 f \n' +
'6 2\n' +
'0192188923 00000 n \n' +
'0000129219 00000 n \n ',
),
);
});
});