إن إدراج HTML إلى PDF شائع، ولكن الإعدادات الافتراضية ليست مثالية دائما للطباعة أو الأرشيف أو المجموعات التنفيذية. Aspose.HTML for .NET,يمكنك التحكم بالضبط في حجم الصفحة والمنحدرات والتوجيه وقواعد وسائل الإعلام CSS لإنتاج PDFs متسقة ومهنية.هذا الدليل يظهر إعداد نظيف وعينة C# كاملة يمكنك إدخالها في مشروعك.

Key Takeaways

  • استخدام Converter.ConvertHTML مع PdfSaveOptions لـ HTML و PDF.
  • تثبيت PageSetup.AnyPage لتحديد حجم الصفحة و المارغين (A4 أو A3 أو الأحجام المخصصة).
  • التبديل Css.MediaType بين شاشة و الطباعة - احترام القواعد الصحيحة لـ CSS.
  • إنشاء العديد من النتائج: A4 للطباعة، A3 المناظر الطبيعية للترتيب الواسع، وحجم القطع المخصصة للكتب.

خطوة بخطوة دليل

1) Load an HTML document

تحميل الملف عند الاشتراك، أو إنشاء HTMLDocument من سلك مع قاعدة URI لحل الأصول النسبية.

2) Configure page geometry and CSS media

تحديد حجم الصفحة والحدود عبر PageSetup.AnyPage.اختيار MediaType.Print لتطبيق @media print النمط، أو MediaType.Screen لتصميم أسلوب الشاشة.

3) Render to PDF

مكالمة Converter.ConvertHTML(document, options, outputPath) لتصنيع PDF الخاص بك.

نموذج كامل C# Code

using System;
using System.IO;
using Aspose.Html;
using Aspose.Html.Converters;
using Aspose.Html.Saving;            // PdfSaveOptions
using Aspose.Html.Rendering;         // MediaType
using Aspose.Html.Drawing;           // Length, Size, Margin, Page

namespace AsposeHtmlAdvancedPdfDemo
{
    internal static class Program
    {
        // How to run:
        // 1) dotnet new console -n AsposeHtmlAdvancedPdfDemo
        // 2) cd AsposeHtmlAdvancedPdfDemo
        // 3) dotnet add package Aspose.HTML
        // 4) Replace Program.cs with this file's contents
        // 5) dotnet run -- "path-to-input.html"   (argument optional)
        private static void Main(string[] args)
        {
            // Ensure output folder exists
            string outDir = Path.Combine(Directory.GetCurrentDirectory(), "out");
            Directory.CreateDirectory(outDir);

            // Prepare an HTMLDocument: from file path (if provided) or from inline HTML
            HTMLDocument document;
            if (args.Length > 0 && File.Exists(args[0]))
            {
                document = new HTMLDocument(args[0]);
            }
            else
            {
                string html = "<!DOCTYPE html>" +
                              "<html><head><meta charset=\\\"utf-8\\\">" +
                              "<title>Advanced PDF Output</title>" +
                              "<style>body{font-family:Arial,Helvetica,sans-serif;margin:24px}" +
                              "h1{margin:0 0 12px} .lead{color:#444} .wide{width:100%;border-collapse:collapse}" +
                              ".wide th,.wide td{border:1px solid #ddd;padding:6px 8px;text-align:left}" +
                              "@media print { body{font-size:12pt} .lead{color:#000} }</style>" +
                              "</head><body>" +
                              "<h1>Aspose.HTML PDF Output</h1>" +
                              "<p class=\\\"lead\\\">This PDF is rendered with custom page size, margins, and media rules.</p>" +
                              "<table class=\\\"wide\\\"><tr><th>Item</th><th>Qty</th><th>Price</th></tr>" +
                              "<tr><td>Widget A</td><td>4</td><td>$12.00</td></tr>" +
                              "<tr><td>Widget B</td><td>2</td><td>$9.50</td></tr></table>" +
                              "</body></html>";
                document = new HTMLDocument(html, ".");
            }

            using (document)
            {
                // A4 portrait with 12.7 mm margins, using print CSS
                var a4 = new PdfSaveOptions();
                a4.Css.MediaType = MediaType.Print;
                var mm = Length.FromMillimeters;
                a4.PageSetup.AnyPage = new Page(
                    new Size(mm(210), mm(297)),               // A4
                    new Margin(mm(12.7), mm(12.7), mm(12.7), mm(12.7))
                );
                string a4Path = Path.Combine(outDir, "document-a4.pdf");
                Converter.ConvertHTML(document, a4, a4Path);
                Console.WriteLine($"Saved: {a4Path}")
;
                // A3 landscape (420 x 297 mm) with tighter margins, using screen CSS
                var a3Landscape = new PdfSaveOptions();
                a3Landscape.Css.MediaType = MediaType.Screen;
                a3Landscape.PageSetup.AnyPage = new Page(
                    new Size(mm(420), mm(297)),               // A3 landscape
                    new Margin(mm(10), mm(10), mm(10), mm(10))
                );
                string a3Path = Path.Combine(outDir, "document-a3-landscape.pdf");
                Converter.ConvertHTML(document, a3Landscape, a3Path);
                Console.WriteLine($"Saved: {a3Path}");

                // Custom trim size 6 x 9 inches with narrow margins
                var custom = new PdfSaveOptions();
                custom.Css.MediaType = MediaType.Print;
                custom.PageSetup.AnyPage = new Page(
                    new Size(Length.FromInches(6), Length.FromInches(9)),
                    new Margin(mm(5), mm(5), mm(5), mm(5))
                );
                string customPath = Path.Combine(outDir, "document-6x9.pdf");
                Converter.ConvertHTML(document, custom, customPath);
                Console.WriteLine($"Saved: {customPath}");
            }
        }
    }
}

كيفية الركض

  1. إعداد تطبيق كونسول :
dotnet new console -n AsposeHtmlAdvancedPdfDemo
cd AsposeHtmlAdvancedPdfDemo
  1. إضافة الحزمة :
dotnet add package Aspose.HTML
  1. استبدال Program.cs مع The مثال كامل أعلى.
  2. تشغيل مع ملف HTML (اختياري):
dotnet run -- ../path/to/sample.html

ماذا يفعل هذا الرمز

  • تحميل ملف HTML (أو استخدام HTML في الخطوط لبدء سريع).
  • تكوينات الـPdfSaveOptions لقطعة A4، A3 المناظر الطبيعية، وحجم مقياس 6 × 9 بوصة.
  • تطلب الـMediaType.Print أو MediaType.Screen لتناسب قواعد CSS الخاصة بك.
  • تصدير 3 ملفات PDF مخصصة لـ out/ مجلد.

حل المشكلات & نصائح

  • قواعد CSS الخاطئة: طنجة options.Css.MediaType بين Print و Screen لتناسب لوحة النمط الخاصة بك.
  • المحتوى المضغوط أو المضغوط: زيادة الحدود أو حجم الصفحة ؛ فكر في تنسيقات أكبر للجدول الواسعة.
  • المصدر المفقود: تأكد من أن الخطوط متاحة للمعهد أو مدمجة عبر @font-face في HTML الخاص بك.
  • أداء: تبسيط DOM / CSS الثقيلة حيثما كان ذلك ممكنا ؛ خزانة الأصول الثابتة.

FAQ

س1: كيف يمكنني تعيين حجم الصفحة والحدود لـ PDF؟? استخدام PdfSaveOptions.PageSetup.AnyPage = new Page(Size, Margin) وحدة من Length (مليميتر أو بوصة).

Q2: هل يمكنني إجبار أنماط الطباعة أثناء التصوير؟? نعم، مجموعة options.Css.MediaType = MediaType.Print هكذا @media print قواعد تنطبق.

Q3: كيف أقوم بتحويل صفحات المناظر الطبيعية؟? تحديد المناظر الطبيعية Size (على سبيل المثال A3 420 × 297 مم) عند إنشاء Page.

كيف يمكنني تصدير العديد من الاختلافات (الطباعة مقابل الشاشة)؟? خلق منفصل PdfSaveOptions الحالات المختلفة Css.MediaType و صفحة إعدادات ثم الاتصال Converter.ConvertHTML لكل واحد منهم.

Q5: هل أحتاج إلى محرك متصفح يعمل؟? لا. Aspose.HTML يرفع صفحة الخادم دون متصفحات خارجية.

استنتاجات

مع PdfSaveOptions ويمكنك إنتاج ملفات تعريف الويب التي تناسب الطباعة أو الأرشيف أو الاحتياجات التنفيذية.بدءاً من صورة A4 للاستخدام العام، إضافة A3 المناظر الطبيعية إلى ترتيب واسع، والحفاظ على حجم مقياس مخصص للكتاب أو التقارير.اختبار مع الوثائق التمثيلية لإغلاق الافتراضات التي تناسب العلامة التجارية الخاصة بك والمصالح.

More in this category