.NET Βιβλιοθήκη για Ανάγνωση Εγγράφων EPUB
Ανοιχτής Πηγής .NET API για Πρόσβαση & Ανάγνωση αρχείου EPUB, εξαγωγή των περιεχομένων του και μετατροπή EPUB σε PDF μέσα σε εφαρμογές C#.
Το EpubReader είναι μια πολύ ισχυρή ανοιχτού κώδικα βιβλιοθήκη .NET που επιτρέπει στους προγραμματιστές λογισμικού να ανοίγουν και να διαβάζουν έγγραφα EPUB μέσα στις δικές τους εφαρμογές C#. Η βιβλιοθήκη υποστηρίζει πλήρως τα πρότυπα EPUB 2 (2.0, 2.0.1) καθώς και EPUB 3 (3.0, 3.0.1, 3.1, 3.2). Η βιβλιοθήκη EpubReader υποστηρίζει μόνο την ανάγνωση αρχείων EPUB και προς το παρόν δεν παρέχει υποστήριξη για εγγραφή.
Η βιβλιοθήκη EpubReader υποστηρίζει την ανάλυση βιβλίων EPUB και την εξαγωγή περιεχομένων χωρίς εξωτερικές εξαρτήσεις. Ένα έγγραφο EPUB μπορεί να αποτελείται από μια συλλογή αρχείων HTML, συμπεριλαμβανομένων CSS, εικόνων, γραμματοσειρών κ.ά. Έτσι μπορεί να αποδοθεί με τον ίδιο τρόπο όπως το κάνει ένας web browser με άλλα αρχεία HTML. Η βιβλιοθήκη επιτρέπει στους χρήστες να εξάγουν το απλό κείμενο ολόκληρου του βιβλίου, υποστήριξη ανάλυσης κεφαλαίων, εξαγωγή εξώφυλλου βιβλίου, και επανάληψη σε όλα τα αρχεία EPUB σε έναν φάκελο για τη συλλογή κάποιων στατιστικών.
Ξεκινώντας με το EpubReader
Ο συνιστώμενος τρόπος για την εγκατάσταση του EpubReader είναι μέσω του NuGet. Παρακαλώ χρησιμοποιήστε την παρακάτω εντολή για μια ομαλή εγκατάσταση.
Εγκατάσταση του EpubReader μέσω NuGet
NuGet\Install-Package VersOne.Epub -Version 3.2.0
Μπορείτε επίσης να το εγκαταστήσετε χειροκίνητα· κατεβάστε τα τελευταία αρχεία έκδοσης απευθείας από το αποθετήριο GitHub.
Πώς να φορτώσετε και να διαβάσετε βιβλίο EPUB μέσω .NET βιβλιοθήκης
Η ανοιχτού κώδικα βιβλιοθήκη EpubReader υποστηρίζει πλήρως τη φόρτωση και ανάγνωση βιβλίων EPUB μέσα σε εφαρμογές .NET. Η βιβλιοθήκη περιλαμβάνει πολυάριθμες χρήσιμες μεθόδους για τη διαχείριση βιβλίων EPUB, όπως η φόρτωση του βιβλίου στη μνήμη, η εκτύπωση του τίτλου του βιβλίου, η εκτύπωση του συγγραφέα του βιβλίου, η εκτύπωση του πίνακα περιεχομένων, η εκτύπωση ενός συγκεκριμένου κεφαλαίου του βιβλίου, η εκτύπωση όλων των κεφαλαίων του βιβλίου, κ.ά. Το παρακάτω παράδειγμα κώδικα δείχνει πώς να φορτώσετε και να εκτυπώσετε ένα βιβλίο EPUB χρησιμοποιώντας τη βιβλιοθήκη.
Διαβάστε βιβλίο EPUB μέσω .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();
}
Εξαγωγή απλού κειμένου από ένα βιβλίο EPUB μέσω C#
Η ανοιχτού κώδικα βιβλιοθήκη EpubReader επιτρέπει στους προγραμματιστές λογισμικού να φορτώσουν ένα βιβλίο EPUB και να εξάγουν απλό κείμενο από αυτό χρησιμοποιώντας κώδικα C# .NET. Παρακαλώ σημειώστε ότι πρέπει να εγκαταστήσετε το HtmlAgilityPack NuGet για να εκτελέσετε αυτήν την εργασία ομαλά. Το παρακάτω παράδειγμα δείχνει πώς να εξάγετε το απλό κείμενο ολόκληρου του βιβλίου με μόνο μερικές γραμμές κώδικα .NET.
Εξαγωγή Απλού Κειμένου από ένα EPUB Βιβλίο μέσω 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();
}
}
}
Εξαγωγή πίνακα περιεχομένων από βιβλίο EPUB μέσω C# API
Η ανοιχτή βιβλιοθήκη EpubReader επιτρέπει στους προγραμματιστές λογισμικού να φορτώνουν ένα βιβλίο EPUB και να εξάγουν απλό κείμενο από αυτό χρησιμοποιώντας κώδικα C# .NET. Παρακαλούμε σημειώστε ότι πρέπει να εγκαταστήσετε το HtmlAgilityPack Nuget για να εκτελέσετε αυτήν την εργασία ομαλά. Το παρακάτω παράδειγμα δείχνει πώς να εξάγετε το απλό κείμενο ολόκληρου του βιβλίου με μόνο μερικές γραμμές κώδικα .NET.
Πώς να Εξάγετε τον Πίνακα Περιεχομένων από EPUB Βιβλίο μέσω .NET API;
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);
}
}
}
}