robbiblubber.org
FR
Projets
Collection.NETMIT

Util.NET.

Robbiblubber.Util.NET

Des outils pour les tâches concrètes en .NET : indicateurs de progression en console, accès commun aux fichiers locaux et distants, et extraction de texte PDF avec OCR. rush et PdfText CLI rendent ces bibliothèques accessibles en ligne de commande.

.NET 8.NET 10

Outils

2
Outil

rush

Robbiblubber.Util.FileStorageAdapters.Shell

Un shell pour plusieurs systèmes de fichiers : connecter dossiers locaux, FTP/FTPS, SSH/SFTP et SharePoint Online sous des noms, puis utiliser les mêmes commandes en mode interactif ou par script.

Fournir les bibliothèques d’adaptateurs requises avec le shellFrameworks cibles: net8.0 / net10.0
Outil

PdfText CLI

Robbiblubber.Util.PdfText.Cli

PdfText en ligne de commande : xpdf lit un PDF et écrit le texte extrait dans un fichier, avec OCR de secours pour les pages numérisées.

Bibliothèques natives et données linguistiques Tesseract requisesFrameworks cibles: net8.0

Bibliothèques et extensions

7

Les bibliothèques sont disponibles sous forme de paquets NuGet distincts. Installez les briques utiles à votre projet.

Bibliothèque

Robbiblubber.Util.ConsoleToolkit

Barres de progression et indicateurs animés pour les applications console, avec messages, couleurs et présentation personnalisable.

Terminal interactifFrameworks cibles: net8.0 / net10.0

Ce qu’elle contient

  • ConsoleProgressBar affiche la progression entre un minimum et un maximum.
  • ConsoleSpinner accompagne les tâches dont la durée totale est inconnue.
  • Messages, couleurs, largeur de barre et images du spinner configurables ; aucune dépendance de paquet supplémentaire.
Un petit point de départ 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();

L’exemple atteint 100 % avant que Finish() termine l’affichage.

Installation
dotnet add package Robbiblubber.Util.ConsoleToolkit
Bibliothèque

Robbiblubber.Util.FileStorageAdapters

Une API commune pour les fichiers et dossiers locaux, sur FTP/FTPS, SSH/SFTP ou dans SharePoint Online. La copie et le déplacement fonctionnent aussi entre adaptateurs.

Pour les applications .NETFrameworks cibles: net8.0 / net10.0

Ce qu’elle contient

  • IAdapter, IDirectory et IFile constituent le modèle commun ; les fournisseurs de stockage sont ajoutés séparément.
  • Lister, lire, écrire, créer, supprimer et filtrer avec une API asynchrone et CancellationToken.
  • Transfert de fichiers entre adaptateurs et copie récursive de dossiers. Un déplacement entre adaptateurs copie puis supprime la source.
  • Interfaces et classes de base permettent d’ajouter des adaptateurs ; rush utilise le même modèle.
Un petit point de départ 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);
}

Avec des adaptateurs initialisés et des dossiers existants : le même code de transfert pour différents stockages.

Installation
dotnet add package Robbiblubber.Util.FileStorageAdapters
Adaptateur

Robbiblubber.Util.FileStorageAdapters.Ftp

Utiliser FTP et FTPS comme stockage de fichiers, avec chiffrement TLS explicite ou implicite.

Serveur FTP/FTPS et identifiantsFrameworks cibles: net8.0 / net10.0

Ce qu’elle contient

  • FtpAdapter intègre FTP à IAdapter, IDirectory et IFile.
  • TLS, connexions actives ou passives, délais et validation des certificats sont configurables.
  • Échanger des fichiers avec les autres stockages. SFTP est fourni par l’adaptateur SSH/SFTP distinct.
Un petit point de départ 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");

Exemple avec TLS explicite. Adapter le serveur, les identifiants et le dossier existant.

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

Robbiblubber.Util.FileStorageAdapters.LocalFileSystem

Utiliser le système de fichiers local avec les mêmes interfaces que les stockages distants, grâce à LfsAdapter.

Système de fichiers local et droits d’accès appropriésFrameworks cibles: net8.0 / net10.0

Ce qu’elle contient

  • LfsAdapter intègre les chemins locaux natifs au modèle commun.
  • Lire, écrire, lister et transférer fichiers et dossiers avec les autres adaptateurs.
  • Utilise les droits du processus et les conventions de chemins du système d’exploitation.
Un petit point de départ 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 et report.pdf doivent exister. Sous Linux, utiliser par exemple /var/data.

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

Robbiblubber.Util.FileStorageAdapters.SharePoint

Accéder aux bibliothèques de documents SharePoint Online comme à un stockage de fichiers via Microsoft Graph, avec des fichiers et dossiers plutôt que des listes.

SharePoint Online et application Entra disposant des autorisations nécessairesFrameworks cibles: net8.0 / net10.0

Ce qu’elle contient

  • Une bibliothèque devient la racine logique, sélectionnée par URL de site, ID de site ou de lecteur.
  • Connexion interactive, code d’appareil et authentification applicative par secret, certificat ou identité managée.
  • Lister et transférer fichiers et dossiers ; les sessions de chargement prennent en charge les fichiers volumineux.
Un petit point de départ 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");

Nécessite une application Entra configurée avec les autorisations appropriées. Adapter les ID, la bibliothèque et le dossier.

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

Robbiblubber.Util.FileStorageAdapters.Ssh

Deux modes d’accès dans un paquet : SshAdapter utilise des commandes shell POSIX distantes, SftpAdapter le protocole SFTP.

SSH : outils POSIX/GNU ; SFTP : sous-système SFTPFrameworks cibles: net8.0 / net10.0

Ce qu’elle contient

  • Les deux adaptateurs utilisent le modèle commun de fichiers et dossiers.
  • Authentification par mot de passe ou clé privée ; vérification de la clé du serveur par empreinte.
  • SFTP ne nécessite pas de shell distant. L’adaptateur SSH requiert un shell et les outils GNU appropriés sur le serveur.
Un petit point de départ 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");

Remplacer les identifiants et le chemin ; vérifier au préalable l’empreinte du serveur et la renseigner.

Installation
dotnet add package Robbiblubber.Util.FileStorageAdapters.Ssh
Bibliothèque

Robbiblubber.Util.PdfText

Extraire le texte des PDF numériques et numérisés : extraction directe avec PdfPig, OCR de secours avec Tesseract et sortie structurée pour les tableaux.

Bibliothèques natives et données linguistiques Tesseract pour l’OCRFrameworks cibles: net8.0 / net10.0

Ce qu’elle contient

  • Utiliser le texte intégré et recourir à l’OCR pour les pages numérisées.
  • Texte préservant la disposition ou tableaux structurés, en Markdown ou TSV.
  • Langues OCR, prétraitement d’image, orientation et traitement parallèle des pages configurables.
  • Pour l’OCR, référencer aussi directement le paquet NuGet Tesseract et fournir les fichiers traineddata requis.
Un petit point de départ 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);

Cet exemple nécessite les données linguistiques Tesseract anglaises et allemandes ; TessDataPath permet de définir leur dossier.

Installation
dotnet add package Robbiblubber.Util.PdfText

Les bibliothèques .NET sont distribuées via NuGet. Les outils et bibliothèques restent regroupés dans leurs suites et collections.

Voir tous les projets