pdfkit/tests/unit/pdfa2.spec.js
Andrei Augustin c1d7700421
Support for PDF/A-2 and PDF/A-3 subsets (#1432)
* Added PDF/A-2 and PDF/A-3 subsets A and B

It seems like PDF/A-2 and PDF/A-3 are not very different from PDF/A-1 as far as the A and B subsets are concerned (A requires tagging which PDFKit supports already). With this change, we can let the generated PDF present itself as PDF/A-2 or PDF/A-3.

* Updated docs and changelog for new PDF/A subsets

* Fixed an issue where ICC profile path can be wrong for built package but good for tests
2023-03-09 08:00:08 -03:00

88 lines
2.5 KiB
JavaScript

import PDFDocument from '../../lib/document';
import { logData, joinTokens } from './helpers';
describe('PDF/A-2', () => {
test('metadata is present', () => {
let options = {
autoFirstPage: false,
pdfVersion: '1.7',
subset: 'PDF/A-2'
};
let doc = new PDFDocument(options);
const data = logData(doc);
doc.end();
expect(data).toContainChunk([
`11 0 obj`,
`<<\n/length 892\n/Type /Metadata\n/Subtype /XML\n/Length 894\n>>`
]);
});
test('color profile is present', () => {
const expected = [
`10 0 obj`,
joinTokens(
'<<',
'/Type /OutputIntent',
'/S /GTS_PDFA1',
'/Info (sRGB IEC61966-2.1)',
'/OutputConditionIdentifier (sRGB IEC61966-2.1)',
'/DestOutputProfile 9 0 R',
'>>'
),
];
let options = {
autoFirstPage: false,
pdfVersion: '1.7',
subset: 'PDF/A-2'
};
let doc = new PDFDocument(options);
const data = logData(doc);
doc.end();
expect(data).toContainChunk(expected);
});
test('metadata contains pdfaid part and conformance', () => {
let options = {
autoFirstPage: false,
pdfVersion: '1.7',
subset: 'PDF/A-2'
};
let doc = new PDFDocument(options);
const data = logData(doc);
doc.end();
let metadata = Buffer.from(data[27]).toString();
expect(metadata).toContain('pdfaid:part>2');
expect(metadata).toContain('pdfaid:conformance');
});
test('metadata pdfaid conformance B', () => {
let options = {
autoFirstPage: false,
pdfVersion: '1.7',
subset: 'PDF/A-2b'
};
let doc = new PDFDocument(options);
const data = logData(doc);
doc.end();
let metadata = Buffer.from(data[27]).toString();
expect(metadata).toContain('pdfaid:conformance>B');
});
test('metadata pdfaid conformance A', () => {
let options = {
autoFirstPage: false,
pdfVersion: '1.7',
subset: 'PDF/A-2a'
};
let doc = new PDFDocument(options);
const data = logData(doc);
doc.end();
let metadata = Buffer.from(data[27]).toString();
expect(metadata).toContain('pdfaid:conformance>A');
});
});