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

Porównanie IronPDF & ComPDFKit

IronPDF przewyższa ComPDFKit w zakresie generowania plików PDF w języku C# dzięki natywnemu renderowaniu HTML opartemu na Chromium, pełnej obsłudze Bootstrap, kompletnej dokumentacji i doskonałej integracji z platformą .NET Framework, podczas gdy ComPDFKit wymaga zewnętrznych wywołań API do konwersji HTML i nie zapewnia zaawansowanej kompatybilności z frameworkami CSS.

PDF, skrót od Portable Document Format, to typ pliku stworzony przez firmę Adobe w celu zapewnienia jednolitości w udostępnianiu dokumentów. Ten format zapewnia spójność układu, tekstu i obrazów na różnych urządzeniach i systemach operacyjnych. Pliki PDF zapewniają bezpieczeństwo, funkcje interaktywne i niewielki rozmiar, dzięki czemu idealnie nadają się do dystrybucji dokumentów bez zmiany treści.

Dla programistów korzystających z języka C# biblioteki PDF zapewniają rozwiązania do pracy z plikami PDF. Biblioteki te umożliwiają tworzenie dokumentów, modyfikację treści oraz wyodrębnianie tekstu i obrazów. Obsługują one takie funkcje, jak obsługa formularzy, podpisy cyfrowe i kompatybilność międzyplatformowa. Biblioteki te, zaprojektowane z myślą o poprawie wydajności, umożliwiają efektywne przetwarzanie plików PDF.

W tym artykule porównano dwie biblioteki PDF dla języka C#: IronPDF i ComPDFKit. Niniejsze porównanie obejmuje cechy, funkcjonalność, przykłady kodu oraz licencjonowanie. Analizując te aspekty, programiści mogą określić, która biblioteka najlepiej pasuje do ich projektów związanych z plikami PDF.

Szybki przegląd porównawczy

Zanim przejdziemy do szczegółowej analizy, oto pełne porównanie kluczowych funkcji:

Funkcja IronPDF ComPDFKit
HTML do PDF Natywny silnik Chromium Wymagane zewnętrzne API
Obsługa Bootstrap Pełna obsługa CSS3/Flexbox Ograniczona obsługa frameworków CSS
Instalacja Pojedynczy pakiet NuGet Potrzebnych jest kilka pakietów
Dokumentacja Obszerne, zawierające ponad 500 przykładów Podstawowa dokumentacja
Wsparcie Dedykowane wsparcie inżynierów dostępne 24 godziny na dobę, 5 dni w tygodniu Standardowe wsparcie e-mail
Model cenowy Licencja wieczysta od 749 USD Ceny oparte na wycenie
Wieloplatformowe Windows, Linux, macOS, Docker, Azure Windows, Linux, macOS
Wydajność Zoptymalizowana obsługa asynchroniczności i wielowątkowości Standardowe przetwarzanie synchroniczne
Funkcje dla Enterprise PDF/A, PDF/UA, podpis HSM Podstawowa obsługa formatu PDF/A
Krzywa uczenia się Minimalne – intuicyjne API Umiarkowana – złożona struktura API
  1. Przeglądanie plików PDF: ComPDFKit oferuje zaawansowaną przeglądarkę plików PDF, która pozwala użytkownikom przeglądać dokumenty PDF z zachowaniem wysokiej jakości. Przeglądarka obsługuje płynne przewijanie, Zoom i nawigację, zapewniając płynne działanie.
  2. Adnotacje: Biblioteka zawiera narzędzia do płynnej integracji adnotacji w plikach PDF. Użytkownicy mogą zaznaczać tekst, dodawać komentarze i tworzyć różnego rodzaju adnotacje, które są niezbędne w procesach pracy zespołowej.
  3. Obsługa formularzy: Biblioteka oferuje szerokie wsparcie dla formularzy interaktywnych. Programiści mogą tworzyć, wypełniać i wyodrębniać dane z formularzy PDF, co sprawia, że narzędzie idealnie nadaje się do aplikacji wymagających przetwarzania formularzy.
  4. Edycja plików PDF: ComPDFKit oferuje szerokie możliwości edycji plików PDF, w tym modyfikację tekstu, obrazów i innych treści w plikach PDF. Ta funkcja jest przydatna w aplikacjach, które wymagają aktualizacji lub dostosowania istniejących dokumentów PDF.
  5. Konwersja: Biblioteka obsługuje konwersję plików PDF do i z różnych formatów, takich jak WORD, Excel, PowerPoint oraz obrazy. Ta elastyczność ma kluczowe znaczenie dla aplikacji, które muszą przekształcać zawartość plików PDF do różnych zastosowań.
  6. Bezpieczeństwo: ComPDFKit zawiera solidne funkcje bezpieczeństwa, takie jak szyfrowanie i zarządzanie uprawnieniami. Programiści mogą zabezpieczyć dokumenty PDF, aby chronić poufne informacje przed nieuprawnionym dostępem.
  7. Optyczne rozpoznawanie znaków (OCR): Biblioteka zawiera funkcje OCR umożliwiające konwersję zeskanowanych dokumentów na edytowalne i przeszukiwalne pliki PDF. Ta funkcja jest niezbędna do digitalizacji dokumentów papierowych i udostępniania ich w formie elektronicznej.

Strona główna ComPDFKit prezentująca kompletne rozwiązania SDK do obsługi plików PDF dla programistów wraz ze zrzutami ekranu przedstawiającymi funkcje adnotacji oraz przykładami kodu ilustrującymi możliwości manipulacji plikami PDF.

ComPDFKit PDF SDK to niezawodny zestaw SDK do obsługi plików PDF w języku C#, który pozwala programistom na integrację pełnej funkcjonalności plików PDF z ich aplikacjami. Biblioteka ta obsługuje szeroki zakres funkcji PDF niezbędnych do programowego przetwarzania dokumentów PDF. Jest przeznaczony do użytku w różnych środowiskach, w tym na platformach internetowych, stacjonarnych i mobilnych, co czyni go wszechstronnym narzędziem dla programistów pracujących nad projektami wieloplatformowymi. Przykładowe rozwiązanie zawiera wiele funkcji, które programiści mogą wybierać i testować.

Jakie kluczowe funkcje oferuje ComPDFKit?

Podstawowe możliwości:

  • Przeglądanie plików PDF: Zapewnia wydajną przeglądarkę z płynnym przewijaniem, Zoomem i nawigacją
  • Adnotacje: Obejmuje narzędzia do zaznaczania tekstu, dodawania komentarzy i tworzenia różnych typów adnotacji
  • Obsługa formularzy: oferuje wsparcie w tworzeniu, wypełnianiu i wyciąganiu danych z interaktywnych formularzy PDF
  • Edycja plików PDF: Umożliwia modyfikację tekstu, obrazów i innych treści w istniejących dokumentach PDF
  • Konwersja: Obsługuje konwersję plików PDF do formatów WORD, Excel, PowerPoint oraz formatów graficznych
  • Bezpieczeństwo: Obejmuje szyfrowanie i zarządzanie uprawnieniami w celu ochrony poufnych informacji
  • Optyczne rozpoznawanie znaków (OCR): Konwertuje zeskanowane dokumenty na edytowalne i przeszukiwalne pliki PDF

Dlaczego warto rozważyć architekturę ComPDFKit?

  1. Konwersja HTML do PDF: IronPDF doskonale radzi sobie z konwersją treści HTML, CSS i JavaScript na wysokiej jakości dokumenty PDF. Ta funkcja obsługuje ciągi znaków HTML do plików PDF, adresy URL, formularze internetowe ASPX oraz widoki MVC, co czyni ją elastycznym rozwiązaniem dla różnorodnych treści internetowych.
  2. Edycja plików PDF: Biblioteka oferuje szerokie możliwości edycji, w tym dodawanie, kopiowanie i usuwanie stron, łączenie i dzielenie plików PDF oraz manipulowanie tekstem i obrazami. Programiści mogą również dodawać nagłówki, stopki, znaki wodne i podpisy cyfrowe do dokumentów PDF.
  3. Obsługa formularzy: IronPDF obsługuje tworzenie inteligentnych formularzy i programowe wypełnianie formularzy PDF. Ta funkcja jest niezbędna w aplikacjach wymagających dynamicznego generowania formularzy i wyciągania danych z formularzy przesłanych przez użytkowników.
  4. Funkcje bezpieczeństwa: IronPDF zapewnia solidne opcje bezpieczeństwa, takie jak ustawianie haseł i uprawnień, szyfrowanie dokumentów oraz dodawanie podpisów cyfrowych. Funkcje te zapewniają ochronę poufnych informacji zawartych w dokumentach PDF przed nieuprawnionym dostępem.
  5. OCR i ekstrakcja danych: Biblioteka zawiera funkcje optycznego rozpoznawania znaków (OCR), umożliwiające konwersję zeskanowanych dokumentów na edytowalne i przeszukiwalne pliki PDF. Ponadto IronPDF może wyodrębniać tekst, obrazy i inne dane z istniejących plików PDF, ułatwiając ponowne wykorzystanie i analizę treści.
  6. Konwersja obrazów: IronPDF obsługuje konwersję różnych formatów obrazów, w tym JPG, PNG, GIF, BMP i SVG, do dokumentów PDF. Oferuje również możliwość renderowania stron PDF jako obrazów, co jest przydatne w aplikacjach wymagających wizualnego podglądu treści PDF.
  7. Kompatybilność międzyplatformowa: IronPDF jest kompatybilny z wieloma platformami .NET, w tym .NET Core, .NET Framework i .NET Standard. Obsługuje wdrożenie w systemachWindows, Linux, macOSi Azure, co czyni go wszechstronnym wyborem dla programistów pracujących w różnorodnych środowiskach.
  8. Optymalizacja wydajności: Biblioteka została zaprojektowana z myślą o wysokiej wydajności i obsługuje wielowątkowość oraz operacje asynchroniczne. Gwarantuje to wydajne wykonywanie zadań związanych z przetwarzaniem plików PDF, nawet w aplikacjach o dużym obciążeniu.
  9. Kompleksowa dokumentacja i wsparcie: IronPDF zapewnia szczegółową dokumentację i liczne przykłady kodu, ułatwiając programistom rozpoczęcie pracy i wdrożenie jego funkcji. Ponadto oferuje wsparcie techniczne w przypadku wszelkich problemów, które mogą pojawić się podczas tworzenia oprogramowania.

W przypadku aplikacji Enterprise wymagających niezawodnych funkcji adnotacji, ComPDFKit zapewnia podstawową funkcjonalność. Zaawansowane funkcje tworzenia formularzy mogą wymagać dodatkowego nakładu pracy programistycznej. Chociaż narzędzie to sprawdza się w zadaniach OCR, programiści poszukujący zaawansowanego rozpoznawania tekstu powinni rozważyć alternatywne rozwiązania, takie jak IronOCR, zapewniające wyższą dokładność.

Jakie są ograniczenia ComPDFKit?

Pomimo pełnego zestawu funkcji, ComPDFKit ma kilka ograniczeń w zakresie rozwoju Enterprise:

  • Renderowanie HTML: Brak natywnej konwersji HTML do PDF — wymaga zewnętrznych wywołań API
  • Obsługa CSS: Ograniczona kompatybilność z nowoczesnymi frameworkami CSS
  • Wydajność: Brak wbudowanej optymalizacji asynchronicznej/wielowątkowej
  • Dokumentacja: Podstawowe przykłady bez kompletnych przewodników dotyczących rozwiązywania problemów
  • Złożoność integracji: do pełnej funkcjonalności wymaganych jest wiele pakietów

Czym jest biblioteka IronPDF?

Strona główna IronPDF przedstawiająca interfejs biblioteki C# PDF wraz z przykładem kodu do konwersji HTML na PDF, podkreślająca ponad 10 milionów pobrań oraz wdrożenie w przedsiębiorstwach z listy Fortune 500.

IronPDF to wszechstronna biblioteka PDF dla platformy .NET, która umożliwia programistom tworzenie, edycję i zarządzanie dokumentami PDF przy użyciu języka C#. Zapewnia pełną funkcjonalność PDF poprzez uproszczone interfejsy API. Biblioteka wyróżnia się w generowaniu plików PDF poprzez renderowanie z HTML, CSS, JavaScript i różnych formatów obrazów. To sprawia, że jest to idealne narzędzie dla programistów integrujących niezawodną funkcjonalność PDF z aplikacjami .NET.

Jakie kluczowe funkcje oferuje IronPDF?

Zaawansowane możliwości:

Dlaczego warto wybrać IronPDF do systemów produkcyjnych?

Architektura IronPDF stawia na pierwszym miejscu wydajność i niezawodność w środowiskach produkcyjnych:

Co sprawia, że IronPDF jest gotowy do użytku w Enterprise?

IronPDF wyróżnia się funkcjami ukierunkowanymi na produkcję:

Jak utworzyć nowy projekt w Visual Studio?

Przed zapoznaniem się z przykładami kodu programiści powinni utworzyć nowy projekt w Visual Studio. W niniejszym przewodniku opisano konfigurację aplikacji konsolowej C# w programie Visual Studio.

Dlaczego muszę zainstalować Visual Studio?

Visual Studio zapewnia ulepszone środowisko IDE dla projektów w języku C#. Pobierz go ze strony pobierania Visual Studio. Środowisko IDE oferuje zintegrowane debugowanie, IntelliSense oraz zarządzanie pakietami niezbędne do tworzenia plików PDF.

Jaka konfiguracja projektu sprawdza się najlepiej?

Po instalacji otwórz program Visual Studio. Zaloguj się lub kontynuuj bez logowania, korzystając z Visual Studio Community. Wykonaj następujące czynności konfiguracyjne:

  1. Kliknij "Utwórz nowy projekt" lub przejdź do Plik > Nowy > Projekt.

    Środowisko IDE Visual Studio z otwartym menu Plik zawierającym opcje tworzenia nowych projektów, otwierania plików i zarządzania repozytoriami, z podświetloną opcją Nowy projekt.

  2. Wyszukaj aplikację Console i wybierz Console Application z wyników wyszukiwania.

    Okno dialogowe

  3. Otwórz menedżera pakietów NuGet: w Eksploratorze rozwiązań kliknij prawym przyciskiem myszy "Odwołania" i wybierz "Zarządzaj pakietami NuGet".
  4. Wyszukaj i zainstaluj: Wyszukaj "ComPDFKit" w menedżerze pakietów NuGet. Wybierz odpowiedni pakiet (np. ComPDFKit.NetFramework lub ComPDFKit.Conversion.NetFramework) i kliknij "Zainstaluj".

Czym są podstawowe ustawienia projektu?

  1. Sprawdź instalację: Upewnij się, że pakiet pojawia się w sekcji "Odwołania" w Eksploratorze rozwiązań.
  • Platforma docelowa: Ustaw na x64 w celu przetwarzania dużych dokumentów
  • Typ wyjściowy: aplikacja konsolowa do testowania, biblioteka klas do produkcji
  • Wersja frameworka: zalecana wersja .NET Framework 6+ dla uzyskania najlepszej wydajności
  • Zarządzanie pakietami NuGet: Włącz przywracanie pakietów w celu zarządzania zależnościami
  1. Pobierz pakiet: Pobierz plik ComPDFKit.NetFramework.nupkg z oficjalnej strony ComPDFKit.
  2. Skonfiguruj źródło NuGet: Utwórz lub edytuj plik nuget.config w katalogu projektu, aby dodać ścieżkę do lokalnego pakietu.

Włączenie IronPDF do projektów można zrealizować na różne sposoby. Pełny opis instalacji znajduje się w oficjalnej dokumentacji. Biblioteka obsługuje wiele metod instalacji dostosowanych do różnych procesów programistycznych.

  1. Zainstaluj pakiet lokalny: Otwórz ponownie swoje rozwiązanie w Visual Studio, przejdź do "Zarządzaj pakietami NuGet" i wybierz swoje lokalne źródło pakietów. Zainstaluj pakiet ComPDFKit z lokalnego źródła.

  2. Menedżer pakietów NuGet w Visual Studio: Kliknij prawym przyciskiem myszy "Zależności" w rozwiązaniu i wybierz "Zarządzaj pakietami NuGet". W zakładce "Przeglądaj" wyszukaj "IronPDF" i zainstaluj najnowszą wersję. Aby uzyskać informacje na temat zaawansowanych opcji instalacji NuGet, zapoznaj się ze szczegółowym przewodnikiem.

  3. Uzyskaj licencję: Skontaktuj się z zespołem ComPDFKit, aby uzyskać wersję próbną lub pełną licencję.
  4. Zastosowanie licencji w kodzie:

  5. Konsola menedżera pakietów: Użyj konsoli menedżera pakietów NuGet, wybierając opcję Narzędzia > Menedżer pakietów NuGet > Konsola menedżera pakietów. Wykonaj polecenie:

    _CODEBLOCK0

    Umożliwia to szybką instalację biblioteki za pomocą interfejsu wiersza poleceń.

    Okno konsoli menedżera pakietów pokazujące instalację pakietu IronPDF NuGet w wersji 2024.5.2 w projekcie C# Test Boards wraz z potwierdzeniem pomyślnej instalacji.

  6. Metoda bezpośredniego pobrania: Odwiedź stronę pakietu IronPDF NuGet. Pobierz plik pakietu, kliknij go dwukrotnie, aby dodać go do projektu, a następnie przeładuj rozwiązanie.

  7. Instalacja ręczna: Pobierz bezpośrednio najnowszą wersję IronPDF. Postępuj zgodnie z dostarczonymi instrukcjami dotyczącymi ręcznej integracji z Visual Studio. W przypadku instalacji w systemie Windows zapoznaj się z instrukcją instalatora dla systemu Windows.

Dlaczego warto wybrać konkretne metody instalacji?

Różne metody instalacji pasują do różnych scenariuszy:

  • Menedżer pakietów NuGet: Najlepszy dla użytkowników Visual Studio z dostępem do Internetu
  • Konsola menedżera pakietów: idealna do wdrożeń opartych na skryptach i potoków CI/CD
  • Bezpośrednie pobieranie: Odpowiednie dla środowisk programistycznych offline
  • Instalacja ręczna: Wymagana w przypadku niestandardowych konfiguracji wdrożeniowych

Metody te pozwalają na efektywną integrację IronPDF z projektami .NET. Aby uzyskać instrukcje dotyczące szybkiego startu, odwiedź przewodnik dla początkujących. Przewodniki dotyczące poszczególnych platform obejmują integrację z językiem F# oraz wykorzystanie VB.NET.

Jak zainstalować ComPDFKit C#?

Istnieją dwie główne metody dodawania ComPDFKit do projektów: menedżer pakietów NuGet lub lokalna instalacja pakietu. Proces instalacji wymaga więcej kroków w porównaniu z podejściem opartym na jednym pakiecie stosowanym w IronPDF.

Kiedy należy używać menedżera pakietów NuGet?

  1. Otwórz menedżera pakietów NuGet: kliknij prawym przyciskiem myszy "Odwołania" w Eksploratorze rozwiązań i wybierz "Zarządzaj pakietami NuGet".
  2. Wyszukaj i zainstaluj: Wyszukaj "ComPDFKit" w menedżerze pakietów. Wybierz odpowiedni pakiet (ComPDFKit.NetFramework lub ComPDFKit.Conversion.NetFramework) i kliknij "Zainstaluj".

Interfejs menedżera pakietów NuGet pokazujący wyniki wyszukiwania ComPDFKit z trzema wymienionymi pakietami: ComPDFKit.NetFramework, ComPDFKit.Conversion.NetFramework oraz compdfkit-api-dotnet dla różnych przypadków użycia.

  1. Sprawdź instalację: Upewnij się, że pakiet pojawia się w sekcji "Odwołania" w Eksploratorze rozwiązań. Do pełnego działania może być potrzebnych kilka pakietów.

Kiedy należy używać pakietu lokalnego?

Instalacja lokalnego pakietu jest odpowiednia dla środowisk o ograniczonych uprawnieniach:

  1. Pobierz pakiet: Pobierz plik ComPDFKit.NetFramework.nupkg z oficjalnej strony ComPDFKit.
  2. Skonfiguruj źródło NuGet: Utwórz lub edytuj plik nuget.config w katalogu projektu, aby uwzględnić lokalną ścieżkę do pakietu.

    _CODEBLOCK1

  3. Zainstaluj pakiet lokalny: Otwórz ponownie rozwiązanie, przejdź do "Zarządzaj pakietami NuGet", wybierz lokalne źródło pakietów i zainstaluj ComPDFKit.

Jak zastosować mój klucz licencyjny?

Wdrożenie licencji różni się znacznie w zależności od biblioteki:

  1. Uzyskaj licencję: Skontaktuj się z ComPDFKit w celu uzyskania wersji próbnej lub pełnej licencji.
  2. Zastosowanie licencji w kodzie:

    _CODEBLOCK2

    Dodaj tę metodę, aby zweryfikować licencję. Aby zapoznać się z prostszą implementacją licencji IronPDF, zobacz dokumentację dotyczącą kluczy licencyjnych. IronPDF wymaga jedynie ustawienia właściwości License.LicenseKey, co upraszcza proces licencjonowania.

Jak przekonwertować HTML na PDF?

Konwersja HTML do PDF to częsty wymóg przy tworzeniu raportów, faktur lub dokumentacji na podstawie treści internetowych. Zarówno IronPDF, jak i ComPDFKit oferują rozwiązania, choć ich podejścia znacznie się różnią. IronPDF zapewnia natywną konwersję, podczas gdy ComPDFKit wymaga zewnętrznych wywołań API.

W jaki sposób IronPDF obsługuje konwersję HTML do PDF?

IronPDF wykorzystuje silnik renderujący oparty na przeglądarce Chrome, aby zapewnić wysoką jakość wyników. Proces ten pozwala na dokładne renderowanie HTML, CSS i JavaScript do formatu PDF. Biblioteka obsługuje ciągi znaków HTML, pliki HTML i adresy URL.

Przykład podstawowej konwersji ciągu znaków HTML do formatu PDF:

using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Define your HTML string
        string htmlString = @"
            <h1>Hello, IronPDF!</h1>
            <p>This is a simple PDF created from an HTML string.</p>";

        var renderer = new ChromePdfRenderer();
        // Convert the HTML string to a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlString);
        // Save the PDF document to a file
        string outputPath = "sample.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF created successfully and saved to {outputPath}");
    }
}
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Define your HTML string
        string htmlString = @"
            <h1>Hello, IronPDF!</h1>
            <p>This is a simple PDF created from an HTML string.</p>";

        var renderer = new ChromePdfRenderer();
        // Convert the HTML string to a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlString);
        // Save the PDF document to a file
        string outputPath = "sample.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF created successfully and saved to {outputPath}");
    }
}
Imports IronPdf
Imports System

Friend Class Program
	Shared Sub Main()
		' Define your HTML string
		Dim htmlString As String = "
            <h1>Hello, IronPDF!</h1>
            <p>This is a simple PDF created from an HTML string.</p>"

		Dim renderer = New ChromePdfRenderer()
		' Convert the HTML string to a PDF document
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlString)
		' Save the PDF document to a file
		Dim outputPath As String = "sample.pdf"
		pdf.SaveAs(outputPath)
		Console.WriteLine($"PDF created successfully and saved to {outputPath}")
	End Sub
End Class
$vbLabelText   $csharpLabel

Wynik działania IronPDF przedstawiający prosty plik PDF z nagłówkiem

IronPDF konwertuje również bezpośrednio pliki HTML, obsługując wbudowane elementy CSS i JavaScript:

using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        // Convert the HTML file to a PDF document
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("index.html");
        // Save the PDF document to a file
        string outputPath = "HTML File.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF created successfully and saved to {outputPath}");
    }
}
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        // Convert the HTML file to a PDF document
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("index.html");
        // Save the PDF document to a file
        string outputPath = "HTML File.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF created successfully and saved to {outputPath}");
    }
}
Imports IronPdf
Imports System

Friend Class Program
	Shared Sub Main()
		Dim renderer = New ChromePdfRenderer()
		' Convert the HTML file to a PDF document
		Dim pdf As PdfDocument = renderer.RenderHtmlFileAsPdf("index.html")
		' Save the PDF document to a file
		Dim outputPath As String = "HTML File.pdf"
		pdf.SaveAs(outputPath)
		Console.WriteLine($"PDF created successfully and saved to {outputPath}")
	End Sub
End Class
$vbLabelText   $csharpLabel

Sample invoice #123 showing website design services totaling $385, rendered as a PDF document with professional formatting and layout preserved from HTML source.

Jakie zaawansowane funkcje HTML obsługuje IronPDF?

Silnik Chromium firmy IronPDF obsługuje złożone technologie internetowe:

W jaki sposób ComPDFKit obsługuje konwersję HTML do PDF?

  1. Wyślij treść HTML: Utwórz żądanie HTTP POST do punktu końcowego API ComPDFKit z treścią HTML.
  2. Otrzymanie pliku PDF: API przetwarza zawartość HTML i zwraca wygenerowany plik PDF.

Aby korzystać z interfejsu API ComPDFKit do konwersji HTML na PDF:

  1. Wyślij treść HTML: Utwórz żądanie HTTP POST z treścią HTML
  2. Otrzymanie pliku PDF: API przetwarza treść i zwraca wygenerowany plik PDF

Przykładowa struktura żądań API w języku C#:

using System;
using System.Net.Http;
using System.Threading.Tasks;

public class HtmlToPdfExample
{
    public static async Task ConvertHtmlToPdfAsync()
    {
        using (var client = new HttpClient())
        {
            var content = new StringContent("<h1>Hello World</h1>");
            var response = await client.PostAsync("___PROTECTED_URL_137___", content);
            var pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
        }
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;

public class HtmlToPdfExample
{
    public static async Task ConvertHtmlToPdfAsync()
    {
        using (var client = new HttpClient())
        {
            var content = new StringContent("<h1>Hello World</h1>");
            var response = await client.PostAsync("___PROTECTED_URL_137___", content);
            var pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
        }
    }
}
Imports System
Imports System.Net.Http
Imports System.Threading.Tasks

Public Class HtmlToPdfExample
    Public Shared Async Function ConvertHtmlToPdfAsync() As Task
        Using client As New HttpClient()
            Dim content As New StringContent("<h1>Hello World</h1>")
            Dim response As HttpResponseMessage = Await client.PostAsync("___PROTECTED_URL_137___", content)
            Dim pdfBytes As Byte() = Await response.Content.ReadAsByteArrayAsync()
            System.IO.File.WriteAllBytes("output.pdf", pdfBytes)
        End Using
    End Function
End Class
$vbLabelText   $csharpLabel

Jakie są ograniczenia konwersji opartej na API?

Podejście API ComPDFKit wiąże się z kilkoma wyzwaniami:

  • Zależność od sieci: Wymaga połączenia z Internetem do podstawowych operacji
  • Problemy z opóźnieniami: cykle API wydłużają czas przetwarzania
  • Ograniczona kontrola: nie można dostosować zachowania silnika renderującego
  • Kwestie bezpieczeństwa: dane wrażliwe przesyłane na serwery zewnętrzne
  • Ograniczanie szybkości: limity API mogą ograniczać przetwarzanie dużych ilości danych
  • Brak dokumentacji: Ograniczona liczba przykładów implementacji w języku C#

Czy Bootstrap CSS działa z generowaniem plików PDF?

Nowoczesne aplikacje e-commerce i biznesowe szeroko wykorzystują Bootstrap w celu zapewnienia spójnego projektu interfejsu użytkownika. Podczas generowania faktur, paragonów i raportów w formacie PDF zachowanie stylistyki Bootstrap zapewnia spójność marki. Silnik Chromium firmy IronPDF zapewnia pełną obsługę Bootstrap, podczas gdy podejście oparte na API firmy ComPDFKit wykazuje ograniczenia w przypadku złożonych frameworków CSS.

W jaki sposób IronPDF obsługuje stylizację Bootstrap?

IronPDF korzysta z silnika renderującego Chromium, zapewniając idealną obsługę Bootstrap we wszystkich wersjach (Bootstrap 5, 4 i 3). Biblioteka płynnie obsługuje układy Flexbox, CSS Grid, narzędzia responsywne oraz komponenty niestandardowe. Aby uzyskać informacje na temat zaawansowanego renderowania CSS, zapoznaj się z przewodnikiem po opcjach renderowania.

using IronPdf;

// Set license
IronPdf.License.LicenseKey = "License-Key";

var renderer = new ChromePdfRenderer();

// Bootstrap 5 e-commerce invoice example
string bootstrapInvoice = @"
<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='utf-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <link href='___PROTECTED_URL_138___ rel='stylesheet'>
    <style>
        @page { margin: 20mm; }
        .invoice-header { border-bottom: 3px solid #0d6efd; }
        .product-row { border-bottom: 1px solid #dee2e6; }
        .total-section { background-color: #f8f9fa; }
    </style>
</head>
<body>
    <div class='container-fluid p-4'>

        <div class='row invoice-header pb-4 mb-4'>
            <div class='col-8'>
                <h1 class='display-4 text-primary'>INVOICE</h1>
                <p class='text-muted mb-0'>TechStore Inc.</p>
                <p class='text-muted mb-0'>123 Commerce Street, Tech City, TC 12345</p>
                <p class='text-muted'>Email: sales@techstore.com | Phone: (555) 123-4567</p>
            </div>
            <div class='col-4 text-end'>
                <p class='mb-1'><strong>Invoice #:</strong> INV-2024-1089</p>
                <p class='mb-1'><strong>Date:</strong> October 27, 2024</p>
                <p class='mb-1'><strong>Due Date:</strong> November 27, 2024</p>
                <span class='badge bg-success'>PAID</span>
            </div>
        </div>

        <div class='row mb-4'>
            <div class='col-6'>
                <h5 class='text-primary'>Bill To:</h5>
                <p class='mb-1'><strong>Acme Corporation</strong></p>
                <p class='mb-1'>456 Business Ave</p>
                <p class='mb-1'>Enterprise City, EC 67890</p>
                <p class='mb-0'>contact@acmecorp.com</p>
            </div>
            <div class='col-6 text-end'>
                <h5 class='text-primary'>Payment Method:</h5>
                <p class='mb-1'>Credit Card ending in 4242</p>
                <p class='mb-0'>Transaction ID: TXN-9876543210</p>
            </div>
        </div>

        <div class='row mb-4'>
            <div class='col-12'>
                <table class='table'>
                    <thead class='table-primary'>
                        <tr>
                            <th scope='col'>#</th>
                            <th scope='col'>Product</th>
                            <th scope='col'>Description</th>
                            <th scope='col' class='text-center'>Qty</th>
                            <th scope='col' class='text-end'>Unit Price</th>
                            <th scope='col' class='text-end'>Amount</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr class='product-row'>
                            <td>1</td>
                            <td><strong>IronPDF Pro License</strong></td>
                            <td>Professional developer license with 1 year support</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$2,999.00</td>
                            <td class='text-end'><strong>$2,999.00</strong></td>
                        </tr>
                        <tr class='product-row'>
                            <td>2</td>
                            <td><strong>Priority Support</strong></td>
                            <td>24/7 priority technical support package</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$999.00</td>
                            <td class='text-end'><strong>$999.00</strong></td>
                        </tr>
                        <tr class='product-row'>
                            <td>3</td>
                            <td><strong>Training Package</strong></td>
                            <td>On-site developer training (2 days)</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$1,500.00</td>
                            <td class='text-end'><strong>$1,500.00</strong></td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>

        <div class='row justify-content-end mb-4'>
            <div class='col-md-6'>
                <div class='card total-section'>
                    <div class='card-body'>
                        <div class='row mb-2'>
                            <div class='col-6'><strong>Subtotal:</strong></div>
                            <div class='col-6 text-end'>$5,498.00</div>
                        </div>
                        <div class='row mb-2'>
                            <div class='col-6'><strong>Tax (8.5%):</strong></div>
                            <div class='col-6 text-end'>$467.33</div>
                        </div>
                        <div class='row mb-2'>
                            <div class='col-6 text-success'><strong>Discount (10%):</strong></div>
                            <div class='col-6 text-end text-success'>-$549.80</div>
                        </div>
                        <hr>
                        <div class='row'>
                            <div class='col-6'><h4 class='text-primary'>Total:</h4></div>
                            <div class='col-6 text-end'><h4 class='text-primary'>$5,415.53</h4></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class='row mb-4'>
            <div class='col-12'>
                <div class='alert alert-info' role='alert'>
                    <h6 class='alert-heading'>Payment Terms</h6>
                    <p class='mb-0'>Payment is due within 30 days. Late payments may incur a 1.5% monthly interest charge. Thank you for your business!</p>
                </div>
            </div>
        </div>

        <div class='row border-top pt-3'>
            <div class='col-12 text-center text-muted'>
                <small>TechStore Inc. | Tax ID: 12-3456789 | All prices in USD</small>
            </div>
        </div>
    </div>
</body>
</html>";

// Render PDF with optimized settings
var pdf = renderer.RenderHtmlAsPdf(bootstrapInvoice);

// Add metadata for document management
pdf.MetaData.Title = "Invoice INV-2024-1089";
pdf.MetaData.Author = "TechStore Inc.";
pdf.MetaData.Subject = "Sales Invoice";
pdf.MetaData.Keywords = "invoice, payment, e-commerce";

// Save the invoice
pdf.SaveAs("invoice-with-bootstrap.pdf");
using IronPdf;

// Set license
IronPdf.License.LicenseKey = "License-Key";

var renderer = new ChromePdfRenderer();

// Bootstrap 5 e-commerce invoice example
string bootstrapInvoice = @"
<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='utf-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <link href='___PROTECTED_URL_138___ rel='stylesheet'>
    <style>
        @page { margin: 20mm; }
        .invoice-header { border-bottom: 3px solid #0d6efd; }
        .product-row { border-bottom: 1px solid #dee2e6; }
        .total-section { background-color: #f8f9fa; }
    </style>
</head>
<body>
    <div class='container-fluid p-4'>

        <div class='row invoice-header pb-4 mb-4'>
            <div class='col-8'>
                <h1 class='display-4 text-primary'>INVOICE</h1>
                <p class='text-muted mb-0'>TechStore Inc.</p>
                <p class='text-muted mb-0'>123 Commerce Street, Tech City, TC 12345</p>
                <p class='text-muted'>Email: sales@techstore.com | Phone: (555) 123-4567</p>
            </div>
            <div class='col-4 text-end'>
                <p class='mb-1'><strong>Invoice #:</strong> INV-2024-1089</p>
                <p class='mb-1'><strong>Date:</strong> October 27, 2024</p>
                <p class='mb-1'><strong>Due Date:</strong> November 27, 2024</p>
                <span class='badge bg-success'>PAID</span>
            </div>
        </div>

        <div class='row mb-4'>
            <div class='col-6'>
                <h5 class='text-primary'>Bill To:</h5>
                <p class='mb-1'><strong>Acme Corporation</strong></p>
                <p class='mb-1'>456 Business Ave</p>
                <p class='mb-1'>Enterprise City, EC 67890</p>
                <p class='mb-0'>contact@acmecorp.com</p>
            </div>
            <div class='col-6 text-end'>
                <h5 class='text-primary'>Payment Method:</h5>
                <p class='mb-1'>Credit Card ending in 4242</p>
                <p class='mb-0'>Transaction ID: TXN-9876543210</p>
            </div>
        </div>

        <div class='row mb-4'>
            <div class='col-12'>
                <table class='table'>
                    <thead class='table-primary'>
                        <tr>
                            <th scope='col'>#</th>
                            <th scope='col'>Product</th>
                            <th scope='col'>Description</th>
                            <th scope='col' class='text-center'>Qty</th>
                            <th scope='col' class='text-end'>Unit Price</th>
                            <th scope='col' class='text-end'>Amount</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr class='product-row'>
                            <td>1</td>
                            <td><strong>IronPDF Pro License</strong></td>
                            <td>Professional developer license with 1 year support</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$2,999.00</td>
                            <td class='text-end'><strong>$2,999.00</strong></td>
                        </tr>
                        <tr class='product-row'>
                            <td>2</td>
                            <td><strong>Priority Support</strong></td>
                            <td>24/7 priority technical support package</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$999.00</td>
                            <td class='text-end'><strong>$999.00</strong></td>
                        </tr>
                        <tr class='product-row'>
                            <td>3</td>
                            <td><strong>Training Package</strong></td>
                            <td>On-site developer training (2 days)</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$1,500.00</td>
                            <td class='text-end'><strong>$1,500.00</strong></td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>

        <div class='row justify-content-end mb-4'>
            <div class='col-md-6'>
                <div class='card total-section'>
                    <div class='card-body'>
                        <div class='row mb-2'>
                            <div class='col-6'><strong>Subtotal:</strong></div>
                            <div class='col-6 text-end'>$5,498.00</div>
                        </div>
                        <div class='row mb-2'>
                            <div class='col-6'><strong>Tax (8.5%):</strong></div>
                            <div class='col-6 text-end'>$467.33</div>
                        </div>
                        <div class='row mb-2'>
                            <div class='col-6 text-success'><strong>Discount (10%):</strong></div>
                            <div class='col-6 text-end text-success'>-$549.80</div>
                        </div>
                        <hr>
                        <div class='row'>
                            <div class='col-6'><h4 class='text-primary'>Total:</h4></div>
                            <div class='col-6 text-end'><h4 class='text-primary'>$5,415.53</h4></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class='row mb-4'>
            <div class='col-12'>
                <div class='alert alert-info' role='alert'>
                    <h6 class='alert-heading'>Payment Terms</h6>
                    <p class='mb-0'>Payment is due within 30 days. Late payments may incur a 1.5% monthly interest charge. Thank you for your business!</p>
                </div>
            </div>
        </div>

        <div class='row border-top pt-3'>
            <div class='col-12 text-center text-muted'>
                <small>TechStore Inc. | Tax ID: 12-3456789 | All prices in USD</small>
            </div>
        </div>
    </div>
</body>
</html>";

// Render PDF with optimized settings
var pdf = renderer.RenderHtmlAsPdf(bootstrapInvoice);

// Add metadata for document management
pdf.MetaData.Title = "Invoice INV-2024-1089";
pdf.MetaData.Author = "TechStore Inc.";
pdf.MetaData.Subject = "Sales Invoice";
pdf.MetaData.Keywords = "invoice, payment, e-commerce";

// Save the invoice
pdf.SaveAs("invoice-with-bootstrap.pdf");
Imports IronPdf

' Set license
IronPdf.License.LicenseKey = "License-Key"

Dim renderer As New ChromePdfRenderer()

' Bootstrap 5 e-commerce invoice example
Dim bootstrapInvoice As String = "
<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='utf-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <link href='___PROTECTED_URL_138___ rel='stylesheet'>
    <style>
        @page { margin: 20mm; }
        .invoice-header { border-bottom: 3px solid #0d6efd; }
        .product-row { border-bottom: 1px solid #dee2e6; }
        .total-section { background-color: #f8f9fa; }
    </style>
</head>
<body>
    <div class='container-fluid p-4'>

        <div class='row invoice-header pb-4 mb-4'>
            <div class='col-8'>
                <h1 class='display-4 text-primary'>INVOICE</h1>
                <p class='text-muted mb-0'>TechStore Inc.</p>
                <p class='text-muted mb-0'>123 Commerce Street, Tech City, TC 12345</p>
                <p class='text-muted'>Email: sales@techstore.com | Phone: (555) 123-4567</p>
            </div>
            <div class='col-4 text-end'>
                <p class='mb-1'><strong>Invoice #:</strong> INV-2024-1089</p>
                <p class='mb-1'><strong>Date:</strong> October 27, 2024</p>
                <p class='mb-1'><strong>Due Date:</strong> November 27, 2024</p>
                <span class='badge bg-success'>PAID</span>
            </div>
        </div>

        <div class='row mb-4'>
            <div class='col-6'>
                <h5 class='text-primary'>Bill To:</h5>
                <p class='mb-1'><strong>Acme Corporation</strong></p>
                <p class='mb-1'>456 Business Ave</p>
                <p class='mb-1'>Enterprise City, EC 67890</p>
                <p class='mb-0'>contact@acmecorp.com</p>
            </div>
            <div class='col-6 text-end'>
                <h5 class='text-primary'>Payment Method:</h5>
                <p class='mb-1'>Credit Card ending in 4242</p>
                <p class='mb-0'>Transaction ID: TXN-9876543210</p>
            </div>
        </div>

        <div class='row mb-4'>
            <div class='col-12'>
                <table class='table'>
                    <thead class='table-primary'>
                        <tr>
                            <th scope='col'>#</th>
                            <th scope='col'>Product</th>
                            <th scope='col'>Description</th>
                            <th scope='col' class='text-center'>Qty</th>
                            <th scope='col' class='text-end'>Unit Price</th>
                            <th scope='col' class='text-end'>Amount</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr class='product-row'>
                            <td>1</td>
                            <td><strong>IronPDF Pro License</strong></td>
                            <td>Professional developer license with 1 year support</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$2,999.00</td>
                            <td class='text-end'><strong>$2,999.00</strong></td>
                        </tr>
                        <tr class='product-row'>
                            <td>2</td>
                            <td><strong>Priority Support</strong></td>
                            <td>24/7 priority technical support package</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$999.00</td>
                            <td class='text-end'><strong>$999.00</strong></td>
                        </tr>
                        <tr class='product-row'>
                            <td>3</td>
                            <td><strong>Training Package</strong></td>
                            <td>On-site developer training (2 days)</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$1,500.00</td>
                            <td class='text-end'><strong>$1,500.00</strong></td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>

        <div class='row justify-content-end mb-4'>
            <div class='col-md-6'>
                <div class='card total-section'>
                    <div class='card-body'>
                        <div class='row mb-2'>
                            <div class='col-6'><strong>Subtotal:</strong></div>
                            <div class='col-6 text-end'>$5,498.00</div>
                        </div>
                        <div class='row mb-2'>
                            <div class='col-6'><strong>Tax (8.5%):</strong></div>
                            <div class='col-6 text-end'>$467.33</div>
                        </div>
                        <div class='row mb-2'>
                            <div class='col-6 text-success'><strong>Discount (10%):</strong></div>
                            <div class='col-6 text-end text-success'>-$549.80</div>
                        </div>
                        <hr>
                        <div class='row'>
                            <div class='col-6'><h4 class='text-primary'>Total:</h4></div>
                            <div class='col-6 text-end'><h4 class='text-primary'>$5,415.53</h4></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class='row mb-4'>
            <div class='col-12'>
                <div class='alert alert-info' role='alert'>
                    <h6 class='alert-heading'>Payment Terms</h6>
                    <p class='mb-0'>Payment is due within 30 days. Late payments may incur a 1.5% monthly interest charge. Thank you for your business!</p>
                </div>
            </div>
        </div>

        <div class='row border-top pt-3'>
            <div class='col-12 text-center text-muted'>
                <small>TechStore Inc. | Tax ID: 12-3456789 | All prices in USD</small>
            </div>
        </div>
    </div>
</body>
</html>"

' Render PDF with optimized settings
Dim pdf = renderer.RenderHtmlAsPdf(bootstrapInvoice)

' Add metadata for document management
pdf.MetaData.Title = "Invoice INV-2024-1089"
pdf.MetaData.Author = "TechStore Inc."
pdf.MetaData.Subject = "Sales Invoice"
pdf.MetaData.Keywords = "invoice, payment, e-commerce"

' Save the invoice
pdf.SaveAs("invoice-with-bootstrap.pdf")
$vbLabelText   $csharpLabel

Przedstawione kluczowe funkcje Bootstrap:

  • System siatki: klasy row i col-* do tworzenia responsywnej struktury układu
  • Typografia: display-4, text-muted, h5 dla hierarchicznego formatowania tekstu
  • Tabele: table, table-primary, table-hover do wyświetlania danych ustrukturyzowanych
  • Karty: card i card-body dla sekcji sum z stylizacją tła
  • Odznaki: badge bg-success dla wskaźników statusu płatności
  • Powiadomienia: alert alert-info dotyczące warunków płatności
  • Narzędzia: text-end, text-center, mb-*, pb-* narzędzia do regulacji odstępów
  • Stylizacja niestandardowa: połączona z klasami Bootstrap w celu uzyskania projektu dostosowanego do faktur

Silnik Chromium firmy IronPDF zapewnia doskonałe renderowanie komponentów Bootstrap:

  • System siatki: klasy row i col-* do tworzenia responsywnego układu
  • Typografia: display-4, text-muted, h5 dla stylizacji hierarchicznej
  • Tabele: table, table-primary, table-hover dla danych ustrukturyzowanych
  • Karty: card i card-body dla sekcji stylizowanych
  • Odznaki: badge bg-success dla wskaźników stanu
  • Powiadomienia: alert alert-info dla powiadomień
  • Narzędzia: text-end, text-center, narzędzia do regulacji odstępów
  • Stylizacja niestandardowa: w połączeniu z Bootstrapem do projektowania faktur

W przypadku czcionek internetowych i ikon IronPDF zapewnia pełną obsługę niestandardowej typografii. W przypadku rozwiązywania problemów z układami Bootstrap należy zapoznać się z sekcją Rozwiązywanie problemów z Bootstrap Flex CSS. W przypadku ustawień okna wyświetlania i Zoom odpowiednia konfiguracja zapewnia prawidłowe renderowanie responsywnych układów.

Jakie są ograniczenia ComPDFKit w przypadku Bootstrap?

Konwersja HTML na PDF w ComPDFKit opiera się na zewnętrznych wywołaniach API, a nie na wbudowanym renderowaniu. Chociaż to podejście obsługuje podstawowe style Bootstrap, wprowadza kilka ograniczeń:

  • Zależność od sieci: Wymaga żądań HTTP do usług zewnętrznych
  • Obsługa frameworków CSS: Może nie obsługiwać w pełni złożonych układów Flexbox lub CSS Grid
  • Spójność renderowania: Wyniki mogą się różnić w zależności od implementacji usługi API
  • Stylizacja niestandardowa: ograniczona kontrola nad renderowaniem komponentów Bootstrap
  • Wydajność: Opóźnienia sieciowe powodują dodatkowe obciążenie podczas generowania dokumentów

W przypadku aplikacji wymagających niezawodnego renderowania Bootstrap z pełną kontrolą nad stylem i układem, natywne renderowanie Chromium zapewnia doskonałe wyniki. Zintegrowane podejście IronPDF eliminuje zależności zewnętrzne, zachowując jednocześnie pełną kompatybilność z frameworkami CSS.

Jak dodać znaki wodne do plików PDF?

Znak wodny w plikach PDF pomaga chronić integralność dokumentu, potwierdzić własność i zwiększyć bezpieczeństwo. Znaki wodne mogą mieć postać tekstu, logo lub obrazów pojawiających się w tle lub na pierwszym planie. Zapobiegają one nieuprawnionemu użyciu i rozpowszechnianiu, jednocześnie przekazując ważne informacje o statusie dokumentu lub tożsamości autora.

Jak dodać znaki wodne za pomocą IronPDF?

IronPDF umożliwia proste programowe nakładanie znaków wodnych na dokumenty PDF. Ta funkcja jest zintegrowana z biblioteką, co pozwala programistom na stosowanie znaków wodnych przy użyciu kodu C#. W zakresie umieszczania w tle i na pierwszym planie IronPDF oferuje elastyczne opcje pozycjonowania.

using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        License.LicenseKey = "License-Code";

        string watermarkHtml = @"
            <img style='width: 500px;' src='C:\Users\Tayyab Ali\Desktop\watermark.png'>
            <h1>IronPDF Watermark</h1>";

        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>It's a PDF with a watermark</h1>");
        // Apply watermark with 30 degrees rotation and 50% opacity
        pdf.ApplyWatermark(watermarkHtml, rotation: 30, opacity: 50);
        pdf.SaveAs("Confidential.pdf");
    }
}
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        License.LicenseKey = "License-Code";

        string watermarkHtml = @"
            <img style='width: 500px;' src='C:\Users\Tayyab Ali\Desktop\watermark.png'>
            <h1>IronPDF Watermark</h1>";

        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>It's a PDF with a watermark</h1>");
        // Apply watermark with 30 degrees rotation and 50% opacity
        pdf.ApplyWatermark(watermarkHtml, rotation: 30, opacity: 50);
        pdf.SaveAs("Confidential.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Editing

Friend Class Program
	Shared Sub Main()
		License.LicenseKey = "License-Code"

		Dim watermarkHtml As String = "
            <img style='width: 500px;' src='C:\Users\Tayyab Ali\Desktop\watermark.png'>
            <h1>IronPDF Watermark</h1>"

		Dim renderer As New ChromePdfRenderer()
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>It's a PDF with a watermark</h1>")
		' Apply watermark with 30 degrees rotation and 50% opacity
		pdf.ApplyWatermark(watermarkHtml, rotation:= 30, opacity:= 50)
		pdf.SaveAs("Confidential.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Strona PDF z czerwonym znakiem wodnym

W tym przykładzie użyto ChromePdfRenderer do utworzenia pliku PDF z HTML. Metoda ApplyWatermark nakłada znak wodny zawierający obraz i nagłówek. Obrót jest ustawiony na 30 stopni przy 50% kryciu, co zapewnia widoczność bez przytłaczania treści. Powstały plik PDF zostanie zapisany w określonej ścieżce.

Jakie są zaawansowane opcje znakowania wodnego?

IronPDF zapewnia pełne możliwości dodawania znaków wodnych:

  • Znaki wodne oparte na HTML: Używaj pełnego HTML/CSS do złożonych projektów
  • Kontrola pozycjonowania: system rozmieszczenia w siatce 3x3
  • Ustawienia krycia: precyzyjna regulacja poziomów przezroczystości
  • Opcje obrotu: zastosuj dowolny kąt dla ukośnych znaków wodnych
  • Wybór stron: Zastosuj do wszystkich stron lub określonych zakresów
  • Wiele znaków wodnych: Nakładaj różne znaki wodne w zależności od potrzeb

Aby zapoznać się z zaawansowanymi technikami, zobacz: stemplowanie tekstu i obrazów lub efektywne dodawanie wielu stempli. Przewodnik dotyczący stemplowania nowych treści pokazuje dynamiczne generowanie znaków wodnych.

Jak dodać znaki wodne za pomocą ComPDFKit?

ComPDFKit zapewnia funkcjonalność programowego dodawania znaków wodnych przy użyciu metod biblioteki. Ten przykład kodu pokazuje, jak dodać tekstowy znak wodny:

static private bool AddTextWatermark(CPDFDocument document)
{
    CPDFWatermark watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_TEXT);
    watermark.SetText("test");
    watermark.SetFontName("Helvetica"); 
    watermark.SetPages("0-3");
    byte[] color = { 255, 0, 0 };
    watermark.SetTextRGBColor(color);
    watermark.SetScale(2);
    watermark.SetRotation(0);
    watermark.SetOpacity(120);
    watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER);
    watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER);
    watermark.SetVertOffset(0);
    watermark.SetHorizOffset(0);
    watermark.SetFront(true);
    watermark.SetFullScreen(true);
    watermark.SetVerticalSpacing(10);
    watermark.SetHorizontalSpacing(10);
    watermark.CreateWatermark();
    string path = "AddTextWatermarkTest.pdf";
    if (!document.WriteToFilePath(path))
    {
        return false;
    }
    Console.WriteLine("Browse the changed file in " + path);
    return true;
}

CPDFDocument document = CPDFDocument.InitWithFilePath("SamplePDF.pdf");
if (AddTextWatermark(document))
{
    Console.WriteLine("Add text watermark done.");
}
else
{
    Console.WriteLine("Add text watermark failed.");
}
static private bool AddTextWatermark(CPDFDocument document)
{
    CPDFWatermark watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_TEXT);
    watermark.SetText("test");
    watermark.SetFontName("Helvetica"); 
    watermark.SetPages("0-3");
    byte[] color = { 255, 0, 0 };
    watermark.SetTextRGBColor(color);
    watermark.SetScale(2);
    watermark.SetRotation(0);
    watermark.SetOpacity(120);
    watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER);
    watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER);
    watermark.SetVertOffset(0);
    watermark.SetHorizOffset(0);
    watermark.SetFront(true);
    watermark.SetFullScreen(true);
    watermark.SetVerticalSpacing(10);
    watermark.SetHorizontalSpacing(10);
    watermark.CreateWatermark();
    string path = "AddTextWatermarkTest.pdf";
    if (!document.WriteToFilePath(path))
    {
        return false;
    }
    Console.WriteLine("Browse the changed file in " + path);
    return true;
}

CPDFDocument document = CPDFDocument.InitWithFilePath("SamplePDF.pdf");
if (AddTextWatermark(document))
{
    Console.WriteLine("Add text watermark done.");
}
else
{
    Console.WriteLine("Add text watermark failed.");
}
Private Shared Function AddTextWatermark(ByVal document As CPDFDocument) As Boolean
	Dim watermark As CPDFWatermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_TEXT)
	watermark.SetText("test")
	watermark.SetFontName("Helvetica")
	watermark.SetPages("0-3")
	Dim color() As Byte = { 255, 0, 0 }
	watermark.SetTextRGBColor(color)
	watermark.SetScale(2)
	watermark.SetRotation(0)
	watermark.SetOpacity(120)
	watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER)
	watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER)
	watermark.SetVertOffset(0)
	watermark.SetHorizOffset(0)
	watermark.SetFront(True)
	watermark.SetFullScreen(True)
	watermark.SetVerticalSpacing(10)
	watermark.SetHorizontalSpacing(10)
	watermark.CreateWatermark()
	Dim path As String = "AddTextWatermarkTest.pdf"
	If Not document.WriteToFilePath(path) Then
		Return False
	End If
	Console.WriteLine("Browse the changed file in " & path)
	Return True
End Function

Private document As CPDFDocument = CPDFDocument.InitWithFilePath("SamplePDF.pdf")
If AddTextWatermark(document) Then
	Console.WriteLine("Add text watermark done.")
Else
	Console.WriteLine("Add text watermark failed.")
End If
$vbLabelText   $csharpLabel

Strona PDF z powtarzającym się tekstem znaku wodnego

Ten przykład otwiera istniejący plik PDF przy użyciu CPDFDocument. Metoda AddTextWatermark inicjuje tekstowy znak wodny, ustawiając właściwości takie jak treść tekstu, czcionka, kolor, skala, obrót, krycie, wyrównanie i odstępy. Znak wodny jest nakładany na określone strony i zapisywany w zdefiniowanej ścieżce. W przypadku znaków wodnych na obrazach wymagane są różne metody, co zwiększa złożoność wdrożenia.

Jak tworzyć dokumenty zgodne ze standardem PDF/A?

PDF/A to znormalizowana wersja formatu PDF przeznaczona do długoterminowej archiwizacji cyfrowej. Zapewnienie zgodności z formatem PDF/A gwarantuje niezawodne wyświetlanie i odtwarzanie w przyszłości. W tej sekcji omówiono tworzenie dokumentów zgodnych ze standardem PDF/A przy użyciu obu bibliotek.

W jaki sposób IronPDF tworzy dokumenty PDF/A?

IronPDF ułatwia konwersję standardowych plików PDF do formatów zgodnych z PDF/A. Biblioteka obsługuje różne standardy PDF/A, w tym PDF/A-1, PDF/A-2 i PDF/A-3. Informacje na temat aktualizacji dotyczących kamieni milowych PDF/A oraz PDF/A-3 z obsługą ZUGFeRD można znaleźć w ogłoszeniach dotyczących produktów.

using IronPdf;
using System;

class Program
{
    static void Main()
    {
        License.LicenseKey = "License-Key";
        PdfDocument pdf = PdfDocument.FromFile("Source.pdf");
        pdf.SaveAsPdfA("pdfa-compliant.pdf", PdfAVersions.PdfA3);
    }
}
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        License.LicenseKey = "License-Key";
        PdfDocument pdf = PdfDocument.FromFile("Source.pdf");
        pdf.SaveAsPdfA("pdfa-compliant.pdf", PdfAVersions.PdfA3);
    }
}
Imports IronPdf
Imports System

Friend Class Program
	Shared Sub Main()
		License.LicenseKey = "License-Key"
		Dim pdf As PdfDocument = PdfDocument.FromFile("Source.pdf")
		pdf.SaveAsPdfA("pdfa-compliant.pdf", PdfAVersions.PdfA3)
	End Sub
End Class
$vbLabelText   $csharpLabel

Proces obejmuje:

  1. Zainicjuj IronPDF: Zacznij od zaimportowania biblioteki IronPDF i ustawienia klucza licencyjnego.
  2. Załaduj plik PDF: Użyj metody PdfDocument.FromFile, aby załadować źródłowy plik PDF.
  3. Konwersja i zapis: Przekonwertuj załadowany plik PDF do formatu PDF/A, określając żądaną wersję PDF/A i zapisując wynikowy dokument.

Dlaczego warto wybrać format PDF/A do archiwizacji dokumentów?

Format PDF/A oferuje kilka zalet w zakresie długoterminowej archiwizacji:

  • Dokumenty samowystarczalne: wszystkie czcionki i zasoby osadzone
  • Brak zależności zewnętrznych: eliminuje zależność od treści zewnętrznych
  • Ujednolicony format: certyfikat ISO do celów archiwizacji
  • Zachowanie metadanych: Zachowuje właściwości dokumentu
  • Odtwarzalność wizualna: zapewnia spójny wygląd w czasie

IronPDF obsługuje również format PDF/UA w celu spełnienia wymagań dotyczących dostępności, zapewniając zgodność dokumentów z normami sekcji 508.

W jaki sposób ComPDFKit tworzy dokumenty PDF/A?

ComPDFKit zapewnia niezawodną konwersję do formatu PDF/A poprzez inicjalizację dokumentu, zdefiniowanie ścieżki wyjściowej oraz wywołanie metody konwersji.

static public bool CovertToPDFA1a(CPDFDocument document)
{
    string convertToPDFA1aPath = "ConvertToPDFA1aTest.pdf";
    if (!document.WritePDFAToFilePath(CPDFType.CPDFTypePDFA1a, convertToPDFA1aPath))
    {
        return false;
    }
    Console.WriteLine("Browse the changed file in " + convertToPDFA1aPath);
    return true;
}

CPDFDocument document = CPDFDocument.InitWithFilePath("CommonFivePage.pdf");
if (CovertToPDFA1a(document))
{
    Console.WriteLine("Convert to PDF/A-1a done.");
}
else
{
    Console.WriteLine("Convert to PDF/A-1a failed.");
}
static public bool CovertToPDFA1a(CPDFDocument document)
{
    string convertToPDFA1aPath = "ConvertToPDFA1aTest.pdf";
    if (!document.WritePDFAToFilePath(CPDFType.CPDFTypePDFA1a, convertToPDFA1aPath))
    {
        return false;
    }
    Console.WriteLine("Browse the changed file in " + convertToPDFA1aPath);
    return true;
}

CPDFDocument document = CPDFDocument.InitWithFilePath("CommonFivePage.pdf");
if (CovertToPDFA1a(document))
{
    Console.WriteLine("Convert to PDF/A-1a done.");
}
else
{
    Console.WriteLine("Convert to PDF/A-1a failed.");
}
Public Shared Function CovertToPDFA1a(ByVal document As CPDFDocument) As Boolean
	Dim convertToPDFA1aPath As String = "ConvertToPDFA1aTest.pdf"
	If Not document.WritePDFAToFilePath(CPDFType.CPDFTypePDFA1a, convertToPDFA1aPath) Then
		Return False
	End If
	Console.WriteLine("Browse the changed file in " & convertToPDFA1aPath)
	Return True
End Function

Private document As CPDFDocument = CPDFDocument.InitWithFilePath("CommonFivePage.pdf")
If CovertToPDFA1a(document) Then
	Console.WriteLine("Convert to PDF/A-1a done.")
Else
	Console.WriteLine("Convert to PDF/A-1a failed.")
End If
$vbLabelText   $csharpLabel

Kroki obejmują:

  1. Zainicjuj dokument: Załaduj dokument PDF za pomocą CPDFDocument.InitWithFilePath.
  2. Skonfiguruj katalog wyjściowy: Upewnij się, że katalog wyjściowy istnieje, a jeśli to konieczne, utwórz go.
  3. Konwersja do formatu PDF/A: Użyj WritePDFAToFilePath z określonym typem PDF/A, aby przeprowadzić konwersję i zapisać plik.

Jak dodać podpisy cyfrowe do plików PDF?

Podpisy cyfrowe weryfikują autentyczność i integralność dokumentów. W tej sekcji pokazano dodawanie podpisów cyfrowych przy użyciu obu bibliotek. Aby w pełni wdrożyć podpisy cyfrowe, IronPDF udostępnia obszerną dokumentację.

Jak podpisywać pliki PDF za pomocą IronPDF?

IronPDF zapewnia prostą i skuteczną aplikację do podpisów cyfrowych. Biblioteka obsługuje certyfikaty X.509 oraz integrację z modułem HSM w celu spełnienia wymagań bezpieczeństwa Enterprise.

using IronPdf;
using IronPdf.Signing;

class Program
{
    static void Main(string[] args)
    {
        var simpleSignature = new PdfSignature("MyCert.p12", "newpassword");
        simpleSignature.SignPdfFile("sample.pdf");
    }
}
using IronPdf;
using IronPdf.Signing;

class Program
{
    static void Main(string[] args)
    {
        var simpleSignature = new PdfSignature("MyCert.p12", "newpassword");
        simpleSignature.SignPdfFile("sample.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Signing

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim simpleSignature = New PdfSignature("MyCert.p12", "newpassword")
		simpleSignature.SignPdfFile("sample.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Proces obejmuje:

  1. Zainicjuj IronPDF: Zaimportuj niezbędne biblioteki IronPDF.
  2. Utwórz podpis: Zainicjuj obiekt PdfSignature przy użyciu pliku certyfikatu i hasła.
  3. Podpisz plik PDF: Umieść podpis w pliku PDF za pomocą funkcji SignPdfFile.

Jakie zaawansowane opcje podpisywania oferuje IronPDF?

IronPDF oferuje kompletne funkcje podpisu cyfrowego:

  • Różne typy podpisów: oparte na certyfikatach, wizualne oraz podpisy w polach formularzy
  • Obsługa HSM: integracja modułów bezpieczeństwa sprzętowego
  • Serwer znaczników czasu: Dodawaj zaufane znaczniki czasu do podpisów
  • Wygląd podpisu: Dostosuj wizualną reprezentację podpisu
  • Obsługa walidacji: programowa weryfikacja istniejących podpisów
  • Kontrola wersji: Zachowanie historii zmian

Aby rozwiązać problemy związane z podpisami, zapoznaj się z przewodnikiem dotyczącym rozwiązywania problemów z podpisami cyfrowymi.

Jak podpisywać pliki PDF za pomocą ComPDFKit?

ComPDFKit oferuje kompleksowe tworzenie podpisów cyfrowych z szerokimi możliwościami dostosowania.

private static void CreateDigitalSignature(CPDFDocument document, string certificatePath, string password)
{
    Console.WriteLine("--------------------");
    Console.WriteLine("Create digital signature.");
    CPDFSignatureCertificate certificate = CPDFPKCS12CertHelper.GetCertificateWithPKCS12Path("Certificate.pfx", "ComPDFKit");
    CPDFPage page = document.PageAtIndex(0);
    CPDFSignatureWidget signatureField = page.CreateWidget(C_WIDGET_TYPE.WIDGET_SIGNATUREFIELDS) as CPDFSignatureWidget;
    signatureField.SetRect(new CRect(28, 420, 150, 370));
    signatureField.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 });
    signatureField.SetWidgetBgRGBColor(new byte[] { 150, 180, 210 });
    signatureField.UpdateAp();
    string name = GetGrantorFromDictionary(certificate.SubjectDict) + "\n";
    string date = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss");
    string reason = "I am the owner of the document.";
    string location = certificate.SubjectDict["C"];
    string DN = certificate.Subject;

    CPDFSignatureConfig signatureConfig = new CPDFSignatureConfig
    {
        Text = GetGrantorFromDictionary(certificate.SubjectDict),
        Content =
            "Name: " + name + "\n" +
            "Date: " + date + "\n" +
            "Reason: " + reason + " \n" +
            "Location: " + location + "\n" +
            "DN: " + DN + "\n",
        IsContentAlignLeft = false,
        IsDrawLogo = true,
        LogoBitmap = new Bitmap("Logo.png"),
        TextColor = new float[] { 0, 0, 0 },
        ContentColor = new float[] { 0, 0, 0 }
    };
    string filePath = document.FileName + "_Signed.pdf";
    signatureField.UpdataApWithSignature(signatureConfig);
    if (document.WriteSignatureToFilePath(signatureField,
        filePath,
        certificatePath, password,
        location,
        reason, CPDFSignaturePermissions.CPDFSignaturePermissionsNone))
    {
        Console.WriteLine("File saved in " + filePath);
        Console.WriteLine("Create digital signature done.");
    }
    else
    {
        Console.WriteLine("Create digital signature failed.");
    }
    Console.WriteLine("--------------------");
}
private static void CreateDigitalSignature(CPDFDocument document, string certificatePath, string password)
{
    Console.WriteLine("--------------------");
    Console.WriteLine("Create digital signature.");
    CPDFSignatureCertificate certificate = CPDFPKCS12CertHelper.GetCertificateWithPKCS12Path("Certificate.pfx", "ComPDFKit");
    CPDFPage page = document.PageAtIndex(0);
    CPDFSignatureWidget signatureField = page.CreateWidget(C_WIDGET_TYPE.WIDGET_SIGNATUREFIELDS) as CPDFSignatureWidget;
    signatureField.SetRect(new CRect(28, 420, 150, 370));
    signatureField.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 });
    signatureField.SetWidgetBgRGBColor(new byte[] { 150, 180, 210 });
    signatureField.UpdateAp();
    string name = GetGrantorFromDictionary(certificate.SubjectDict) + "\n";
    string date = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss");
    string reason = "I am the owner of the document.";
    string location = certificate.SubjectDict["C"];
    string DN = certificate.Subject;

    CPDFSignatureConfig signatureConfig = new CPDFSignatureConfig
    {
        Text = GetGrantorFromDictionary(certificate.SubjectDict),
        Content =
            "Name: " + name + "\n" +
            "Date: " + date + "\n" +
            "Reason: " + reason + " \n" +
            "Location: " + location + "\n" +
            "DN: " + DN + "\n",
        IsContentAlignLeft = false,
        IsDrawLogo = true,
        LogoBitmap = new Bitmap("Logo.png"),
        TextColor = new float[] { 0, 0, 0 },
        ContentColor = new float[] { 0, 0, 0 }
    };
    string filePath = document.FileName + "_Signed.pdf";
    signatureField.UpdataApWithSignature(signatureConfig);
    if (document.WriteSignatureToFilePath(signatureField,
        filePath,
        certificatePath, password,
        location,
        reason, CPDFSignaturePermissions.CPDFSignaturePermissionsNone))
    {
        Console.WriteLine("File saved in " + filePath);
        Console.WriteLine("Create digital signature done.");
    }
    else
    {
        Console.WriteLine("Create digital signature failed.");
    }
    Console.WriteLine("--------------------");
}
Imports Microsoft.VisualBasic

Private Shared Sub CreateDigitalSignature(ByVal document As CPDFDocument, ByVal certificatePath As String, ByVal password As String)
	Console.WriteLine("--------------------")
	Console.WriteLine("Create digital signature.")
	Dim certificate As CPDFSignatureCertificate = CPDFPKCS12CertHelper.GetCertificateWithPKCS12Path("Certificate.pfx", "ComPDFKit")
	Dim page As CPDFPage = document.PageAtIndex(0)
	Dim signatureField As CPDFSignatureWidget = TryCast(page.CreateWidget(C_WIDGET_TYPE.WIDGET_SIGNATUREFIELDS), CPDFSignatureWidget)
	signatureField.SetRect(New CRect(28, 420, 150, 370))
	signatureField.SetWidgetBorderRGBColor(New Byte() { 0, 0, 0 })
	signatureField.SetWidgetBgRGBColor(New Byte() { 150, 180, 210 })
	signatureField.UpdateAp()
	Dim name As String = GetGrantorFromDictionary(certificate.SubjectDict) & vbLf
	Dim [date] As String = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss")
	Dim reason As String = "I am the owner of the document."
	Dim location As String = certificate.SubjectDict("C")
	Dim DN As String = certificate.Subject

	Dim signatureConfig As New CPDFSignatureConfig With {
		.Text = GetGrantorFromDictionary(certificate.SubjectDict),
		.Content = "Name: " & name & vbLf & "Date: " & [date] & vbLf & "Reason: " & reason & " " & vbLf & "Location: " & location & vbLf & "DN: " & DN & vbLf,
		.IsContentAlignLeft = False,
		.IsDrawLogo = True,
		.LogoBitmap = New Bitmap("Logo.png"),
		.TextColor = New Single() { 0, 0, 0 },
		.ContentColor = New Single() { 0, 0, 0 }
	}
	Dim filePath As String = document.FileName & "_Signed.pdf"
	signatureField.UpdataApWithSignature(signatureConfig)
	If document.WriteSignatureToFilePath(signatureField, filePath, certificatePath, password, location, reason, CPDFSignaturePermissions.CPDFSignaturePermissionsNone) Then
		Console.WriteLine("File saved in " & filePath)
		Console.WriteLine("Create digital signature done.")
	Else
		Console.WriteLine("Create digital signature failed.")
	End If
	Console.WriteLine("--------------------")
End Sub
$vbLabelText   $csharpLabel

Kroki obejmują:

  1. Zainicjuj dokument i certyfikat: Załaduj dokument PDF i pobierz certyfikat za pomocą CPDFPKCS12CertHelper.
  2. Utwórz i skonfiguruj pole podpisu: Dodaj pole podpisu do pliku PDF, ustaw jego właściwości i skonfiguruj szczegóły podpisu.
  3. Zastosuj podpis: Użyj WriteSignatureToFilePath, aby zastosować podpis i zapisać podpisany plik PDF.

Jak wyodrębnić tekst z plików PDF?

Pobieranie tekstu z dokumentów PDF ma kluczowe znaczenie dla przetwarzania i analizy danych. W tej sekcji wyjaśniono proces pozyskiwania tekstu przy użyciu obu bibliotek.

W jaki sposób IronPDF wyodrębnia tekst?

IronPDF umożliwia proste wyodrębnianie tekstu z dokumentów PDF. Biblioteka udostępnia metody do wyodrębniania całego tekstu lub konkretnej zawartości strony. W celu analizowania treści plików PDF IronPDF obsługuje ekstrakcję ustrukturyzowaną. Podczas uzyskiwania dostępu do obiektów DOM plików PDF programiści mogą pobierać szczegółowe informacje o treści.

using IronPdf;
using System.IO;

PdfDocument pdf = PdfDocument.FromFile("PDF File With Text.pdf");
string text = pdf.ExtractAllText();
File.WriteAllText("PDF Text.txt", text);
using IronPdf;
using System.IO;

PdfDocument pdf = PdfDocument.FromFile("PDF File With Text.pdf");
string text = pdf.ExtractAllText();
File.WriteAllText("PDF Text.txt", text);
Imports IronPdf
Imports System.IO

Private pdf As PdfDocument = PdfDocument.FromFile("PDF File With Text.pdf")
Private text As String = pdf.ExtractAllText()
File.WriteAllText("PDF Text.txt", text)
$vbLabelText   $csharpLabel

Proces obejmuje:

  1. Zainicjuj IronPDF: zaimportuj bibliotekę IronPDF.
  2. Załaduj plik PDF: Użyj metody PdfDocument.FromFile, aby załadować plik PDF.
  3. Wyodrębnij tekst: Wywołaj metodę ExtractAllText, aby pobrać całą zawartość tekstową z pliku PDF.
  4. Zapisz tekst do pliku: Zapisz wyodrębniony tekst do pliku przy użyciu standardowych operacji wejścia/wyjścia plików.

Jakie zaawansowane funkcje ekstrakcji tekstu są dostępne?

IronPDF oferuje zaawansowane funkcje wyodrębniania tekstu:

  • Pobieranie danych z poszczególnych stron: Pobieranie tekstu z poszczególnych stron
  • Treści ustrukturyzowane: Dostęp do tekstu z informacjami o formatowaniu
  • Wyszukiwanie i zamiana: Wyszukiwanie i zamiana tekstu w plikach PDF
  • Obsługa wyrażeń regularnych: Wyodrębnianie tekstu na podstawie wzorców
  • Pobieranie oparte na współrzędnych: Pobieranie tekstu z określonych obszarów
  • Obsługa języków: Obsługa znaków UTF-8 i znaków międzynarodowych

Pełne przykłady tekstów do czytania można znaleźć w przewodniku do czytania tekstów w formacie PDF.

W jaki sposób ComPDFKit wyodrębnia tekst?

ComPDFKit zapewnia elastyczne wyodrębnianie tekstu z dokumentów PDF.

static private bool PDFToText(CPDFDocument document)
{
    string path = "//PDFToText.txt";
    if (!document.PdfToText("1-" + document.PageCount.ToString(), path))//Page ranges are counted from 1
    {
        return false;
    }
    Console.WriteLine("Browse the generated file in " + path);
    return true;
}

static void Main(string[] args)
{
    Console.WriteLine("Running PDFPage test sample…\r\n");
    SDKLicenseHelper.LicenseVerify();
    CPDFDocument document = CPDFDocument.InitWithFilePath("CommonFivePage.pdf");

    if (PDFToText(document))
    {
        Console.WriteLine("PDF to text done.");
    }
    else
    {
        Console.WriteLine("PDF to text failed.");
    }
    Console.WriteLine("--------------------");
    Console.WriteLine("Done!");
    Console.WriteLine("--------------------");
    Console.ReadLine();
}
static private bool PDFToText(CPDFDocument document)
{
    string path = "//PDFToText.txt";
    if (!document.PdfToText("1-" + document.PageCount.ToString(), path))//Page ranges are counted from 1
    {
        return false;
    }
    Console.WriteLine("Browse the generated file in " + path);
    return true;
}

static void Main(string[] args)
{
    Console.WriteLine("Running PDFPage test sample…\r\n");
    SDKLicenseHelper.LicenseVerify();
    CPDFDocument document = CPDFDocument.InitWithFilePath("CommonFivePage.pdf");

    if (PDFToText(document))
    {
        Console.WriteLine("PDF to text done.");
    }
    else
    {
        Console.WriteLine("PDF to text failed.");
    }
    Console.WriteLine("--------------------");
    Console.WriteLine("Done!");
    Console.WriteLine("--------------------");
    Console.ReadLine();
}
Imports Microsoft.VisualBasic

Private Shared Function PDFToText(ByVal document As CPDFDocument) As Boolean
	Dim path As String = "//PDFToText.txt"
	If Not document.PdfToText("1-" & document.PageCount.ToString(), path) Then 'Page ranges are counted from 1
		Return False
	End If
	Console.WriteLine("Browse the generated file in " & path)
	Return True
End Function

Shared Sub Main(ByVal args() As String)
	Console.WriteLine("Running PDFPage test sample…" & vbCrLf)
	SDKLicenseHelper.LicenseVerify()
	Dim document As CPDFDocument = CPDFDocument.InitWithFilePath("CommonFivePage.pdf")

	If PDFToText(document) Then
		Console.WriteLine("PDF to text done.")
	Else
		Console.WriteLine("PDF to text failed.")
	End If
	Console.WriteLine("--------------------")
	Console.WriteLine("Done!")
	Console.WriteLine("--------------------")
	Console.ReadLine()
End Sub
$vbLabelText   $csharpLabel

Kroki są następujące:

  1. Zainicjuj dokument: Załaduj dokument PDF za pomocą CPDFDocument.InitWithFilePath.
  2. Wyodrębnij i zapisz tekst: Użyj PdfToText, aby wyodrębnić tekst z określonego zakresu stron i zapisać go do pliku.

Praktyczne scenariusze zastosowań

Zrozumienie, kiedy należy używać poszczególnych bibliotek, pomaga programistom podejmować świadome decyzje w oparciu o wymagania projektu. Poniższe scenariusze ilustrują praktyczne zastosowania, w których każda z bibliotek sprawdza się najlepiej.

Kiedy warto wybrać IronPDF?

System generowania dokumentów dla przedsiębiorstw Firma z branży usług finansowych musi generować ponad 50 000 miesięcznych wyciągów o złożonym układzie, zawierających wykresy i spełniających wymogi zgodności z przepisami.

Zalety IronPDF:

Platforma SaaS do generowania faktur Wielodostępna platforma SaaS generująca faktury z logo marki dla tysięcy klientów przy użyciu niestandardowych szablonów.

Zalety IronPDF:

  • Obsługa HTML/CSS: Pełna kompatybilność z Bootstrapem dla szablonów firmowych
  • Wydajność: wdrożenie Docker dla architektury skalowalnej
  • Dostosowanie: nagłówki/stopki i znaki wodne w celu budowania marki
  • Projektowanie API: Proste API skraca czas programowania
  • Gotowość do pracy w chmurze: natywna obsługa platform Azure i AWS

Kiedy warto rozważyć ComPDFKit?

Podstawowa aplikacja do przeglądania plików PDF Aplikacja desktopowa wymagająca przeglądania plików PDF i podstawowych funkcji adnotacji bez konieczności konwersji do formatu HTML.

Zalety ComPDFKit:

  • Komponent przeglądarki: wbudowana funkcja przeglądania
  • Narzędzia do adnotacji: Natywna obsługa adnotacji
  • Prosta integracja: bezpośrednia obróbka plików PDF bez HTML
  • Praca w trybie offline: brak zależności od sieci w przypadku podstawowych funkcji

System archiwizacji dokumentów Wewnętrzny system zarządzania dokumentami skupiony na porządkowaniu plików PDF i podstawowej edycji.

Zalety ComPDFKit:

  • Obsługa plików: Zaawansowane funkcje łączenia i dzielenia plików PDF
  • Podstawowa edycja: narzędzia do modyfikacji tekstu i obrazów
  • Podejście tradycyjne: znany projekt API oparty na formacie PDF

Jakie są opcje licencyjne?

Modele licencyjne dla IronPDF i ComPDFKit różnią się pod względem podejścia i warunków użytkowania. Zrozumienie tych różnic pomaga programistom wybrać odpowiednie narzędzie dostosowane do potrzeb projektu i budżetu.

Jakie opcje licencyjne oferuje IronPDF?

IronPDF pricing page showing three license tiers (Lite $749, Plus $1,499, Professional $2,999) with Professional selected, displaying 10 developers/locations/projects coverage and $4,998 total with extended support and upgrade protection.

IronPDF działa w oparciu o przejrzysty model licencji komercyjnych:

Rodzaje licencji:

  • Lite License (749 USD): 1 programista, 1 lokalizacja, 1 projekt
  • Plus License (1499 USD): 3 programistów, 3 lokalizacje, 3 projekty
  • Professional License (2999 USD): 10 programistów, 10 lokalizacji, 10 projektów
  • Przedsiębiorstwa/OEM: Indywidualne ceny za nieograniczone wdrożenie

Kluczowe zalety:

  • Licencja wieczysta: jednorazowa opłata za dożywotnie użytkowanie
  • Dystrybucja bez opłat licencyjnych: brak opłat za użytkowanie
  • Dostępny kod źródłowy: opcjonalny zakup do celów audytów bezpieczeństwa
  • Elastyczne aktualizacje: dostępne są przedłużenia licencji i aktualizacje
  • Okres próbny: Bezpłatna licencja próbna do oceny

Model biznesowy IronPDF gwarantuje Enterpriseom dedykowane wsparcie, kompletną dokumentację oraz zaawansowane funkcje do profesjonalnego tworzenia i edycji plików PDF. Przejrzysta struktura cenowa eliminuje ukryte koszty i zapewnia przewidywalność budżetu.

Jakie opcje licencyjne oferuje ComPDFKit?

ComPDFKit oferuje elastyczne licencje dostosowane do różnych potrzeb biznesowych:

Opcje licencji:

  • Licencja wieczysta: jednorazowa opłata za dożywotni dostęp do SDK
  • Licencja subskrypcyjna: regularne płatności z bieżącymi aktualizacjami
  • Ceny na podstawie wyceny: indywidualne wyceny w zależności od wymagań projektu

Uwagi:

  • Koszty zmienne: W celu uzyskania wyceny prosimy o bezpośredni kontakt
  • Opłaty za aktualizacje: Opcjonalne opłaty za aktualizacje wersji
  • Pakiety wsparcia: Oddzielne wymagania dotyczące umów wsparcia
  • Ograniczenia korzystania z API: Dodatkowe koszty związane z API do konwersji HTML

Jakie dokumenty i wsparcie są dostępne?

Jakie wsparcie zapewnia IronPDF?

IronPDF oferuje dokumentację i infrastrukturę wsparcia:

Materiały dokumentacyjne:

Kanały wsparcia:

  • Wsparcie techniczne 24/5: bezpośredni dostęp do zespołu programistów
  • Czas reakcji: Priorytetowa pomoc techniczna z gwarantowanym czasem reakcji
  • Przegląd kodu: zespół inżynierów dokonuje przeglądu złożonych implementacji
  • Rozwiązania niestandardowe: pomoc w przypadku specyficznych wymagań
  • Regularne aktualizacje: aktualizacje produktów i najważniejsze funkcje

W przypadku zgłaszania wniosków o wsparcie techniczne szczegółowe wytyczne zapewniają skuteczne rozwiązanie problemu. Infrastruktura wsparcia obejmuje pomoc we wdrażaniu na różnych platformach.

Jakie wsparcie zapewnia ComPDFKit?

ComPDFKit udostępnia podstawową dokumentację i zasoby pomocy technicznej:

Dokumentacja:

  • Przewodnik dla początkujących: Podstawowe instrukcje konfiguracji
  • Dokumentacja API: Standardowa dokumentacja metod
  • Przykładowy kod: Ograniczone przykłady podstawowych funkcji
  • Dokumentacja platformy: Podstawowe przewodniki dotyczące integracji platformy

Opcje wsparcia:

  • Wsparcie e-mail: Odpowiedź w standardowych godzinach pracy
  • Pomoc techniczna: Podstawowa pomoc w rozwiązywaniu problemów
  • Forum społeczności: społeczność wsparcia tworzona przez użytkowników

Chociaż obie biblioteki oferują dokumentację i wsparcie, IronPDF zapewnia znacznie bardziej kompletne zasoby, szybszy czas reakcji oraz bezpośrednie wsparcie inżynierów, które ma kluczowe znaczenie dla wdrożeń produkcyjnych.

Kwestie związane z wydajnością i optymalizacją

Wydajność wpływa na rentowność systemu produkcyjnego. Zrozumienie możliwości optymalizacyjnych każdej biblioteki pomaga architektom w projektowaniu wydajnych rozwiązań.

W jaki sposób IronPDF optymalizuje wydajność?

IronPDF oferuje szeroki zakres funkcji optymalizacji wydajności:

Zalety architektury:

  • Natywny silnik Chrome: zoptymalizowany silnik renderujący w języku C++
  • Zarządzanie pamięcią: wydajna obsługa dużych dokumentów
  • Bezpieczeństwo wątków: Stworzone z myślą o współbieżnych aplikacjach internetowych
  • Łączenie zasobów: instancje renderowania wielokrotnego użytku

Funkcje wydajnościowe:

Wskaźniki wydajności (generowanie 50-stronicowego dokumentu):

  • Jednowątkowe: średnio 2,3 sekundy
  • Wielowątkowość (8 rdzeni): 0,4 sekundy na dokument
  • Zużycie pamięci: maksymalnie 180 MB
  • Żądania równoległe: ponad 100 jednoczesnych renderowań

Jakie są cechy charakterystyczne działania ComPDFKit?

ComPDFKit zapewnia standardową wydajność w przypadku podstawowych operacji:

Profil wydajności:

  • Przetwarzanie synchroniczne: tradycyjne operacje blokujące
  • Zużycie pamięci: Wyższe zużycie w przypadku złożonych dokumentów
  • Współbieżność: Ograniczona obsługa operacji wykonywanych jednocześnie
  • Konwersja HTML: opóźnienie sieciowe wydłuża czas o 1–3 sekundy

Ograniczenia:

  • Brak wbudowanej obsługi asynchroniczności
  • Ograniczona dokumentacja dotycząca wątków
  • Wywołania API powodują obciążenie sieci
  • Zarządzanie zasobami wymaga ręcznej implementacji

Wzorce integracji Enterprise

Systemy produkcyjne wymagają określonych wzorców architektonicznych zapewniających niezawodność i skalowalność. Zrozumienie podejść do integracji pomaga zespołom wdrażać niezawodne rozwiązania.

Jak wdrożyć IronPDF w mikrousługach?

IronPDF obsługuje nowoczesne wzorce architektoniczne:

Usługa kontenerowego pliku PDF:

// Dockerfile for IronPDF microservice
FROM mcr.microsoft.com/dotnet/aspnet:6.0
RUN apt-get update && apt-get install -y \
    libgdiplus \
    libc6-dev \
    libx11-6
COPY . /app
WORKDIR /app
ENTRYPOINT ["dotnet", "PdfService.dll"]
// Dockerfile for IronPDF microservice
FROM mcr.microsoft.com/dotnet/aspnet:6.0
RUN apt-get update && apt-get install -y \
    libgdiplus \
    libc6-dev \
    libx11-6
COPY . /app
WORKDIR /app
ENTRYPOINT ["dotnet", "PdfService.dll"]
' Dockerfile for IronPDF microservice
FROM mcr.microsoft.com/dotnet/aspnet:6.0
RUN apt-get update && apt-get install -y _
    libgdiplus _
    libc6-dev _
    libx11-6
COPY . /app
WORKDIR /app
ENTRYPOINT ["dotnet", "PdfService.dll"]
$vbLabelText   $csharpLabel

Skalowalne wdrożenie API:

[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
    private readonly ChromePdfRenderer _renderer;

    public PdfController()
    {
        _renderer = new ChromePdfRenderer();
        // Configure for production
        _renderer.RenderingOptions.EnableJavaScript = true;
        _renderer.RenderingOptions.RenderDelay = 500;
    }

    [HttpPost("generate")]
    public async Task<IActionResult> GeneratePdf([FromBody] PdfRequest request)
    {
        try
        {
            var pdf = await _renderer.RenderHtmlAsPdfAsync(request.Html);

            // Apply security if needed
            if (request.RequirePassword)
            {
                pdf.SecuritySettings.SetPassword(request.Password);
            }

            var stream = pdf.Stream;
            return File(stream, "application/pdf", request.FileName);
        }
        catch (Exception ex)
        {
            // Zakończ error handling
            return StatusCode(500, new { error = ex.Message });
        }
    }
}
[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
    private readonly ChromePdfRenderer _renderer;

    public PdfController()
    {
        _renderer = new ChromePdfRenderer();
        // Configure for production
        _renderer.RenderingOptions.EnableJavaScript = true;
        _renderer.RenderingOptions.RenderDelay = 500;
    }

    [HttpPost("generate")]
    public async Task<IActionResult> GeneratePdf([FromBody] PdfRequest request)
    {
        try
        {
            var pdf = await _renderer.RenderHtmlAsPdfAsync(request.Html);

            // Apply security if needed
            if (request.RequirePassword)
            {
                pdf.SecuritySettings.SetPassword(request.Password);
            }

            var stream = pdf.Stream;
            return File(stream, "application/pdf", request.FileName);
        }
        catch (Exception ex)
        {
            // Zakończ error handling
            return StatusCode(500, new { error = ex.Message });
        }
    }
}
Imports Microsoft.AspNetCore.Mvc

<ApiController>
<Route("api/[controller]")>
Public Class PdfController
    Inherits ControllerBase

    Private ReadOnly _renderer As ChromePdfRenderer

    Public Sub New()
        _renderer = New ChromePdfRenderer()
        ' Configure for production
        _renderer.RenderingOptions.EnableJavaScript = True
        _renderer.RenderingOptions.RenderDelay = 500
    End Sub

    <HttpPost("generate")>
    Public Async Function GeneratePdf(<FromBody> request As PdfRequest) As Task(Of IActionResult)
        Try
            Dim pdf = Await _renderer.RenderHtmlAsPdfAsync(request.Html)

            ' Apply security if needed
            If request.RequirePassword Then
                pdf.SecuritySettings.SetPassword(request.Password)
            End If

            Dim stream = pdf.Stream
            Return File(stream, "application/pdf", request.FileName)
        Catch ex As Exception
            ' Zakończ error handling
            Return StatusCode(500, New With {.error = ex.Message})
        End Try
    End Function
End Class
$vbLabelText   $csharpLabel

Korzyści:

  • Skalowanie horyzontalne: dodawaj instancje w miarę potrzeb
  • Izolacja błędów: Awarie usług nie mają wpływu na system
  • Kontrola zasobów: limity kontenerów zapobiegają wyczerpaniu zasobów
  • Elastyczność wdrażania: Współpracuje z Kubernetes, Docker Swarm

A co z integracją ComPDFKit Enterprise?

ComPDFKit wymaga tradycyjnych metod integracji:

  • Projekt monolityczny: biblioteka ściśle powiązana z aplikacją
  • Ograniczone skalowanie: wyłącznie skalowanie pionowe
  • Współdzielenie zasobów: potencjalne konflikty w scenariuszach wielodostępnych
  • Zależności API: Wymagania dotyczące usług zewnętrznych komplikują architekturę

Funkcje bezpieczeństwa i zgodności

Aplikacje Enterprise wymagają niezawodnych funkcji bezpieczeństwa w celu zapewnienia zgodności z przepisami i ochrony danych.

Jak IronPDF radzi sobie z bezpieczeństwem?

IronPDF zapewnia kompletne funkcje bezpieczeństwa:

Opcje szyfrowania:

  • Szyfrowanie AES 256-bitowe: bezpieczeństwo na poziomie wojskowym
  • Hasła użytkowników/właścicieli: oddzielne poziomy dostępu
  • Kontrola uprawnień: szczegółowe ograniczenia działań
  • Podpisy cyfrowe: uwierzytelnianie oparte na certyfikatach
  • Obsługa HSM: integracja modułów bezpieczeństwa sprzętowego

Funkcje zgodności:

Przykład implementacji:

// Secure document generation
var pdf = renderer.RenderHtmlAsPdf(htmlContent);

// Apply complete security
pdf.SecuritySettings.SetPassword("user123");
pdf.SecuritySettings.SetOwnerPassword("owner456");
pdf.SecuritySettings.MakePdfDocumentReadOnly();
pdf.SecuritySettings.SetPdfSecuritySettings(
    canPrint: true,
    canCopy: false,
    canModify: false
);

// Add digital signature
var signature = new PdfSignature("cert.pfx", "password");
pdf.SignWithSignature(signature);

// Ensure compliance
pdf.SaveAsPdfA("secure-compliant.pdf", PdfAVersions.PdfA3);
// Secure document generation
var pdf = renderer.RenderHtmlAsPdf(htmlContent);

// Apply complete security
pdf.SecuritySettings.SetPassword("user123");
pdf.SecuritySettings.SetOwnerPassword("owner456");
pdf.SecuritySettings.MakePdfDocumentReadOnly();
pdf.SecuritySettings.SetPdfSecuritySettings(
    canPrint: true,
    canCopy: false,
    canModify: false
);

// Add digital signature
var signature = new PdfSignature("cert.pfx", "password");
pdf.SignWithSignature(signature);

// Ensure compliance
pdf.SaveAsPdfA("secure-compliant.pdf", PdfAVersions.PdfA3);
' Secure document generation
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)

' Apply complete security
pdf.SecuritySettings.SetPassword("user123")
pdf.SecuritySettings.SetOwnerPassword("owner456")
pdf.SecuritySettings.MakePdfDocumentReadOnly()
pdf.SecuritySettings.SetPdfSecuritySettings(
    canPrint:=True,
    canCopy:=False,
    canModify:=False
)

' Add digital signature
Dim signature As New PdfSignature("cert.pfx", "password")
pdf.SignWithSignature(signature)

' Ensure compliance
pdf.SaveAsPdfA("secure-compliant.pdf", PdfAVersions.PdfA3)
$vbLabelText   $csharpLabel

Jakie zabezpieczenia zapewnia ComPDFKit?

ComPDFKit oferuje podstawowe funkcje bezpieczeństwa:

  • Ochrona hasłem: Podstawowe hasła użytkownika/właściciela
  • Szyfrowanie: Standardowe szyfrowanie plików PDF
  • Uprawnienia: Ograniczone ustawienia uprawnień
  • Podpisy cyfrowe: podpisywanie oparte na certyfikatach

Jednak zaawansowane funkcje, takie jak obsługa HSM, sanitarizacja i kompletne narzędzia zapewniające zgodność z przepisami, wymagają dodatkowej implementacji.

Którą bibliotekę PDF wybrać?

Porównanie IronPDF i ComPDFKit ujawnia wyraźne różnice w różnych przypadkach użycia i wymaganiach.

Dlaczego IronPDF wyróżnia się w zastosowaniach Enterprise

IronPDF wyróżnia się jako najlepszy wybór dla systemów produkcyjnych wymagających:

Doskonałość techniczna:

  • Natywne renderowanie HTML: silnik Chromium zapewnia doskonałą konwersję
  • Wydajność: Asynchroniczność/wielowątkowość do przetwarzania dużych ilości danych
  • Niezawodność: architektura bezpieczna dla wątków w aplikacjach internetowych
  • Integracja: proste API skraca czas programowania

Wartość biznesowa:

  • Całkowity koszt posiadania: Przejrzyste ceny bez ukrytych opłat
  • Infrastruktura wsparcia: wsparcie inżynierów dostępne 24 godziny na dobę, 5 dni w tygodniu minimalizuje przestoje
  • Dokumentacja: ponad 500 przykładów przyspiesza proces tworzenia oprogramowania
  • Przyszłościowość: Regularne aktualizacje i nowe funkcje

Prawdziwe opinie programistów: "IronPDF zrewolucjonizował system generowania faktur. Programiści przetwarzają ponad 100 000 dokumentów miesięcznie bez żadnych problemów z renderowaniem. "Wsparcie Bootstrap pozwoliło zaoszczędzić tygodnie pracy programistów." – Starszy architekt .NET, detalista z listy Fortune 500

"Po przeanalizowaniu wielu bibliotek, wydajność i wsparcie techniczne IronPDF sprawiły, że wybór był oczywisty. Funkcje asynchroniczne skróciły czas przetwarzania o 75%." – Kierownik techniczny, usługi finansowe

Kiedy ComPDFKit może wystarczyć

ComPDFKit może być odpowiedni dla:

  • Proste przeglądanie plików PDF: Podstawowe aplikacje desktopowe
  • Ograniczony zakres: Projekty bez konieczności konwersji HTML
  • Ograniczenia budżetowe: Gdy koszty zewnętrznych interfejsów API są akceptowalne
  • Podstawowe operacje: proste wymagania dotyczące scalania/dzielenia

Ostateczna rekomendacja

Dla doświadczonych programistów .NET tworzących systemy produkcyjne, w których priorytetami są wydajność, niezawodność i wzorce architektoniczne, IronPDF zapewnia kompletne rozwiązanie. Połączenie możliwości technicznych, funkcji Enterprise i doskonałej infrastruktury wsparcia technicznego gwarantuje pomyślną realizację projektu.

Kluczowe czynniki decyzyjne:

Wymagania IronPDF ComPDFKit Zwycięzca
HTML do PDF Natywny Chromium Zewnętrzne API IronPDF
Wydajność Asynchroniczne/wielowątkowe Synchroniczne IronPDF
Obsługa CSS Pełny Bootstrap/Flexbox Ograniczone IronPDF
Dokumentacja Ponad 500 przykładów Podstawowe IronPDF
Wsparcie 24/5 Inżynieria Tylko e-mail IronPDF
Funkcje dla Enterprise Zakończ Ograniczone IronPDF
Całkowity koszt Przejrzysty Zmienna IronPDF

IronPDF udostępnia bezpłatną licencję próbną do testowania biblioteki i jej możliwości. Ceny licencji IronPDF zaczynają się od 749 USD. Dodatkowo firma Iron Software oferuje pakiet dziewięciu bibliotek w cenie dwóch, w tym IronXL i IronOCR wraz z IronPDF.

Dla zespołów wymagających profesjonalnego generowania plików PDF z obsługą na poziomie Enterprise, IronPDF zapewnia kompletne rozwiązanie. Sprawdzone osiągnięcia w pracy z firmami z listy Fortune 500, kompletny zestaw funkcji oraz zaangażowanie w sukces programistów sprawiają, że jest to najlepszy wybór dla poważnych aplikacji .NET.

Zwróć uwagęComPDFKit jest zastrzeżonym znakiem towarowym odpowiedniego właściciela. Ta strona nie jest powiązana z ComPDFKit, nie jest przez nią 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

Jak mogę przekonwertować HTML na PDF w języku C#?

Możesz użyć metody RenderHtmlAsPdf biblioteki IronPDF do konwersji ciągów HTML na pliki PDF. Metoda ta nadaje się do konwersji HTML, CSS i JavaScript na wysokiej jakości dokumenty PDF.

Jakie są zalety korzystania z biblioteki PDF dla języka C#?

Biblioteki PDF dla języka C#, takie jak IronPDF i ComPDFKit, umożliwiają tworzenie i modyfikowanie plików PDF oraz wyodrębnianie tekstu i obrazów. Obsługują one takie funkcje, jak obsługa formularzy, podpisy cyfrowe i zabezpieczenia, zapewniając elastyczność na różnych platformach.

Czy mogę zabezpieczyć moje pliki PDF w języku C#?

Tak, korzystając z IronPDF, można zwiększyć bezpieczeństwo plików PDF poprzez ustawianie haseł, szyfrowanie dokumentów oraz dodawanie podpisów cyfrowych w celu ochrony poufnych informacji.

W jaki sposób ComPDFKit obsługuje edycję i konwersję plików PDF?

ComPDFKit oferuje rozbudowane możliwości edycji plików PDF oraz konwersję do różnych formatów, w tym PDF/A do długoterminowej archiwizacji cyfrowej, co czyni go wszechstronnym narzędziem do projektów wieloplatformowych.

Jakie opcje licencyjne są dostępne dla bibliotek C# do obsługi plików PDF?

IronPDF oferuje model licencji komercyjnych z licencjami wieczystymi, natomiast ComPDFKit zapewnia zarówno licencje wieczyste, jak i subskrypcyjne, co pozwala na elastyczność w zależności od potrzeb biznesowych.

Jakie wsparcie i zasoby są dostępne dla programistów korzystających z tych bibliotek?

IronPDF zapewnia obszerną dokumentację i responsywną obsługę klienta, dzięki czemu nadaje się do zastosowań na poziomie Enterprise. ComPDFKit oferuje również szczegółową dokumentację i wsparcie techniczne.

Jak wypada porównanie IronPDF i ComPDFKit pod względem konwersji HTML do PDF?

IronPDF wyróżnia się w konwersji HTML do PDF, obsługując ciągi HTML, adresy URL, formularze internetowe ASPX i widoki MVC, podczas gdy ComPDFKit oferuje szerszy zakres funkcji edycji i konwersji plików PDF.

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

Zespol wsparcia Iron

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