diff --git a/paperless-backend/src/preprocessing/pdf.service.ts b/paperless-backend/src/preprocessing/pdf.service.ts index 7fe63bd..11633d7 100644 --- a/paperless-backend/src/preprocessing/pdf.service.ts +++ b/paperless-backend/src/preprocessing/pdf.service.ts @@ -40,6 +40,12 @@ export class PdfService { * Verwendet einen einzigen Ghostscript-Aufruf mit %d-Platzhalter für alle Seiten. */ async pdfToImages(pdfPath: string, dpi = 200): Promise { + const stat = await fs.stat(pdfPath); + if (stat.size === 0) { + this.logger.warn(`PDF ist leer (0 Bytes), wird übersprungen: ${pdfPath}`); + return []; + } + const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'pdf-')); await execFileAsync('gs', [ diff --git a/paperless-backend/src/scanner/scanner-watcher.service.ts b/paperless-backend/src/scanner/scanner-watcher.service.ts index 2394114..4f4c7b7 100644 --- a/paperless-backend/src/scanner/scanner-watcher.service.ts +++ b/paperless-backend/src/scanner/scanner-watcher.service.ts @@ -143,7 +143,7 @@ export class ScannerWatcherService implements OnModuleInit, OnModuleDestroy { private async isStable(filePath: string): Promise { try { const stat = await fs.stat(filePath); - return Date.now() - stat.mtimeMs >= STABILITY_MS; + return stat.size > 0 && Date.now() - stat.mtimeMs >= STABILITY_MS; } catch { return false; } @@ -164,6 +164,17 @@ export class ScannerWatcherService implements OnModuleInit, OnModuleDestroy { const fileName = parts[1]; if (this.processing.has(filePath)) return; + + try { + const stat = await fs.stat(filePath); + if (stat.size === 0) { + this.logger.debug(`Überspringe leere Datei: ${filePath}`); + return; + } + } catch { + return; + } + this.processing.add(filePath); try {