Przejdź do treści stopki
PORóWNANIA PRODUKTóW

PDFsharp vs QuestPDF (C# Porównanie bibliotek PDF)

Full Comparison

Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against QuestPDF on pricing, HTML support, and licensing.

View Full Comparison

Podczas pracy z dokumentami PDF w środowisku .NET programiści często porównują różne biblioteki, aby określić, która z nich najlepiej odpowiada wymaganiom ich projektu. Trzy popularne rozwiązania w ekosystemie .NET to PDFsharp, QuestPDF i IronPDF. Każda biblioteka jest przeznaczona do różnych zastosowań i ma swoje mocne i słabe strony. W tym artykule przedstawimy szczegółowe porównanie tych bibliotek oraz sposobu, w jaki obsługują one podstawowe generowanie plików PDF przy użyciu tego adresu URL, aby pomóc Ci podjąć świadomą decyzję.

Czym jest PDFsharp?

PDFsharp to biblioteka typu open source przeznaczona do tworzenia, edycji i renderowania dokumentów PDF. Koncentrując się na prostocie i podstawowych funkcjach związanych z plikami PDF, PDFsharp stał się niezawodnym narzędziem dla programistów poszukujących prostych możliwości manipulacji plikami PDF.

Najważniejsze cechy PDFsharp

  • Tworzenie i edycja plików PDF: Generuj nowe pliki PDF lub modyfikuj istniejące.
  • Rysowanie grafiki: Obejmuje obsługę rysowania kształtów, tekstu i obrazów.
  • Open Source: Na licencji MIT, co oznacza, że można z niego korzystać i modyfikować go bezpłatnie.

Instalacja

Dzięki menedżerowi pakietów NuGet łatwo zainstalujesz PDFsharp w swoich projektach. Wystarczy uruchomić następujący wiersz w konsoli menedżera pakietów NuGet:

Install-Package PDFsharp

Przykład kodu PDFsharp

Przyjrzyjmy się teraz, w jaki sposób PDFsharp może obsłużyć tworzenie nowego dokumentu PDF na podstawie podanego adresu URL. Ponieważ sam PDFsharp nie obsługuje konwersji HTML lub URL do formatu PDF, będziemy musieli zintegrować silnik renderowania stron internetowych, taki jak HtmlRenderer.PdfSharp. Dodatkowo użyjemy HttpClient do pobrania treści HTML z podanego adresu URL.

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using PdfSharp.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;

public class Program
{
    static async Task Main(string[] args)
    {
        // Ensure proper encoding support
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        string url = "https://www.apple.com";

        // Fetch HTML content from the URL
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = await client.GetStringAsync(url);

            // Generate PDF from the fetched HTML content
            var pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4);
            pdf.Save("output.pdf");

            Console.WriteLine("PDF created successfully as 'output.pdf'.");
        }
    }
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using PdfSharp.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;

public class Program
{
    static async Task Main(string[] args)
    {
        // Ensure proper encoding support
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        string url = "https://www.apple.com";

        // Fetch HTML content from the URL
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = await client.GetStringAsync(url);

            // Generate PDF from the fetched HTML content
            var pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4);
            pdf.Save("output.pdf");

            Console.WriteLine("PDF created successfully as 'output.pdf'.");
        }
    }
}
Imports System
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks
Imports PdfSharp.Pdf
Imports TheArtOfDev.HtmlRenderer.PdfSharp

Public Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		' Ensure proper encoding support
		Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)

		Dim url As String = "https://www.apple.com"

		' Fetch HTML content from the URL
		Using client As New HttpClient()
			Dim htmlContent As String = Await client.GetStringAsync(url)

			' Generate PDF from the fetched HTML content
			Dim pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4)
			pdf.Save("output.pdf")

			Console.WriteLine("PDF created successfully as 'output.pdf'.")
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel

Plik PDF wyjściowy

Przykładowy wynik PDFsharp

Jak widać, chociaż PDFsharp może służyć do konwersji treści HTML i stron internetowych do plików PDF, wymaga pomocy dodatkowych bibliotek i nie jest w stanie zachować żadnego z elementów CSS ani formatowania widocznego na oryginalnej stronie internetowej. Chociaż jest to świetna bezpłatna biblioteka dla programistów PDF, brakuje jej niektórych bardziej zaawansowanych funkcji dostępnych w bibliotekach płatnych, takich jak IronPDF.

Czym jest QuestPDF?

QuestPDF to nowoczesna biblioteka typu open source, której celem jest generowanie atrakcyjnych wizualnie plików PDF przy użyciu płynnego interfejsu API. Jego innowacyjne podejście do układu i renderowania dokumentów sprawia, że jest to silny kandydat do zastosowań wymagających dynamicznych i złożonych projektów.

Najważniejsze funkcje QuestPDF

  • Fluent API: Oferuje deklaratywne podejście do definiowania układów dokumentów.
  • Nowoczesny system układów: Zainspirowany CSS, obsługuje siatki, komponenty i elastyczne struktury układów.
  • Wysoka wydajność: Zoptymalizowana pod kątem szybkiego renderowania dużych i złożonych dokumentów.

Instalacja

Dzięki temu, że biblioteka ta jest dostępna do zainstalowania jako pakiet NuGet, jej instalacja jest prosta i wymaga jedynie uruchomienia jednej linii w konsoli NuGet:

Install-Package QuestPDF

Przykład kodu QuestPDF

Teraz przyjrzyjmy się, jak QuestPDF poradzi sobie z konwersją naszego przykładowego adresu URL do formatu PDF. Chociaż QuestPDF nie obsługuje natywnie konwersji adresów URL do formatu PDF, można użyć klienta HTTP do pobrania treści HTML i renderowania jej do formatu PDF przy użyciu płynnego interfejsu API QuestPDF.

using System;
using System.Net.Http;
using System.Threading.Tasks;
using HtmlAgilityPack;
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

public class Program
{
    static async Task Main(string[] args)
    {
        // Configure QuestPDF to use the community license
        QuestPDF.Settings.License = LicenseType.Community;

        string url = "https://www.apple.com";

        // Fetch HTML content from the URL
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = await client.GetStringAsync(url);

            // Parse the HTML content using HtmlAgilityPack
            var htmlDoc = new HtmlDocument();
            htmlDoc.LoadHtml(htmlContent);

            // Extract meaningful content (e.g., text inside <body>)
            var bodyContent = htmlDoc.DocumentNode.SelectSingleNode("//body")?.InnerText ?? "No content found";

            // Generate PDF using QuestPDF
            Document.Create(container =>
            {
                container.Page(page =>
                {
                    page.Size(PageSizes.A4);
                    page.Margin(20);
                    page.Content().Text(bodyContent);
                });
            }).GeneratePdf("output.pdf");

            Console.WriteLine("PDF created successfully as 'output.pdf'.");
        }
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using HtmlAgilityPack;
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

public class Program
{
    static async Task Main(string[] args)
    {
        // Configure QuestPDF to use the community license
        QuestPDF.Settings.License = LicenseType.Community;

        string url = "https://www.apple.com";

        // Fetch HTML content from the URL
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = await client.GetStringAsync(url);

            // Parse the HTML content using HtmlAgilityPack
            var htmlDoc = new HtmlDocument();
            htmlDoc.LoadHtml(htmlContent);

            // Extract meaningful content (e.g., text inside <body>)
            var bodyContent = htmlDoc.DocumentNode.SelectSingleNode("//body")?.InnerText ?? "No content found";

            // Generate PDF using QuestPDF
            Document.Create(container =>
            {
                container.Page(page =>
                {
                    page.Size(PageSizes.A4);
                    page.Margin(20);
                    page.Content().Text(bodyContent);
                });
            }).GeneratePdf("output.pdf");

            Console.WriteLine("PDF created successfully as 'output.pdf'.");
        }
    }
}
Imports System
Imports System.Net.Http
Imports System.Threading.Tasks
Imports HtmlAgilityPack
Imports QuestPDF.Fluent
Imports QuestPDF.Helpers
Imports QuestPDF.Infrastructure

Public Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		' Configure QuestPDF to use the community license
		QuestPDF.Settings.License = LicenseType.Community

		Dim url As String = "https://www.apple.com"

		' Fetch HTML content from the URL
		Using client As New HttpClient()
			Dim htmlContent As String = Await client.GetStringAsync(url)

			' Parse the HTML content using HtmlAgilityPack
			Dim htmlDoc = New HtmlDocument()
			htmlDoc.LoadHtml(htmlContent)

			' Extract meaningful content (e.g., text inside <body>)
			Dim bodyContent = If(htmlDoc.DocumentNode.SelectSingleNode("//body")?.InnerText, "No content found")

			' Generate PDF using QuestPDF
			Document.Create(Sub(container)
				container.Page(Sub(page)
					page.Size(PageSizes.A4)
					page.Margin(20)
					page.Content().Text(bodyContent)
				End Sub)
			End Sub).GeneratePdf("output.pdf")

			Console.WriteLine("PDF created successfully as 'output.pdf'.")
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel

Plik PDF wyjściowy

Przykładowy wynik QuestPDF

Podobnie jak w przypadku PDFSharp, chociaż QuestPDF może być wykorzystywany do konwersji treści HTML do formatu PDF przy pomocy zewnętrznych bibliotek, takich jak HtmlAgilityPack, nie jest w stanie zachować żadnego stylowania CSS ani formatowania. Chociaż QuestPDF to świetny wybór dla każdego, kto chce tworzyć dokumenty PDF od podstaw, konwersja HTML na PDF nie jest mocną stroną tej biblioteki.

IronPDF: Potężna biblioteka PDF

IronPDF to solidna biblioteka PDF przeznaczona dla programistów .NET, którzy potrzebują zaawansowanych i kompleksowych funkcji związanych z plikami PDF. Nacisk na renderowanie HTML do PDF, w połączeniu z dodatkowymi funkcjami, takimi jak zaawansowane opcje manipulowania dokumentami PDF, szyfrowanie i zgodność z PDF/A, sprawia, że jest to potężny wybór dla aplikacji klasy korporacyjnej.

Najważniejsze cechy IronPDF

  • HTML do PDF: Łatwe renderowanie pełnych stron internetowych lub ciągów HTML jako plików PDF.
  • Zgodność z PDF/A: Generuj dokumenty zgodne ze standardami długoterminowej archiwizacji.
  • Zaawansowane zabezpieczenia: Obsługuje szyfrowanie, ochronę hasłem i podpisy cyfrowe.
  • Edycja plików PDF: Modyfikuj, scalaj i dziel istniejące pliki PDF.
  • Wieloplatformowość: w pełni kompatybilny z .NET Framework, .NET Core i .NET 5+.

Instalacja

Aby zainstalować IronPDF, użyj menedżera pakietów NuGet w Visual Studio:

Korzystanie z menedżera pakietów NuGet:

  1. Otwórz swój projekt w Visual Studio.
  2. Kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań i wybierz opcję "Zarządzaj pakietami NuGet".
  3. Wyszukaj "IronPDF" i kliknij "Zainstaluj".

Ilustracje instalacji IronPDF

Korzystanie z konsoli menedżera pakietów NuGet:

Install-Package IronPdf

Przykład: Konwersja adresu URL do formatu PDF przy użyciu IronPDF

IronPDF zapewnia proste i bezpośrednie API do konwersji adresów URL na pliki PDF. Oto przykład:

using IronPdf;

public class PdfConverter
{
    public static void Main(string[] args)
    {
        // Create a renderer with IronPdf
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Render the URL as a PDF
        PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");

        // Save the PDF
        pdf.SaveAs("url.pdf");
    }
}
using IronPdf;

public class PdfConverter
{
    public static void Main(string[] args)
    {
        // Create a renderer with IronPdf
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Render the URL as a PDF
        PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");

        // Save the PDF
        pdf.SaveAs("url.pdf");
    }
}
Imports IronPdf

Public Class PdfConverter
	Public Shared Sub Main(ByVal args() As String)
		' Create a renderer with IronPdf
		Dim renderer As New ChromePdfRenderer()

		' Render the URL as a PDF
		Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://www.apple.com")

		' Save the PDF
		pdf.SaveAs("url.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Plik PDF wyjściowy

Przykładowy wynik IronPDF

Powyższy przykład kodu pokazuje, jak IronPDF może z łatwością konwertować zawartość adresów URL do formatu PDF za pomocą zaledwie kilku wierszy kodu. Jak widać, nie tylko przekonwertowano kod HTML, ale także style CSS i układy, dzięki czemu plik PDF jest wierny oryginalnemu formatowaniu. Dzięki wykorzystaniu silnika renderującego ChromePdfRenderer, IronPDF tworzy dokumenty PDF o idealnej jakości pikseli, które nie tracą nic z oryginalnej jakości treści w procesie konwersji.

Jak widać, IronPDF to świetny wybór do konwersji HTML na PDF, a także do konwersji innych typów dokumentów na PDF. Obsługuje zadania konwersji o wysokiej jakości w zwięzłym, łatwym do wdrożenia bloku kodu.

Szczegółowa analiza

Łatwość użytkowania

PDFsharp jest prosty i łatwy w użyciu, co czyni go doskonałym wyborem dla początkujących lub programistów o podstawowych potrzebach związanych z plikami PDF. Jego proceduralne podejście pozwala na szybką konfigurację i wdrożenie w przypadku zadań takich jak dodawanie tekstu, kształtów lub obrazów do pliku PDF. Wymaga jednak zewnętrznej biblioteki do obsługi zadań związanych z konwersją HTML i adresów URL do formatu PDF.

Z kolei QuestPDF oferuje bardziej nowoczesne podejście dzięki płynnemu API. Programiści z doświadczeniem w projektowaniu stron internetowych lub interfejsów użytkownika uznają go za intuicyjny, ale nowicjusze mogą napotkać niewielkie trudności w nauce, przyzwyczajając się do filozofii projektowania skoncentrowanej na układzie. Ponownie, brakuje wbudowanych narzędzi do konwersji HTML na PDF.

IronPDF zapewnia najprostszą obsługę konwersji HTML do PDF oraz zaawansowane funkcje PDF. Jego intuicyjny interfejs API skraca czas wdrożenia i oferuje obszerną dokumentację oraz przykłady. IronPDF umożliwia konwersję wielu różnych typów dokumentów do formatu PDF, takich jak przykład przekształcenia adresu URL na plik PDF, który omówiliśmy w tym artykule, a wszystko to bez utraty jakości dokumentu.

Wydajność

Wydajność jest kluczowym czynnikiem, zwłaszcza w przypadku aplikacji, które muszą dynamicznie generować pliki PDF. PDFsharp nadaje się do małych i prostych dokumentów, ale ma trudności z obsługą dużych lub złożonych układów.

QuestPDF wyróżnia się w renderowaniu dynamicznych i atrakcyjnych wizualnie dokumentów. Jest zoptymalizowany pod kątem obsługi ustrukturyzowanych układów z wysoką wydajnością.

IronPDF wyjątkowo dobrze łączy wydajność z funkcjonalnością, zwłaszcza w przypadku aplikacji wymagających renderowania HTML oraz obsługi CSS i JavaScript. Z łatwością radzi sobie również z zadaniami związanymi z plikami PDF na poziomie Enterprise.

Podsumowanie porównania

  • PDFsharp to lekka biblioteka typu open source, najlepiej nadająca się do podstawowych zadań związanych z tworzeniem i edycją plików PDF. Idealnie nadaje się do małych projektów, ale brakuje mu obsługi nowoczesnych układów i zaawansowanych funkcji.
  • QuestPDF wyróżnia się w generowaniu dynamicznych, złożonych i atrakcyjnych wizualnie plików PDF przy użyciu płynnego interfejsu API. Skupia się jednak wyłącznie na generowaniu plików PDF i nie obsługuje edycji istniejących dokumentów.
  • IronPDF oferuje najbardziej wszechstronny zestaw funkcji, w tym wbudowaną konwersję HTML do PDF, OCR oraz zaawansowane opcje bezpieczeństwa. Chociaż wymaga licencji komercyjnej, jego funkcjonalność sprawia, że jest to najlepszy wybór dla zastosowań korporacyjnych i profesjonalnych.

Wnioski

Wybór odpowiedniej biblioteki PDF do projektu .NET zależy od konkretnych wymagań. Jeśli potrzebujesz lekkiego narzędzia typu open source do podstawowych zadań związanych z plikami PDF, PDFsharp jest solidnym wyborem. Jeśli chodzi o tworzenie dynamicznych, atrakcyjnych wizualnie dokumentów, QuestPDF wyróżnia się nowoczesnym podejściem.

Jeśli jednak potrzebujesz zaawansowanych funkcji, płynnej konwersji HTML do PDF oraz możliwości na poziomie Enterprise, sprawdź, co ma do zaoferowania IronPDF.

Zrozumienie mocnych stron i ograniczeń każdej biblioteki pozwoli Ci podjąć świadomą decyzję, która będzie odpowiadać potrzebom Twojego projektu.

Zwróć uwagęPDFsharp i QuestPDF są zastrzeżonymi znakami towarowymi ich odpowiednich właścicieli. Ta strona nie jest powiązana z firmami PDFsharp ani QuestPDF, nie jest przez nie promowana ani sponsorowana. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.

Często Zadawane Pytania

Jaka jest różnica między PDFsharp, QuestPDF i IronPDF?

PDFsharp jest znany ze swojej prostoty i podstawowych funkcji związanych z plikami PDF, dzięki czemu nadaje się do podstawowych zadań. QuestPDF zapewnia nowoczesny interfejs API do tworzenia atrakcyjnych wizualnie dokumentów, ale nie oferuje natywnej konwersji do formatu HTML. IronPDF wyróżnia się renderowaniem HTML do PDF oraz zaawansowaną obróbką, co czyni go idealnym rozwiązaniem dla aplikacji Enterprise.

Jak mogę przekonwertować HTML na PDF w .NET?

Możesz użyć IronPDF do renderowania HTML do PDF w .NET. Obsługuje pełny CSS i JavaScript, co pozwala na wysokiej jakości konwersję dokumentów.

Dlaczego warto wybrać QuestPDF do mojego projektu?

QuestPDF idealnie nadaje się do projektów wymagających dynamicznych i złożonych wizualnie dokumentów PDF. Jego płynny interfejs API pozwala na elastyczne układy, chociaż brakuje mu natywnej obsługi konwersji HTML do PDF.

Jakie są ograniczenia korzystania z PDFsharp?

PDFsharp ma pewne ograniczenia, ponieważ nie obsługuje natywnie konwersji HTML do PDF. Najlepiej nadaje się do podstawowych zadań związanych z tworzeniem i edycją plików PDF.

W jaki sposób IronPDF obsługuje zaawansowaną edycję plików PDF?

IronPDF oferuje zaawansowane funkcje, takie jak edycja plików PDF, szyfrowanie oraz obsługa standardu PDF/A. Jest przeznaczony do zastosowań na poziomie Enterprise, wymagających solidnej obsługi plików PDF.

Czy za pomocą PDFsharp mogę tworzyć atrakcyjne wizualnie pliki PDF?

Chociaż PDFsharp zapewnia podstawowe funkcje tworzenia i edycji plików PDF, brakuje mu zaawansowanych możliwości w zakresie układu i projektowania, które oferują QuestPDF i IronPDF, lepiej dostosowane do dokumentów o złożonej strukturze wizualnej.

Jakie są kroki instalacji tych bibliotek PDF?

Wszystkie trzy biblioteki można zainstalować za pomocą menedżera pakietów NuGet w programie Visual Studio. W konsoli menedżera pakietów NuGet należy użyć polecenia Install-Package [LibraryName], zastępując [LibraryName] nazwą PDFsharp, QuestPDF lub IronPDF.

Czy korzystanie z IronPDF wiąże się z jakimikolwiek kosztami?

Tak, IronPDF wymaga licencji komercyjnej do wdrożenia, oferując kompleksowe wsparcie i zaawansowane funkcje odpowiednie dla aplikacji na poziomie przedsiębiorstwa.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
QuestPDF Logo

Zmęczony drogimi odnowieniami i przestarzałymi aktualizacjami produktów?

Dokonaj łatwego przejścia z QuestPDF z naszym wsparciem inżynierskim na rzecz migracji i lepszego dealu.

IronPDF Logo

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie