تبدیل PDF به HTML

PDF(Portable Document Format) یکی از فرمت‌های سند مورد استفاده برای اشتراک‌گذاری داده‌ها و اطلاعات بین پلتفرم‌های مختلف است. یکی از قابلیت‌های منحصر به فرد آن این است که وفاداری سند هنگام مشاهده در هر پلتفرم با استفاده از برنامه طبق مشخصات Adobe محفوظ می‌ماند. علاوه بر این، HTML(HyperText Markup Language) همچنین یک فرمت فایل پیشرو برای توسعه صفحات وب است و بیشتر مرورگرهای وب از این فرمت پشتیبانی می‌کنند. با این حال، PDF به طور گسترده‌ای پذیرفته شده است زیرا می‌تواند به راحتی بر روی هر دستگاهی بدون از دست دادن فرمت سند مشاهده شود. بنابراین، در این مقاله، ما در حال بررسی مراحل تبدیل فایل HTML به فرمت PDF با استفاده از API .NET خواهیم بود.

C# API برای تبدیل HTML به PDF

برای انجام عملیات تبدیل، در ابتدا باید Aspose.PDF for .NET را بر روی سیستم نصب کنیم. API در کتابخانه NuGet در دسترس است. لطفاً دستور زیر را در کنسول مدیر بسته اجرا کنید:

Install-Package Aspose.Pdf

پس از اتمام نصب، Aspose.PDF برای .NET در پوشه Packages در محیط جستجوگر راه حل ظاهر خواهد شد.

تبدیل HTML به PDF در C#

زیر مراحل نحوه تبدیل HTML به PDF با استفاده از C# آورده شده است.

  1. یک نمونه از کلاس License ایجاد کنید تا هرگونه محدودیت در فرآیند تولید فایل PDF را حذف کنید.
  2. یک شی از HtmlLoadOptions کلاس را ایجاد کنید در حالی که URL پایه HTML ورودی را به عنوان آرگومان به سازنده HtmlLoadOptions(…) پاس می‌کنید.
  3. شیء کلاس Document را inicialize کنید و شیء HtmlLoadOptions را به عنوان یک آرگومان به سازنده آن پاس کنید.
  4. متد Save(…) شیء Document را فراخوانی کنید و خروجی را در فرمت PDF تولید کنید.
// یک شیء برای شروع اجازه‌نامه ایجاد کنید.
Aspose.Pdf.License license = new Aspose.Pdf.License();

// provide path of license file
license.SetLicense("/Downloads/Conholdate.Total.NET.lic");

// create an instance of HtmlLoadOptions class
Aspose.Pdf.HtmlLoadOptions htmlLoadOptions = new Aspose.Pdf.HtmlLoadOptions("User/Documents/");

// create Document object and provide input HTML file path
Aspose.Pdf.Document document = new Aspose.Pdf.Document("/Documents/input.html", htmlLoadOptions);

// save the resultant HTML to PDF format
document.Save("/Documents/Converted.pdf");

فونت‌ها را در حین تبدیل جاسازی کنید

بیشتر صفحات HTML عمدتاً از قلم‌ها (به عنوان مثال، قلم‌های موجود در پوشه‌های محلی، Google Fonts و غیره) استفاده می‌کنند و برای حفظ شکل و شمایل صفحات، باید همان قلم‌ها در حین فرآیند رندرینگ گنجانده شوند. بنابراین برای کنترل گنجاندن قلم‌ها در سند نتیجه، باید از ویژگی IsEmbedFonts استفاده کنیم.

// در طی تبدیل، فونت‌ها را بگنجانید
HtmlLoadOptions options = new HtmlLoadOptions {IsEmbedFonts = true};

واحد اندازه‌گیری در Aspose.PDF نقاط است. و ما می‌دانیم که اندازه A3 برابر با 297 × 420 میلی‌متر یا 11.69 × 16.54 اینچ است. بنابراین، ابعاد به 842 × 1190 نقاط گرد می‌شوند. در کد زیر، ما اندازه صفحه سند حاصل شده را به A3 و جهت صفحه را به افقی تنظیم می‌کنیم.

// اندازه صفحه را A3 و جهت صفحه را افقی تنظیم کنید
HtmlLoadOptions options = new HtmlLoadOptions(url)
{
  PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
};

وب‌سایت را به PDF تبدیل کنید

علاوه بر تبدیل فایل‌های HTML، ممکن است به تبدیل مستقیم یک صفحه وب به فرمت PDF نیز نیاز داشته باشیم. بنابراین برای تحقق این نیاز، ابتدا محتوای صفحه وب از راه دور را با استفاده از نمونه HttpClient دریافت می‌کنیم، یک شیء Stream ایجاد می‌کنیم و سپس نمونه Stream را به شیء Document منتقل می‌کنیم. دلیل نیاز ما به محتوا در Stream این است که نمونه Document فقط فایل‌ها یا اشیاء استریم را قبول می‌کند.

بخش زیر مراحل تبدیل یک صفحه وب به PDF با استفاده از C# را توضیح می‌دهد.

  1. محتوای صفحه را با استفاده از شیء HttpClient بخوانید.
  2. شیء HtmlLoadOptions را ایجاد کنید و URL پایه را تنظیم کنید.
  3. Initialize a Document object and pass the stream object and HtmlLoadOptions instance as arguments.
  4. متد Save(String) را از کلاس Document فراخوانی کنید تا خروجی تولید شود.
public static void ConvertHTMLtoPDFAdvanced_WebPage()
{
    const string url = "https://en.wikipedia.org/wiki/Aspose_API";
    
    // صفحه را به اندازه A3 و حالت افقی تنظیم کنید؛ 
    HtmlLoadOptions options = new HtmlLoadOptions(url)
    {
        // ابعاد صفحه را تنظیم کنید
        PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
    };
    
    // ایجاد یک نمونه از شیء Document
    Document pdfDocument= new Document(GetContentFromUrlAsStream(url), options);
    
    // Save the resultant
    pdfDocument.Save(_dataDir + "html_test.PDF");
}

private static Stream GetContentFromUrlAsStream(string url, ICredentials credentials = null)
{
    
    using (var handler = new HttpClientHandler { Credentials = credentials })
    using (var httpClient = new HttpClient(handler))
    {
        // نتایج را در نمونه جریان دریافت و بازگردانی کنید
        return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
    }
}

Render complete HTML on a single page

در هنگام تبدیل HTML به PDF، طول فایل نتیجه بر اساس طول محتوای یک سند HTML ورودی تعیین می‌شود. بنابراین، اگر HTML ورودی شامل چندین صفحه باشد، فایل نتیجه نیز بر روی چندین صفحه خواهد بود. با این حال، ما می‌توانیم خروجی را به یک صفحه PDF محدود کنیم. برای دستیابی به این نیاز، می‌توان از ویژگی IsRenderToSinglePage کلاس HtmlLoadOptions استفاده کرد.

متن زیر یک قطعه کد برای رندر کردن محتوای کامل HTML در یک صفحه PDF واحد با استفاده از C# است.

// برای مثال‌های کامل و فایل‌های داده، لطفا به https://github.com/aspose-pdf/Aspose.PDF-for-.NET مراجعه کنید
// شیء HtmlLoadOptions را مقداردهی اولیه کنید
HtmlLoadOptions options = new HtmlLoadOptions();

// خصوصیت رندر را به یک صفحه تنظیم کنید
options.IsRenderToSinglePage = true;

// بارگذاری محتوای HTML منبع سند
Document pdfDocument= new Document("/Documents/HTMLToPDF.html", options);

// فایل PDF حاصل را ذخیره کنید
pdfDocument.Save("/Documents/MyRenderContentToSamePage.pdf");

Get a Free License

شما می‌توانید یک مجوز موقت رایگان درخواست کنید تا بدون هیچ محدودیتی اقدام به آزمایش API کنید.

نتیجه گیری

در این مقاله، ما با رویکرد تبدیل فایل‌های HTML به فرمت PDF با استفاده از API .NET آشنا شدیم. اگر شما بیشتر علاقه‌مند به یادگیری ویژگی‌های هیجان‌انگیز دیگری که توسط Aspose.PDF برای .NET ارائه می‌شود، هستید، لطفاً به صفحه Key features مراجعه کنید. مجموعه کاملی از مثال‌ها را می‌توانید در GitHub repository پیدا کنید.

نکته سریع

ما همچنین برنامه‌های آنلاین رایگانی را توسعه داده‌ایم تا به‌سرعت ویژگی‌هایی را که توسط APIهای ما ارائه می‌شود بررسی کنید. بنابراین می‌توانید Aspose.PDF Conversion App را برای تبدیل فایل HTML به فرمت PDF بررسی کنید. علاوه بر این، می‌توانید از فرمت‌های فایل مختلف دیگری نیز استفاده کنید و نیازهای تبدیل خود را برآورده سازید.