feat: Seiten- und Wortzahl für den Duplikatvergleich
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
57a460ffa2
commit
8e0c609802
10 files changed
+273
-21
No files matched your search
@@ -0,0 +1,48 @@
|
||||
import { PDFDocument, StandardFonts } from 'pdf-lib';
|
||||
import { kennzahlenAusPdf, zaehleWoerter } from './vergleich-kennzahlen.util';
|
||||
|
||||
describe('zaehleWoerter', () => {
|
||||
it('zählt nur Wörter mit Buchstaben oder Ziffern', () => {
|
||||
// „–“ und „€“ zählen nicht
|
||||
expect(zaehleWoerter('Rechnung Nr. 123 – Betrag 4,50 €')).toBe(5);
|
||||
});
|
||||
|
||||
it('ignoriert Seitenmarker von pdf-parse', () => {
|
||||
expect(zaehleWoerter('-- 1 of 2 --')).toBeNull();
|
||||
});
|
||||
|
||||
it('liefert null für leeren oder fehlenden Text', () => {
|
||||
expect(zaehleWoerter('')).toBeNull();
|
||||
expect(zaehleWoerter(null)).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe('kennzahlenAusPdf', () => {
|
||||
it('ermittelt Seiten und Wörter eines PDFs mit Textebene', async () => {
|
||||
const pdf = await PDFDocument.create();
|
||||
const font = await pdf.embedFont(StandardFonts.Helvetica);
|
||||
pdf.addPage().drawText('Hallo Welt', { x: 50, y: 700, font, size: 14 });
|
||||
pdf.addPage();
|
||||
const buffer = Buffer.from(await pdf.save());
|
||||
|
||||
expect(await kennzahlenAusPdf(buffer)).toEqual({ seiten: 2, woerter: 2 });
|
||||
});
|
||||
|
||||
it('meldet bei PDFs ohne Text die Wortzahl als nicht ermittelbar', async () => {
|
||||
const pdf = await PDFDocument.create();
|
||||
pdf.addPage();
|
||||
const buffer = Buffer.from(await pdf.save());
|
||||
|
||||
expect(await kennzahlenAusPdf(buffer)).toEqual({
|
||||
seiten: 1,
|
||||
woerter: null,
|
||||
});
|
||||
});
|
||||
|
||||
it('liefert für unlesbare Dateien keine Kennzahlen', async () => {
|
||||
expect(await kennzahlenAusPdf(Buffer.from('kaputt'))).toEqual({
|
||||
seiten: null,
|
||||
woerter: null,
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user