Bibliothèque .NET pour la lecture de documents EPUB

API .NET Open Source pour accéder et lire les fichiers EPUB, extraire leur contenu et convertir EPUB en PDF dans les applications C#.

EpubReader est une bibliothèque .NET open source très puissante qui permet aux développeurs de logiciels d'ouvrir et de lire des documents EPUB dans leurs propres applications C#. La bibliothèque prend en charge pleinement les normes EPUB 2 (2.0, 2.0.1) ainsi que EPUB 3 (3.0, 3.0.1, 3.1, 3.2). La bibliothèque EpubReader ne prend en charge que la lecture des fichiers EPUB et ne fournit pas de support d'écriture pour le moment.

La bibliothèque EpubReader prend en charge l'analyse des livres EPUB et l'extraction de leur contenu sans aucune dépendance externe. Un document EPUB peut être une collection de fichiers HTML incluant CSS, images, polices et plus encore. Ainsi, il peut être rendu de la même manière qu'un navigateur web le fait avec d'autres fichiers HTML. La bibliothèque permet aux utilisateurs d'extraire le texte brut de l'ensemble du livre, de prendre en charge l'analyse des chapitres, d'extraire la couverture du livre, et d'itérer sur tous les fichiers EPUB d'un répertoire afin de recueillir certaines statistiques.

Previous Next

Premiers pas avec EpubReader

La méthode recommandée pour installer EpubReader est d'utiliser NuGet. Veuillez utiliser la commande suivante pour une installation fluide.

Installer EpubReader via NuGet

NuGet\Install-Package VersOne.Epub -Version 3.2.0 

Vous pouvez également l'installer manuellement ; téléchargez les fichiers de la dernière version directement depuis le dépôt GitHub.

Comment charger et lire un livre EPUB via la bibliothèque .NET

La bibliothèque open source EpubReader prend en charge le chargement et la lecture des livres EPUB dans les applications .NET. La bibliothèque comprend de nombreuses méthodes utiles pour gérer les livres EPUB, telles que le chargement du livre en mémoire, l'affichage du titre du livre, l'affichage de l'auteur du livre, l'affichage de la table des matières, l'affichage d'un chapitre particulier du livre, l'affichage de tous les chapitres du livre, etc. L'exemple de code suivant montre comment charger et afficher un livre EPUB à l'aide de la bibliothèque.

Lire un livre EPUB via la bibliothèque .NET

using System.Text;
using VersOne.Epub;
using HtmlAgilityPack;

// Load the book into memory
EpubBook book = EpubReader.ReadBook("test.epub");

// Print the title and the author of the book
Console.WriteLine($"Title: {book.Title}");
Console.WriteLine($"Author: {book.Author}");
Console.WriteLine();

// Print the table of contents
Console.WriteLine("TABLE OF CONTENTS:");
PrintTableOfContents();
Console.WriteLine();

// Print the text content of all chapters in the book
Console.WriteLine("CHAPTERS:");
PrintChapters();

void PrintTableOfContents()
{
    foreach (EpubNavigationItem navigationItem in book.Navigation)
    {
        PrintNavigationItem(navigationItem, 0);
    }
}

void PrintNavigationItem(EpubNavigationItem navigationItem, int identLevel)
{
    Console.Write(new string(' ', identLevel * 2));
    Console.WriteLine(navigationItem.Title);
    foreach (EpubNavigationItem nestedNavigationItem in navigationItem.NestedItems)
    {
        PrintNavigationItem(nestedNavigationItem, identLevel + 1);
    }
}

void PrintChapters()
{
    foreach (EpubTextContentFile textContentFile in book.ReadingOrder)
    {
        PrintTextContentFile(textContentFile);
    }
}

void PrintTextContentFile(EpubTextContentFile textContentFile)
{
    HtmlDocument htmlDocument = new();
    htmlDocument.LoadHtml(textContentFile.Content);
    StringBuilder sb = new();
    foreach (HtmlNode node in htmlDocument.DocumentNode.SelectNodes("//text()"))
    {
        sb.AppendLine(node.InnerText.Trim());
    }
    string contentText = sb.ToString();
    Console.WriteLine(contentText);
    Console.WriteLine();
}

Extraire le texte brut d'un livre EPUB via C#

La bibliothèque open source EpubReader permet aux développeurs de charger un livre EPUB et d'en extraire le texte brut à l'aide du code C# .NET. Veuillez noter que vous devez installer HtmlAgilityPack Nuget afin d'effectuer cette tâche sans problème. L'exemple suivant montre comment extraire le texte brut de l'ensemble du livre en seulement quelques lignes de code .NET.

Extraire le texte brut d'un livre EPUB via C#

using System;
using System.Text;
using HtmlAgilityPack;

namespace VersOne.Epub.ConsoleDemo
{
    internal static class ExtractPlainText
    {
        public static void Run(string filePath)
        {
            EpubBook book = EpubReader.ReadBook(filePath);
            foreach (EpubTextContentFile textContentFile in book.ReadingOrder)
            {
                PrintTextContentFile(textContentFile);
            }
        }

        private static void PrintTextContentFile(EpubTextContentFile textContentFile)
        {
            HtmlDocument htmlDocument = new();
            htmlDocument.LoadHtml(textContentFile.Content);
            StringBuilder sb = new();
            foreach (HtmlNode node in htmlDocument.DocumentNode.SelectNodes("//text()"))
            {
                sb.AppendLine(node.InnerText.Trim());
            }
            string contentText = sb.ToString();
            Console.WriteLine(contentText);
            Console.WriteLine();
        }
    }
}

Extraire la table des matières d'un livre EPUB via l'API C#

La bibliothèque open source EpubReader permet aux développeurs de charger un livre EPUB et d'en extraire le texte brut en utilisant du code C# .NET. Veuillez noter que vous devez installer le package NuGet HtmlAgilityPack afin d'effectuer cette tâche sans problème. L'exemple suivant montre comment extraire le texte brut de l'ensemble du livre en seulement quelques lignes de code .NET.

Comment extraire la table des matières d'un livre EPUB via l'API .NET ?

using System;

namespace VersOne.Epub.ConsoleDemo
{
    internal static class PrintNavigation
    {
        public static void Run(string filePath)
        {
            using (EpubBookRef bookRef = EpubReader.OpenBook(filePath))
            {
                Console.WriteLine("Navigation:");
                foreach (EpubNavigationItemRef navigationItemRef in bookRef.GetNavigation())
                {
                    PrintNavigationItem(navigationItemRef, 0);
                }
            }
            Console.WriteLine();
        }

        private static void PrintNavigationItem(EpubNavigationItemRef navigationItemRef, int identLevel)
        {
            Console.Write(new string(' ', identLevel * 2));
            Console.WriteLine(navigationItemRef.Title);
            foreach (EpubNavigationItemRef nestedNavigationItemRef in navigationItemRef.NestedItems)
            {
                PrintNavigationItem(nestedNavigationItemRef, identLevel + 1);
            }
        }
    }
}
 Français