robbiblubber.org
DE
Projekte
Collection.NETMIT

Util.NET.

Robbiblubber.Util.NET

Werkzeuge für konkrete Aufgaben in .NET: Fortschrittsanzeigen für die Konsole, ein gemeinsamer Dateizugriff auf lokale und entfernte Speicher und Textextraktion aus PDFs mit OCR. rush und PdfText CLI bringen die Bibliotheken auf die Kommandozeile.

.NET 8.NET 10

Tools

2
Tool

rush

Robbiblubber.Util.FileStorageAdapters.Shell

Eine Shell für mehrere Dateisysteme: lokale Ordner, FTP/FTPS, SSH/SFTP und SharePoint Online als benannte Speicher einbinden und mit denselben Befehlen bearbeiten – interaktiv oder per Skript.

Die benötigten Adapterbibliotheken müssen mitgeliefert werdenZielframeworks: net8.0 / net10.0
Tool

PdfText CLI

Robbiblubber.Util.PdfText.Cli

PdfText auf der Kommandozeile: xpdf liest eine PDF-Datei und schreibt den extrahierten Text in eine Textdatei – mit OCR-Fallback für gescannte Seiten.

Native Laufzeitbibliotheken und passende Tesseract-SprachdatenZielframeworks: net8.0

Bibliotheken & Erweiterungen

7

Die Bibliotheken sind als einzelne NuGet-Pakete verfügbar. Installiere die Bausteine, die dein Projekt braucht.

Bibliothek

Robbiblubber.Util.ConsoleToolkit

Fortschrittsbalken und animierte Spinner für Konsolenanwendungen – mit Statusmeldungen, Farben und anpassbarer Darstellung.

Interaktives TerminalZielframeworks: net8.0 / net10.0

Das steckt drin

  • ConsoleProgressBar zeigt den Fortschritt zwischen Minimum und Maximum.
  • ConsoleSpinner begleitet Aufgaben ohne bekannten Gesamtumfang.
  • Statusmeldungen, Farben, Balkenbreite und Spinner-Frames sind anpassbar; keine zusätzlichen Paketabhängigkeiten.
Ein kleiner Einstieg C#
using Robbiblubber.Util.ConsoleToolkit;

ConsoleProgressBar bar = new() { BarSize = 30, Text = "Processing..." };
bar.Show();
for (int i = 1; i <= 100; i++)
{
    await Task.Delay(25);
    bar.Value = i;
}
bar.Text = "Done.";
bar.Finish();

Das Beispiel erreicht 100 %, bevor Finish() die Anzeige abschließt.

Installation
dotnet add package Robbiblubber.Util.ConsoleToolkit
Bibliothek

Robbiblubber.Util.FileStorageAdapters

Eine gemeinsame API für Dateien und Verzeichnisse: lokal, auf FTP-/FTPS- und SSH-/SFTP-Servern oder in SharePoint Online. Kopieren und Verschieben funktionieren auch zwischen unterschiedlichen Adaptern.

Für .NET-AnwendungenZielframeworks: net8.0 / net10.0

Das steckt drin

  • IAdapter, IDirectory und IFile bilden das gemeinsame Modell; die Speicheranbieter werden separat eingebunden.
  • Auflisten, Lesen, Schreiben, Anlegen, Löschen und Filtern mit asynchroner API und CancellationToken.
  • Adapterübergreifende Dateiübertragung und rekursives Kopieren von Verzeichnissen. Verschieben zwischen Adaptern erfolgt durch Kopieren und anschließendes Löschen.
  • Eigene Adapter lassen sich über Schnittstellen und Basisklassen ergänzen; rush verwendet dasselbe Modell.
Ein kleiner Einstieg C#
using Robbiblubber.Util.FileStorageAdapters;

static async Task CopyReportAsync(IAdapter sourceAdapter, IAdapter targetAdapter)
{
    IDirectory source = sourceAdapter.OpenDirectory("/documents");
    IDirectory target = targetAdapter.OpenDirectory("/incoming");
    IFile file = await source.GetFileAsync("report.pdf");
    await file.CopyToAsync(target, "report.pdf", overwrite: true);
}

Mit bereits initialisierten Adaptern und vorhandenen Verzeichnissen: dieselbe Übertragung für unterschiedliche Speicher.

Installation
dotnet add package Robbiblubber.Util.FileStorageAdapters
Adapter

Robbiblubber.Util.FileStorageAdapters.Ftp

FTP und FTPS als Dateispeicher einbinden, einschließlich verschlüsselter Verbindungen über explizites oder implizites TLS.

FTP-/FTPS-Server und ZugangsdatenZielframeworks: net8.0 / net10.0

Das steckt drin

  • FtpAdapter integriert FTP in IAdapter, IDirectory und IFile.
  • TLS, aktive oder passive Datenverbindungen, Zeitlimits und Zertifikatsprüfung sind konfigurierbar.
  • Dateien mit lokalen und anderen entfernten Speichern austauschen. Für SFTP gibt es den separaten SSH-/SFTP-Adapter.
Ein kleiner Einstieg C#
using Robbiblubber.Util.FileStorageAdapters;
using Robbiblubber.Util.FileStorageAdapters.Ftp;

FtpAdapterOptions options = new() { Security = FtpSecurity.EXPLICIT_TLS };
using FtpAdapter adapter = new(
    "ftp.example.org", 21, "username", "password", options);
IDirectory directory = adapter.OpenDirectory("/incoming");

Beispiel für explizites TLS. Server, Zugangsdaten und vorhandenes Verzeichnis anpassen.

Installation
dotnet add package Robbiblubber.Util.FileStorageAdapters.Ftp
Adapter

Robbiblubber.Util.FileStorageAdapters.LocalFileSystem

Das lokale Dateisystem über dieselben Schnittstellen wie entfernte Speicher verwenden – mit LfsAdapter für Dateien und Verzeichnisse auf dem Rechner.

Lokales Dateisystem und passende ZugriffsrechteZielframeworks: net8.0 / net10.0

Das steckt drin

  • LfsAdapter bindet native lokale Pfade in das gemeinsame Dateimodell ein.
  • Dateien und Ordner lesen, schreiben, auflisten und mit anderen Adaptern austauschen.
  • Verwendet die Berechtigungen des laufenden Prozesses und die Pfadkonventionen des Betriebssystems.
Ein kleiner Einstieg C#
using Robbiblubber.Util.FileStorageAdapters;
using Robbiblubber.Util.FileStorageAdapters.LocalFileSystem;

IDirectory directory = LfsAdapter.Open("C:/Data");
IFile file = await directory.GetFileAsync("report.pdf");
using Stream stream = await file.ReadAsync();

C:/Data und report.pdf müssen vorhanden sein. Unter Linux beispielsweise /var/data verwenden.

Installation
dotnet add package Robbiblubber.Util.FileStorageAdapters.LocalFileSystem
Adapter

Robbiblubber.Util.FileStorageAdapters.SharePoint

SharePoint-Online-Dokumentbibliotheken über Microsoft Graph wie einen Dateispeicher ansprechen – mit Dateien und Ordnern statt SharePoint-Listen.

SharePoint Online und entsprechend berechtigte Entra-AnwendungZielframeworks: net8.0 / net10.0

Das steckt drin

  • Eine Dokumentbibliothek bildet den logischen Stamm; Auswahl über Site-URL, Site-ID oder Drive-ID.
  • Interaktive Anmeldung, Gerätecode und anwendungsbasierte Anmeldung mit Secret, Zertifikat oder Managed Identity.
  • Dateien und Ordner auflisten und übertragen; große Uploads werden über Upload-Sitzungen unterstützt.
Ein kleiner Einstieg C#
using Robbiblubber.Util.FileStorageAdapters;
using Robbiblubber.Util.FileStorageAdapters.SharePoint;

SharePointTarget target = SharePointTarget.FromSiteUrl(
    "https://tenant.sharepoint.com/sites/project", libraryName: "Documents");
using SharePointAdapter adapter = SharePointAdapter.CreateInteractive(
    target, tenantId: "TENANT-ID", clientId: "APPLICATION-ID");
IDirectory directory = adapter.OpenDirectory("/reports");

Benötigt eine konfigurierte Entra-App mit passenden Berechtigungen. IDs, Bibliotheksname und Ordner anpassen.

Installation
dotnet add package Robbiblubber.Util.FileStorageAdapters.SharePoint
Adapter

Robbiblubber.Util.FileStorageAdapters.Ssh

Zwei Zugriffswege in einem Paket: SshAdapter arbeitet mit entfernten POSIX-Shell-Befehlen, SftpAdapter verwendet das SFTP-Protokoll.

SSH: POSIX-/GNU-Werkzeuge; SFTP: SFTP-SubsystemZielframeworks: net8.0 / net10.0

Das steckt drin

  • Beide Adapter verwenden das gemeinsame Datei- und Verzeichnismodell.
  • Anmeldung mit Passwort oder privatem Schlüssel; Server-Hostschlüssel können per Fingerabdruck geprüft werden.
  • SFTP benötigt keine entfernte Shell. Der SSH-Adapter setzt passende Shell- und GNU-Werkzeuge auf dem Server voraus.
Ein kleiner Einstieg C#
using Robbiblubber.Util.FileStorageAdapters;
using Robbiblubber.Util.FileStorageAdapters.Ssh;

SftpAdapterOptions options = new()
{
    HostKeyFingerprint = "SHA256:replace-with-verified-fingerprint"
};
using SftpAdapter adapter = new(
    "server.example.org", 22, "username", "password", options);
IDirectory directory = adapter.OpenDirectory("/srv/data");

Zugangsdaten und Pfad ersetzen; den Fingerabdruck des Servers vorab verifizieren und eintragen.

Installation
dotnet add package Robbiblubber.Util.FileStorageAdapters.Ssh
Bibliothek

Robbiblubber.Util.PdfText

Text aus digitalen und gescannten PDFs extrahieren: direkter Textzugriff mit PdfPig, OCR-Fallback mit Tesseract und strukturierte Ausgabe für Tabellen.

Native Laufzeitbibliotheken und Tesseract-Sprachdaten für OCRZielframeworks: net8.0 / net10.0

Das steckt drin

  • Vorhandenen PDF-Text verwenden und bei gescannten Seiten auf OCR zurückgreifen.
  • Layoutorientierter Text oder strukturierte Tabellen, wahlweise als Markdown oder TSV.
  • Konfigurierbare OCR-Sprachen, Bildvorverarbeitung, Seitenausrichtung und parallele Seitenverarbeitung.
  • Für OCR Tesseract zusätzlich direkt als NuGet-Paket referenzieren und passende traineddata-Dateien bereitstellen.
Ein kleiner Einstieg C#
using Robbiblubber.Util.PdfText;

PdfTextExtractor.Options options = new() { Languages = "eng+deu" };
using PdfTextExtractor extractor = new(options);
PdfTextExtractor.Result result = await extractor.GetResultAsync("input.pdf");
await File.WriteAllTextAsync("output.txt", result.Text);

Für dieses Beispiel werden englische und deutsche Tesseract-Sprachdaten benötigt; der Datenpfad ist über TessDataPath konfigurierbar.

Installation
dotnet add package Robbiblubber.Util.PdfText

Die .NET-Bibliotheken werden über NuGet verteilt. Tools und Bibliotheken bleiben ihren Suites und Collections zugeordnet.

Alle Projekte ansehen