کتابخانه .NET برای خواندن اسناد EPUB

API منبع باز .NET برای دسترسی و خواندن فایل 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، تصاویر، فونت‌ها و موارد دیگر باشد. بنابراین می‌تواند همان‌گونه که مرورگر وب فایل‌های HTML دیگر را رندر می‌کند، رندر شود. این کتابخانه به کاربران امکان می‌دهد متن ساده کل کتاب را استخراج کنند، از تجزیه فصول پشتیبانی می‌کند، جلد کتاب را استخراج کند و بر روی تمام فایل‌های EPUB در یک پوشه تکرار کرده و برخی آمارها را جمع‌آوری کند.

Previous Next

شروع کار با 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 از طریق API C#

کتابخانه منبع باز EpubReader به توسعه‌دهندگان نرم‌افزار امکان می‌دهد کتاب EPUB را بارگذاری کرده و متن ساده آن را با استفاده از کد C# .NET استخراج کنند. لطفاً توجه داشته باشید که برای انجام روان این کار باید بسته HtmlAgilityPack Nuget را نصب کنید. مثال زیر نشان می‌دهد چگونه می‌توان متن ساده کل کتاب را تنها با چند خط کد .NET استخراج کرد.

چگونه فهرست مطالب را از کتاب EPUB با استفاده از 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);
            }
        }
    }
}
 فارسی