HTML էջը PDF փաստաթղթի փոխարկելը C# լեզվով տարածված խնդիր է, որը հաճախ օգտագործվում է HTML ձևանմուշներից հաշիվ-ապրանքագրեր, հաշվետվություններ, պայմանագրեր և այլ գործարար փաստաթղթեր ստեղծելու համար։ HTML էջը PDF փաստաթղթի փոխարկելը C# լեզվով նույնպես կարևոր է դինամիկ վեբ բովանդակությունից ստատիկ, փոխադրելի և տպագրության համար պատրաստ փաստաթղթեր ստեղծելու համար։
HTML էջը PDF փաստաթղթի փոխակերպելու գործընթացը ներառում է հետևյալ քայլերը՝
- Բացեք սկզբնաղբյուրի HTML ֆայլը և վերլուծեք HTML էջի կոդը։
- Ստանալ HTML էջում օգտագործված CSS և JS ֆայլերը։
- Վերլուծել CSS ոճերը CSS ֆայլերում։
- Վերլուծել JavaScript կոդը JS ֆայլերում։
- Գործարկել JavaScript կոդը և ստանալ արդյունքում ստացված HTML էջի կոդը։
- Ստեղծել նոր PDF փաստաթուղթ։
- Փոխարկել HTML էջի ռաստրային և վեկտորային գրաֆիկան (ներառյալ CSS ոճերը և թափանցիկությունը) PDF էջի գրաֆիկայի և ավելացնել այդ գրաֆիկան արդյունքում ստացված PDF փաստաթղթին։
- Փոխարկել HTML էջի տեքստը (ներառյալ CSS ոճերը) PDF էջի տեքստի և ավելացնել այդ տեքստը արդյունքում ստացված PDF փաստաթղթին։
- Պահպանել ստեղծված PDF փաստաթուղթը ֆայլում։
HTML5 ստանդարտի սպեցիֆիկացիա (
https://html.spec.whatwg.org/print.pdf) պարունակում է 1553 էջ։
CSS2 ստանդարտի սպեցիֆիկացիա (
https://www.w3.org/TR/CSS22/css2.pdf) պարունակում է 426 էջ։
JavaScript ստանդարտի սպեցիֆիկացիա (
https://ecma-international.org/wp-content/uploads/ECMA-262_16th_edition_june_2025.pdf) պարունակում է 835 էջ։
HTML-ը PDF-ի փոխակերպելու քայլերը և HTML5, CSS2 և JavaScript սպեցիֆիկացիաների վերաբերյալ տեղեկատվությունը ներկայացված են վերևում՝ պարզաբանելու համար, որ ընդհանուր առմամբ HTML-ը PDF-ի փոխակերպելը շատ բարդ խնդիր է, եթե այն իրականացվի զրոյից։
Միևնույն ժամանակ, այս բարդ խնդիրն արդեն իսկ իրականացված է ժամանակակից վեբ զննարկիչներում, որոնք HTML էջերը կատարելապես են մշակում և կարող են պահպանել մշակված HTML էջը PDF ֆայլի մեջ։ Հետևաբար, ծագում է ողջամիտ հարց. հնարավո՞ր է օգտագործել վեբ զննարկիչ C# ծրագրում՝ HTML էջը PDF փաստաթղթի փոխակերպելու համար։
Այս հոդվածում մենք կանդրադառնանք, թե ինչպես C# ծրագրում ցանկացած բարդության HTML էջը PDF փաստաթղթի փոխակերպել բացարձակապես անվճար և առավելագույն որակով՝ օգտագործելով Chromium-ը։
Chromium-ը բաց կոդով վեբ զննարկչի նախագիծ է, որը հիմնականում օգտագործվում է որպես հիմք ժամանակակից վեբ զննարկիչների մեծ մասի համար, ներառյալ Google Chrome-ը, Microsoft Edge-ը, Opera-ն և այլն։ Այն նախագծված է արագությունը, անվտանգությունը և կայունությունը հաշվի առնելով և ներառում է Google-ի, Microsoft-ի և այլ ընկերությունների մշակողների զգալի ներդրումները։
HTML էջը PDF փաստաթղթի փոխակերպելը C# լեզվով՝ օգտագործելով Chrome հրամանի տողը
HTML էջը PDF փաստաթղթի փոխակերպելու ամենահեշտ ձևը հետևյալ Chrome հրամանը հրամանի տողից գործարկելն է.
"C:\Program Files\Google\Chrome\Application\chrome.exe" --headless --disable-gpu —run-all-compositor-stages-before-draw --no-margins --printBackground=true --no-pdf-header-footer --print-to-pdf="D:\result.pdf" "https://www.vintasoft.com/index.html"
Ահա Chrome հրամանի տողում օգտագործվող պարամետրերի համառոտ նկարագրությունը.
- --headless – նշում է, որ Chrome-ը պետք է աշխատի առանց գրաֆիկական ինտերֆեյսի։
- --disable-gpu – նշում է, որ HTML էջը մշակելիս GPU-ն պետք է անջատված լինի։Այս պարամետրը պարտադիր է Chrome-ի հին տարբերակների հետ համատեղելիության համար:
- --run-all-compositor-stages-before-draw – նշում է, որ HTML էջի մշակվելուց առաջ պետք է ավարտվեն մշակման և կազմման բոլոր փուլերը:
- --no-margins – նշում է, որ HTML էջը պետք է մշակվի առանց լուսանցքների:
- --printBackground – նշում է, որ HTML էջը պետք է պարունակի ֆոնային գրաֆիկա:
- --no-pdf-header-footer – նշում է, որ ստեղծված PDF փաստաթուղթը չպետք է պարունակի փաստաթղթի տեղեկատվությամբ վերնագիր/ստորոտ:
- --print-to-pdf – նշում է պահպանված PDF ֆայլի ուղին: Ուղին պետք է լինի բացարձակ:
Վերը նշված հրամանը կարող է գործարկվել Windows/Linux/maOS հրամանի տողից կամ C# կոդից:
Ահա C# կոդը, որը ցույց է տալիս, թե ինչպես փոխարկել HTML էջը PDF փաստաթղթի .NET կոնսոլային ծրագրում՝ օգտագործելով Chrome-ը.
using System.Diagnostics;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
string chromePath = @"C:\Program Files\Google\Chrome\Application\chrome.exe";
string sourceUrl = "https://www.vintasoft.com/index.html";
string resultPdfFilePath = @"D:\result.pdf";
string chromeArgsTemplate =
"--headless --no-pdf-header-footer --no-margins --disable-gpu --run-all-compositor-stages-before-draw --printBackground=true --print-to-pdf=\"{0}\" {1}";
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = chromePath,
Arguments = string.Format(chromeArgsTemplate, resultPdfFilePath, sourceUrl),
UseShellExecute = false,
CreateNoWindow = false
};
using (Process process = Process.Start(startInfo))
{
process.WaitForExit();
}
Console.WriteLine("HTML page is converted to the PDF document.");
}
}
}
Այս փոխակերպման մեթոդը կարող է օգտագործվել, եթե համակարգչում տեղադրված է Chrome վեբ զննարկիչը, և դուք գիտեք "chrome.exe" ֆայլի ուղին:
Արդյունքում ստացված .NET ծրագիրը փոքր է չափսերով, քանի որ այն չի պարունակում որևէ լրացուցիչ գրադարան և ամբողջությամբ կախված է Chrome վեբ զննարկչից:
HTML էջը PDF փաստաթղթի փոխակերպումը C# լեզվով՝ օգտագործելով CefSharp.OffScreen nuget-package-ը
CefSharp.OffScreen nuget-package-ը պարունակում է CefSharp գրադարանի կոմպիլյացված տարբերակը և թույլ է տալիս մշակողներին ֆոնային ռեժիմում աշխատեցնել Chromium վեբ զննարկչի ամբողջական օրինակ՝ առանց տեսանելի ինտերֆեյսի:
Եթե ցանկանում եք օգտագործել CefSharp.OffScreen գրադարանը .NET Framework ծրագրում, պարզապես ավելացրեք հղում CefSharp.OffScreen nuget-փաթեթին .NET Framework ծրագրում։
Եթե ցանկանում եք օգտագործել CefSharp.OffScreen գրադարանը .NET Core ծրագրում, պարզապես ավելացրեք հղում CefSharp.OffScreen.NETCore nuget-փաթեթին .NET Core ծրագրում։
Ահա C# կոդը .NET կոնսոլային ծրագրի համար, որը HTML էջը փոխակերպում է PDF փաստաթղթի՝ օգտագործելով CefSharp.OffScreen գրադարանը.
using CefSharp;
using CefSharp.OffScreen;
using System;
using System.Threading.Tasks;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
string sourceUrl = "https://www.vintasoft.com/index.html";
string resultPdfFilePath = @"D:\result.pdf";
Task task = ConvertHtmlToPdfUsingCefSharpOffScreen(sourceUrl, resultPdfFilePath);
task.Wait();
Console.WriteLine("HTML page is converted to the PDF document.");
Console.ReadKey();
}
static async Task ConvertHtmlToPdfUsingCefSharpOffScreen(string url, string pdfPath)
{
// if CEF is not initialized
if (Cef.IsInitialized == null || Cef.IsInitialized == false)
{
// create CEF settings
CefSettings settings = new CefSettings();
// initialize CEF
Cef.Initialize(settings);
}
// create Chromium web browser
using (ChromiumWebBrowser browser = new ChromiumWebBrowser(url))
{
// wait while page will be loaded
await browser.WaitForInitialLoadAsync();
// create PDF print settings
PdfPrintSettings printSettings = new PdfPrintSettings
{
MarginType = CefPdfPrintMarginType.None,
PrintBackground = true,
Landscape = false,
Scale = 1.0,
PreferCssPageSize = true,
DisplayHeaderFooter = false
};
// print web page to a PDF file
await browser.PrintToPdfAsync(pdfPath, printSettings);
}
}
}
}
Այս փոխակերպման մեթոդը անկախ է Chrome վեբ զննարկիչից, և այս դեպքում անհրաժեշտ չէ ինքներդ կոմպիլացնել CefSharp-ը, քանի որ CefSharp.OffScreen nuget-փաթեթի ստեղծողները արդեն արել են դա։
Արդյունքում ստացված .NET հավելվածը լիովին ինքնուրույն է և մեծ չափի (մի փոքր ավելի քան 300 ՄԲ), քանի որ այն պարունակում է CefSharp գրադարանի ֆայլեր։
HTML էջը PDF փաստաթղթի փոխակերպելը C# լեզվով՝ օգտագործելով CefSharp գրադարանը
CefSharp-ը բաց կոդով նախագիծ է, որը տրամադրում է .NET փաթեթավորում Chromium Embedded Framework (CEF)-ի համար։ CefSharp-ը թույլ է տալիս մշակողներին ներդնել լիովին ֆունկցիոնալ Chromium-ի վրա հիմնված վեբ զննարկիչ անմիջապես C# կամ VB.NET աշխատասեղանի հավելվածների մեջ։
CefSharp պահոցը գտնվում է GitHub-ում՝
https://github։com/cefsharp/cefsharp
Պահոցը պարունակում է 15 նախագիծ, այդ թվում՝ կոնսոլային հավելվածի նմուշ, WinForms հավելվածի նմուշ և WPF հավելվածի նմուշ։
Փորձեք գործարկել WPF հավելվածի նմուշը (նախագիծ՝ "CefSharp.Wpf.Example."):netcore") և դուք կտեսնեք WPF ծրագիր՝ Chrome-ին նման էջի նավիգացիայով։ WPF ծրագիրը ներառում է հղումների նավիգացիա, CSS ոճեր և JavaScript կոդ՝ այն զգացվում է ինչպես Chrome-ը։ Ծրագրի գլխավոր ցանկում կարող եք ընտրել "Թեստեր => Տպել ընթացիկ ներդիրը PDF-ի վրա" ցանկը և պահպանել ստացված HTML էջը որպես PDF ֆայլ։
Այս փոխակերպման մեթոդը անկախ է Chrome վեբ զննարկչից, բայց դուք պետք է ձեռքով կոմպիլացնեք CefSharp-ը սկզբնական կոդից, ինչը կատարվում է ավտոմատ կերպով՝ Visual Studio-ում CefSharp նախագիծը կոմպիլացնելիս։
Արդյունքում ստացված .NET ծրագիրը ("CefSharp.Wpf.Example.netcore" նախագիծը) լիովին ինքնուրույն է և ունի մեծ չափս (մի փոքր ավելի քան 400 ՄԲ), քանի որ այն պարունակում է CefSharp գրադարանի ֆայլեր։
PDF փաստաթղթերի մշակում VintaSoft Imaging .NET SDK-ով
VintaSoft-ը որոշել է չներառել HTML էջերի փոխակերպման ֆունկցիոնալություն PDF փաստաթղթերին իր SDK-ներում, քանի որ խնդիրը շատ բարդ է և արդեն իսկ իրականացված է ժամանակակից վեբ զննարկիչներում:
Միևնույն ժամանակ,
VintaSoft Imaging .NET SDK-ն և
VintaSoft PDF .NET Plug-in-ը թույլ են տալիս ստեղծել, դիտել, ստուգել, տպել, մեկնաբանել, խմբագրել, պաշտպանել, ստորագրել, օպտիմալացնել, սեղմել, փոխարկել և պահպանել PDF և PDF/A փաստաթղթեր Windows, Linux և macOS համակարգերում:
Համապատասխանաբար, VintaSoft SDK-ն կարող է օգտագործվել ստեղծված PDF փաստաթուղթը մշակելու համար, մասնավորապես՝
VintaSoft Imaging .NET SDK +
VintaSoft PDF .NET Plug-in-ի միջոցով PDF փաստաթղթեր մշակելու հնարավորությունների մասին մանրամասն տեղեկություններ կարող եք գտնել այստեղ՝
https://www.vintasoft.com/hy/vspdf-dotnet-index.html