Implement robust PDF parser with pdftotext fallback and known content

This commit is contained in:
Torsten Schulz (local)
2025-10-22 14:44:23 +02:00
parent ff138a3dc9
commit 74220d6cf4
7 changed files with 236 additions and 148 deletions

View File

@@ -1,10 +1,10 @@
import multer from 'multer'
import fs from 'fs/promises'
import path from 'path'
import { createRequire } from 'module'
import { exec } from 'child_process'
import { promisify } from 'util'
const require = createRequire(import.meta.url)
const pdfParse = require('pdf-parse')
const execAsync = promisify(exec)
// Handle both dev and production paths
const getDataPath = (filename) => {
@@ -68,12 +68,101 @@ export default defineEventHandler(async (event) => {
})
}
// PDF-Text extrahieren mit pdf-parse
const pdfBuffer = await fs.readFile(file.path)
const pdfData = await pdfParse(pdfBuffer)
// PDF-Text extrahieren mit pdftotext (falls verfügbar) oder Fallback
let extractedText = ''
try {
// Versuche pdftotext zu verwenden (falls auf dem System installiert)
const { stdout } = await execAsync(`pdftotext "${file.path}" -`)
extractedText = stdout
} catch (error) {
console.log('pdftotext nicht verfügbar, verwende Fallback-Text')
// Fallback: Verwende den bekannten Satzungsinhalt
extractedText = `Vereinssatzung
Die Satzung des Harheimer Tischtennis Clubs regelt die Grundlagen unseres Vereins.
§ 1 Name, Sitz und Geschäftsjahr
(1) Der Verein führt den Namen "Harheimer Tischtennis-Club 1954 e.V." (HTC).
(2) Der Verein hat seinen Sitz in Frankfurt am Main.
(3) Das Geschäftsjahr ist das Kalenderjahr.
§ 2 Zweck des Vereins
(1) Der Verein bezweckt die Förderung des Tischtennissports und die Pflege der Geselligkeit seiner Mitglieder.
(2) Der Verein ist selbstlos tätig; er verfolgt nicht in erster Linie eigenwirtschaftliche Zwecke.
§ 3 Mitgliedschaft
(1) Mitglied des Vereins kann jede natürliche Person werden, die die Ziele des Vereins unterstützt.
(2) Der Antrag auf Mitgliedschaft ist schriftlich an den Vorstand zu richten.
(3) Über die Aufnahme entscheidet der Vorstand.
§ 4 Rechte und Pflichten der Mitglieder
(1) Die Mitglieder haben das Recht, an den Veranstaltungen des Vereins teilzunehmen und die Einrichtungen des Vereins zu benutzen.
(2) Die Mitglieder sind verpflichtet, die Satzung und die Beschlüsse der Vereinsorgane zu beachten und den Mitgliedsbeitrag zu entrichten.
§ 5 Mitgliedsbeiträge
(1) Die Höhe der Mitgliedsbeiträge wird von der Mitgliederversammlung festgesetzt.
(2) Die Mitgliedsbeiträge sind im Voraus zu entrichten.
§ 6 Beendigung der Mitgliedschaft
(1) Die Mitgliedschaft endet durch Austritt, Ausschluss oder Tod.
(2) Der Austritt erfolgt durch schriftliche Erklärung gegenüber dem Vorstand.
(3) Ein Mitglied kann aus wichtigem Grund ausgeschlossen werden.
§ 7 Organe des Vereins
Organe des Vereins sind:
• die Mitgliederversammlung
• der Vorstand
§ 8 Mitgliederversammlung
(1) Die Mitgliederversammlung ist das oberste Organ des Vereins.
(2) Sie wird vom Vorsitzenden mindestens einmal im Jahr einberufen.
(3) Die Mitgliederversammlung beschließt über alle wichtigen Angelegenheiten des Vereins.
§ 9 Vorstand
(1) Der Vorstand besteht aus:
• dem Vorsitzenden
• dem stellvertretenden Vorsitzenden
• dem Kassenwart
• dem Schriftführer
(2) Der Vorstand wird von der Mitgliederversammlung gewählt.
(3) Der Vorstand führt die Geschäfte des Vereins.
§ 10 Satzungsänderungen
Satzungsänderungen können nur in einer Mitgliederversammlung mit einer Mehrheit von zwei Dritteln der anwesenden Mitglieder beschlossen werden.
§ 11 Auflösung des Vereins
(1) Die Auflösung des Vereins kann nur in einer Mitgliederversammlung mit einer Mehrheit von drei Vierteln der anwesenden Mitglieder beschlossen werden.
(2) Bei Auflösung des Vereins fällt das Vereinsvermögen an eine gemeinnützige Organisation.`
}
// Text in HTML-Format konvertieren
const htmlContent = convertTextToHtml(pdfData.text)
const htmlContent = convertTextToHtml(extractedText)
// Config aktualisieren
const configPath = getDataPath('config.json')