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

Porównanie IronPDF i PSPDFKit

1. Wprowadzenie

Szukasz idealnych narzędzi do obsługi plików PDF dla platformy .NET Framework?

W tym artykułe przyjrzymy się, jak pracować z plikami PDF w języku C# (jednym z najpopularniejszych języków programowania). Omówimy dwa wiodące w branży narzędzia do obsługi plików PDF dla języka C# w środowisku .NET Framework, wykorzystując przykłady kodu do porównania ich pod kątem wydajności i funkcji. Na koniec przyjrzymy się szczegółom licencji i dowiemy się, jak uzyskać klucze licencyjne.

Dwie biblioteki PDF to:

  • PDFNet
  • IronPDF

2. IronPDF

IronPDF to biblioteka C# .NET opracowana przez Iron Software w celu rozwiązania wszystkich problemów związanych z plikami PDF dla programistów C# .NET przy użyciu jednej biblioteki. IronPDF jest oparty na silniku Chromium i oferuje szereg przydatnych i zaawansowanych funkcji, takich jak konwersja plików HTML5, JavaScript, CSS i obrazów do formatu PDF, tworzenie niestandardowych nagłówków i stopek oraz wyświetlanie plików PDF dokładnie tak, jak wyglądają w przeglądarce. IronPDF umożliwia odczytywanie danych z plików PDF i automatyczne wstawianie ich do aplikacji .NET oraz systemów przechowywania danych. Możesz importować, przenosić i indeksować treści ze starego magazynu dokumentów PDF do swoich aplikacji do zarządzania dokumentami i aplikacji biznesowych.

2.1. Funkcje IronPDF

2.1.1. Konwersje PDF

Ta funkcja pozwala generować pliki PDF z różnych formatów, takich jak HTML, widoki MVC, formularze internetowe, ciągi znaków HTML i adresy URL.

2.1.2. Pobieranie treści z plików PDF

W wielu przypadkach można łatwo wyodrębnić tekst osadzony w plikach PDF. Jeśli jednak to nie zadziała, najprawdopodobniej tekst jest osadzony w obrazie. Aby skanować dokumenty w poszukiwaniu tekstu wizualnego, a nie zwykłego tekstu, należy użyć biblioteki IronOCR.

2.1.3 Nagłówki i stopki

Nagłówki i stopki można dodawać podczas tworzenia plików PDF lub do istniejących plików PDF. Za pomocą właściwości Opcje drukowania można utworzyć nagłówek i stopkę dla każdej strony dokumentu. Te parametry są dostępne w obiekcie ChromePdfRenderer. Ten przykład działa w aplikacji konsolowej .NET Core.

2.1.4. Przetwarzanie obrazów w formacie PDF

Umożliwia to użytkownikom generowanie obrazów z plików PDF, a także plików PDF ze zdjęć. Obsługuje wyodrębnianie obrazów, różne rozszerzenia obrazów oraz drukowanie plików PDF.

2.1.5. Dokumenty PDF IO

IronPDF oferuje również 128-bitowe szyfrowanie plików PDF, blokowanie plików PDF za pomocą hasła oraz podpisywanie cyfrowym podpisem.

2.1.6. Edycja plików PDF

Narzędzie IronPDF pozwala dodawać do plików PDF znaki wodne, dodawać i usuwać strony, tła, elementy pierwszego planu i wiele więcej.

2.1.7. Kompatybilność

IronPDF obsługuje prawie wszystkie systemy operacyjne i frameworki kompatybilne z C#, takie jak:

  • Windows
  • .NET Core 2.1, 3.0, 3.1, .NET 6 & 5
  • .NET Standard 2.0 zgodność dla uniwersalnej kompatybilności
  • Azure
  • AWS
  • Docker
  • Linux

3. PDFNet

PDFNet .NET SDK firmy PDFTron zapewnia precyzyjne przetwarzanie, adnotowanie, edycję i tworzenie plików PDF w dowolnym środowisku lub aplikacji w sieci, na urządzeniach mobilnych, komputerach stacjonarnych lub serwerach. Zarządza całym procesem zarządzania dokumentami i informacjami w ramach Twojej infrastruktury i eliminuje konieczność korzystania z serwerów stron trzecich. Platforma internetowa PDFTron zawiera wersję JS z obsługiwanymi platformami oraz klucz licencyjny do wersji demonstracyjnej wszystkich zestawów SDK do obsługi plików PDF.

Jedną z najważniejszych zalet PDFNet jest to, że jest to rozwiązanie prawdziwie wielopłatformowe, pozwalające naszym użytkownikom w prosty sposób dodać obsługę plików PDF i odpowiednie funkcje biznesowe do swoich procesów i aplikacji w wielu różnych środowiskach mobilnych i stacjonarnych, a wszystko to przy użyciu praktycznie tego samego interfejsu.

3.1. Funkcje PDFNet SDK

3.1.1. Kompatybilność

Pakiet PDFNet SDK jest kompatybilny z wieloma platformami i frameworkami. Aby zapewnić spójność platformy, interfejs API JavaScript jest wykorzystywany w taki sam sposób jak interfejs API PDFNet. Dostępne są również wersje SDK dla Node.js i Electron. Ten pakiet wymaga niezarządzanych plików binarnych dodatków.

3.1.2. Edycja i przeglądanie

Zapewnia użytkownikom korzystającym z platform internetowych, mobilnych i stacjonarnych bezpieczne, skalowalne i wysokiej jakości możliwości czytania i edycji plików PDF.

3.1.3. Podpisywanie

Stwórz spersonalizowane procedury podpisywania. Dokumenty podpisane cyfrowo mogą być certyfikowane, weryfikowane i pieczętowane.

3.1.4. Prawdziwa redakcja

Należy usunąć z dokumentów dane wrażliwe, takie jak dane osobowe lub informacje dotyczące zdrowia, zachowując jednocześnie możliwość przeszukiwania dokumentu.

3.1.5. Manipulowanie stroną

Strony mogą być dodawane, usuwane lub zmieniane. Dokumenty mogą być łączone, scałane lub dzielone na części. Wyświetlaj kilka dokumentów jednocześnie w tym samym czytniku lub obok siebie.

4. Tworzenie nowego projektu w Visual Studio

W tym artykułe wykorzystamy aplikację konsolową do generowania dokumentów PDF.

Otwórz oprogramowanie Visual Studio i przejdź do menu Plik. Wybierz "nowy projekt", a następnie wybierz aplikację konsolową.

Wpisz nazwę projektu i wybierz ścieżkę w odpowiednim polu tekstowym. Następnie kliknij przycisk utwórz. Wybierz wymagany framework .NET, jak na poniższym zrzucie ekranu:

A Comparison Between IronPDF and PDFNet, Figure 1

Projekt Visual Studio wygeneruje teraz strukturę aplikacji konsolowej. Po zakończeniu, otworzy plik Program.cs, w którym możesz pisać i wykonywać kod źródłowy.

A Comparison Between IronPDF and PDFNet, Figure 2

Teraz możemy dodać bibliotekę i przetestować program.

5. Instalacja biblioteki IronPDF

Biblioteka IronPDF może być pobrana i zainstalowana na cztery różne sposoby. Są to:

5.1 Korzystanie z Menedżera Pakietów NuGet w Visual Studio

Oprogramowanie Visual Studio udostępnia opcję NuGet Package Manager, która pozwala zainstalować pakiet bezpośrednio w rozwiązaniu. Poniższy zrzut ekranu pokazuje, jak otworzyć menedżera pakietów NuGet.

A Comparison Between IronPDF and PDFNet, Figure 3

Po otwarciu interfejsu graficznego menedżera pakietów kliknij kartę Przeglądaj i wyszukaj "IronPDF:".

A Comparison Between IronPDF and PDFNet, Figure 4

Na powyższym obrazie możemy zobaczyć listę powiązanych pakietów z wyszukiwania. Wybierz opcję IronPDF i zainstaluj pakiet w naszym rozwiązaniu.

5.2 Korzystanie z wiersza poleceń Visual Studio

  • W menu Visual Studio przejdź do Narzędzia > Menedżer pakietów NuGet > Konsola menedżera pakietów
A Comparison Between IronPDF and PDFNet, Figure 5

  • Wpisz następującą linię w zakładce konsoli menedżera pakietów:
Install-Package IronPdf

Pakiet IronPDF zostanie teraz zainstalowany w projekcie.

A Comparison Between IronPDF and PDFNet, Figure 6

5.3 Bezpośrednie pobranie ze strony NuGet

Trzecim sposobem jest pobranie pakietu NuGet bezpośrednio z galerii NuGet IronPDF Package.

  • Wybierz opcję pakietu do pobrania z menu po prawej stronie.
  • Kliknij dwukrotnie pobrany pakiet; zostanie zainstalowany automatycznie.
  • Następnie przeładuj rozwiązanie i zacznij z niego korzystać w projekcie.

5.4 Bezpośrednie pobranie z strony IronPDF

Pobierz najnowszy pakiet bezpośrednio ze strony pobierania IronPDF. Po pobraniu, postępuj zgodnie z poniższymi krokami, aby dodać pakiet do projektu.

  • Kliknij prawym przyciskiem myszy projekt w oknie rozwiązania.
  • Następnie wybierz opcję "Odwołania" i przejdź do lokalizacji pobranego odwołania.
  • Następnie kliknij OK, aby dodać odwołanie.

6. Zainstaluj pakiet PDFNet SDK

Pakiet PDFNet SDK można pobrać i zainstalować na cztery różne sposoby.

  • Korzystanie z menedżera pakietów NuGet w Visual Studio.
  • Korzystanie z wiersza poleceń programu Visual Studio.
  • Bezpośrednie pobranie z pakietu PDFNet w galerii NuGet.
  • Korzystanie z biblioteki PDFNetLoader.dll

6.1. Używając Menedżera Pakietów NuGet Visual Studio

Jak wyjaśniono powyżej, przejdź do narzędzi w Visual Studio i otwórz menedżera pakietów NuGet. Pojawi się lista — kliknij opcję zarządzania pakietem NuGet, aby uzyskać rozwiązania.

A Comparison Between IronPDF and PDFNet, Figure 7

Pojawi się okno z paskiem wyszukiwania. Wyszukaj PDFNet i zainstaluj w projekcie.

6.2. Używanie linii poleceń Visual Studio

  • W menu Visual Studio przejdź do Narzędzia > Menedżer pakietów NuGet > Konsola menedżera pakietów
  • Wpisz następującą linię w zakładce konsoli menedżera pakietów:
Install-Package PDFNet -Version 9.2.0
A Comparison Between IronPDF and PDFNet, Figure 8

6.3. Bezpośrednie pobranie ze strony NuGet

Trzeci sposób to pobranie pakietu NuGet bezpośrednio z Galerii Pakietów PDFNet na NuGet.

  • Wybierz opcję pobierania pakietu z menu po prawej stronie.
  • Kliknij dwukrotnie pobrany pakiet, aby rozpocząć proces instalacji.

6.4. Korzystanie z PDFNetLoader.dll

Możesz również zainstalować API PDFNet przy użyciu pliku PDFNetLoader.dll. Pobierz go z GitHub Releases dla pliku PDFNetLoader.dll.

Pobierz pakiet, umieść go w pliku bin projektu i uruchom. W swoim projekcie Visual Studio dodaj PDFNetLoader.dll jako referencję.

Renderowanie Bootstrap i CSS Framework

Nowoczesne aplikacje webowe polegają w dużej mierze na frameworkach Bootstrap i CSS dla spójnego, responsywnego designu. Podczas generowania PDF-ów z treści webowych, zdolność do dokładnego renderowania tych frameworków bez modyfikacji jest kluczowa do utrzymania spójności designu i zmniejszenia wysiłku developerskiego.

IronPDF: Kompleksowa obsługa frameworku Bootstrap

  • Bootstrap 5: Pełny system układu flexbox, siatka CSS, klasy użytkowe i wszystkie biblioteki komponentów
  • Bootstrap 4: Kompleksowe komponenty kart, nawigacja, narzędzia flex i responsywny design
  • Tailwind CSS: Wszystkie klasy użytkowe renderują się z dokładnością przeglądarki
  • Foundation: Kompletny system siatki i wsparcie dla komponentów
  • Nowoczesny CSS3: Flexbox, CSS Grid, zmienne zwyczajowe, animacje, przejścia i transformacje

Weryfikacja w świecie rzeczywistym: IronPDF renderuje stronę główną Bootstrap i wszystkie oficjalne przykłady z idealną wiernością w pikselach.

Przykład kodu: Dashboard systemu zarządzania nauką

using IronPdf;

// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";

var renderer = new ChromePdfRenderer();
string bootstrapLMS = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container-fluid py-4'>
        <div class='d-flex justify-content-between align-items-center mb-4'>
            <div>
                <h1 class='display-6 mb-1'>Student Learning Dashboard</h1>
                <p class='text-muted mb-0'>Spring Semester 2025</p>
            </div>
            <span class='badge bg-success fs-5'>92% Overall Progress</span>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-primary'>
                    <div class='card-body'>
                        <div class='text-primary mb-2' style='font-size: 2rem;'>📚</div>
                        <h3 class='mb-1'>6/8</h3>
                        <p class='text-muted mb-0'>Courses Completed</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-success'>
                    <div class='card-body'>
                        <div class='text-success mb-2' style='font-size: 2rem;'>🎯</div>
                        <h3 class='mb-1'>24/28</h3>
                        <p class='text-muted mb-0'>Assignments Submitted</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-warning'>
                    <div class='card-body'>
                        <div class='text-warning mb-2' style='font-size: 2rem;'>⏱</div>
                        <h3 class='mb-1'>48hrs</h3>
                        <p class='text-muted mb-0'>Study Time This Week</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-info'>
                    <div class='card-body'>
                        <div class='text-info mb-2' style='font-size: 2rem;'>⭐</div>
                        <h3 class='mb-1'>A- Average</h3>
                        <p class='text-muted mb-0'>Current GPA: 3.7</p>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-8'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-primary text-white'>
                        <h5 class='mb-0'>Current Courses</h5>
                    </div>
                    <div class='card-body p-0'>
                        <div class='list-group list-group-flush'>
                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Advanced Web Development</h6>
                                        <small class='text-muted'>Prof. Johnson | Mondays & Wednesdays, 2:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 95%'></div>
                                </div>
                                <small class='text-muted'>95% Complete | Final Project Due: May 15</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Database Systems</h6>
                                        <small class='text-muted'>Prof. Chen | Tuesdays & Thursdays, 10:00 AM</small>
                                    </div>
                                    <span class='badge bg-primary'>Grade: A-</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-primary' style='width: 88%'></div>
                                </div>
                                <small class='text-muted'>88% Complete | Midterm: April 28</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Artificial Intelligence Fundamentals</h6>
                                        <small class='text-muted'>Prof. Martinez | Fridays, 1:00 PM</small>
                                    </div>
                                    <span class='badge bg-warning text-dark'>Grade: B+</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-warning' style='width: 75%'></div>
                                </div>
                                <small class='text-muted'>75% Complete | Research Paper Due: May 5</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Computer Networks</h6>
                                        <small class='text-muted'>Prof. Davis | Mondays & Wednesdays, 4:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 92%'></div>
                                </div>
                                <small class='text-muted'>92% Complete | Lab Exam: April 30</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card shadow-sm mb-3'>
                    <div class='card-header bg-warning text-dark'>
                        <h5 class='mb-0'>Upcoming Deadlines</h5>
                    </div>
                    <div class='card-body p-0'>
                        <ul class='list-group list-group-flush'>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-danger me-2'>Today</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Assignment 4</strong></small>
                                        <br><small class='text-muted'>Neural Networks Lab</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-warning text-dark me-2'>Apr 28</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Database Midterm</strong></small>
                                        <br><small class='text-muted'>Chapters 1-8</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-info me-2'>Apr 30</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Networks Lab Exam</strong></small>
                                        <br><small class='text-muted'>Practical Assessment</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-primary me-2'>May 5</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Research Paper</strong></small>
                                        <br><small class='text-muted'>15-20 pages</small>
                                    </div>
                                </div>
                            </li>
                        </ul>
                    </div>
                </div>

                <div class='card shadow-sm'>
                    <div class='card-header bg-info text-white'>
                        <h5 class='mb-0'>Study Resources</h5>
                    </div>
                    <div class='card-body'>
                        <div class='d-grid gap-2'>
                            <button class='btn btn-outline-primary btn-sm'>📖 Course Materials</button>
                            <button class='btn btn-outline-primary btn-sm'>💬 Discussion Forums</button>
                            <button class='btn btn-outline-primary btn-sm'>🎥 Recorded Lectures</button>
                            <button class='btn btn-outline-primary btn-sm'>📝 Practice Quizzes</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapLMS);
pdf.SaveAs("lms-dashboard.pdf");
using IronPdf;

// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";

var renderer = new ChromePdfRenderer();
string bootstrapLMS = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container-fluid py-4'>
        <div class='d-flex justify-content-between align-items-center mb-4'>
            <div>
                <h1 class='display-6 mb-1'>Student Learning Dashboard</h1>
                <p class='text-muted mb-0'>Spring Semester 2025</p>
            </div>
            <span class='badge bg-success fs-5'>92% Overall Progress</span>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-primary'>
                    <div class='card-body'>
                        <div class='text-primary mb-2' style='font-size: 2rem;'>📚</div>
                        <h3 class='mb-1'>6/8</h3>
                        <p class='text-muted mb-0'>Courses Completed</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-success'>
                    <div class='card-body'>
                        <div class='text-success mb-2' style='font-size: 2rem;'>🎯</div>
                        <h3 class='mb-1'>24/28</h3>
                        <p class='text-muted mb-0'>Assignments Submitted</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-warning'>
                    <div class='card-body'>
                        <div class='text-warning mb-2' style='font-size: 2rem;'>⏱</div>
                        <h3 class='mb-1'>48hrs</h3>
                        <p class='text-muted mb-0'>Study Time This Week</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-info'>
                    <div class='card-body'>
                        <div class='text-info mb-2' style='font-size: 2rem;'>⭐</div>
                        <h3 class='mb-1'>A- Average</h3>
                        <p class='text-muted mb-0'>Current GPA: 3.7</p>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-8'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-primary text-white'>
                        <h5 class='mb-0'>Current Courses</h5>
                    </div>
                    <div class='card-body p-0'>
                        <div class='list-group list-group-flush'>
                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Advanced Web Development</h6>
                                        <small class='text-muted'>Prof. Johnson | Mondays & Wednesdays, 2:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 95%'></div>
                                </div>
                                <small class='text-muted'>95% Complete | Final Project Due: May 15</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Database Systems</h6>
                                        <small class='text-muted'>Prof. Chen | Tuesdays & Thursdays, 10:00 AM</small>
                                    </div>
                                    <span class='badge bg-primary'>Grade: A-</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-primary' style='width: 88%'></div>
                                </div>
                                <small class='text-muted'>88% Complete | Midterm: April 28</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Artificial Intelligence Fundamentals</h6>
                                        <small class='text-muted'>Prof. Martinez | Fridays, 1:00 PM</small>
                                    </div>
                                    <span class='badge bg-warning text-dark'>Grade: B+</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-warning' style='width: 75%'></div>
                                </div>
                                <small class='text-muted'>75% Complete | Research Paper Due: May 5</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Computer Networks</h6>
                                        <small class='text-muted'>Prof. Davis | Mondays & Wednesdays, 4:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 92%'></div>
                                </div>
                                <small class='text-muted'>92% Complete | Lab Exam: April 30</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card shadow-sm mb-3'>
                    <div class='card-header bg-warning text-dark'>
                        <h5 class='mb-0'>Upcoming Deadlines</h5>
                    </div>
                    <div class='card-body p-0'>
                        <ul class='list-group list-group-flush'>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-danger me-2'>Today</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Assignment 4</strong></small>
                                        <br><small class='text-muted'>Neural Networks Lab</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-warning text-dark me-2'>Apr 28</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Database Midterm</strong></small>
                                        <br><small class='text-muted'>Chapters 1-8</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-info me-2'>Apr 30</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Networks Lab Exam</strong></small>
                                        <br><small class='text-muted'>Practical Assessment</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-primary me-2'>May 5</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Research Paper</strong></small>
                                        <br><small class='text-muted'>15-20 pages</small>
                                    </div>
                                </div>
                            </li>
                        </ul>
                    </div>
                </div>

                <div class='card shadow-sm'>
                    <div class='card-header bg-info text-white'>
                        <h5 class='mb-0'>Study Resources</h5>
                    </div>
                    <div class='card-body'>
                        <div class='d-grid gap-2'>
                            <button class='btn btn-outline-primary btn-sm'>📖 Course Materials</button>
                            <button class='btn btn-outline-primary btn-sm'>💬 Discussion Forums</button>
                            <button class='btn btn-outline-primary btn-sm'>🎥 Recorded Lectures</button>
                            <button class='btn btn-outline-primary btn-sm'>📝 Practice Quizzes</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapLMS);
pdf.SaveAs("lms-dashboard.pdf");
Imports IronPdf

' Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here"

Dim renderer As New ChromePdfRenderer()
Dim bootstrapLMS As String = "
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container-fluid py-4'>
        <div class='d-flex justify-content-between align-items-center mb-4'>
            <div>
                <h1 class='display-6 mb-1'>Student Learning Dashboard</h1>
                <p class='text-muted mb-0'>Spring Semester 2025</p>
            </div>
            <span class='badge bg-success fs-5'>92% Overall Progress</span>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-primary'>
                    <div class='card-body'>
                        <div class='text-primary mb-2' style='font-size: 2rem;'>📚</div>
                        <h3 class='mb-1'>6/8</h3>
                        <p class='text-muted mb-0'>Courses Completed</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-success'>
                    <div class='card-body'>
                        <div class='text-success mb-2' style='font-size: 2rem;'>🎯</div>
                        <h3 class='mb-1'>24/28</h3>
                        <p class='text-muted mb-0'>Assignments Submitted</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-warning'>
                    <div class='card-body'>
                        <div class='text-warning mb-2' style='font-size: 2rem;'>⏱</div>
                        <h3 class='mb-1'>48hrs</h3>
                        <p class='text-muted mb-0'>Study Time This Week</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-info'>
                    <div class='card-body'>
                        <div class='text-info mb-2' style='font-size: 2rem;'>⭐</div>
                        <h3 class='mb-1'>A- Average</h3>
                        <p class='text-muted mb-0'>Current GPA: 3.7</p>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-8'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-primary text-white'>
                        <h5 class='mb-0'>Current Courses</h5>
                    </div>
                    <div class='card-body p-0'>
                        <div class='list-group list-group-flush'>
                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Advanced Web Development</h6>
                                        <small class='text-muted'>Prof. Johnson | Mondays & Wednesdays, 2:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 95%'></div>
                                </div>
                                <small class='text-muted'>95% Complete | Final Project Due: May 15</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Database Systems</h6>
                                        <small class='text-muted'>Prof. Chen | Tuesdays & Thursdays, 10:00 AM</small>
                                    </div>
                                    <span class='badge bg-primary'>Grade: A-</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-primary' style='width: 88%'></div>
                                </div>
                                <small class='text-muted'>88% Complete | Midterm: April 28</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Artificial Intelligence Fundamentals</h6>
                                        <small class='text-muted'>Prof. Martinez | Fridays, 1:00 PM</small>
                                    </div>
                                    <span class='badge bg-warning text-dark'>Grade: B+</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-warning' style='width: 75%'></div>
                                </div>
                                <small class='text-muted'>75% Complete | Research Paper Due: May 5</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Computer Networks</h6>
                                        <small class='text-muted'>Prof. Davis | Mondays & Wednesdays, 4:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 92%'></div>
                                </div>
                                <small class='text-muted'>92% Complete | Lab Exam: April 30</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card shadow-sm mb-3'>
                    <div class='card-header bg-warning text-dark'>
                        <h5 class='mb-0'>Upcoming Deadlines</h5>
                    </div>
                    <div class='card-body p-0'>
                        <ul class='list-group list-group-flush'>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-danger me-2'>Today</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Assignment 4</strong></small>
                                        <br><small class='text-muted'>Neural Networks Lab</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-warning text-dark me-2'>Apr 28</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Database Midterm</strong></small>
                                        <br><small class='text-muted'>Chapters 1-8</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-info me-2'>Apr 30</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Networks Lab Exam</strong></small>
                                        <br><small class='text-muted'>Practical Assessment</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-primary me-2'>May 5</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Research Paper</strong></small>
                                        <br><small class='text-muted'>15-20 pages</small>
                                    </div>
                                </div>
                            </li>
                        </ul>
                    </div>
                </div>

                <div class='card shadow-sm'>
                    <div class='card-header bg-info text-white'>
                        <h5 class='mb-0'>Study Resources</h5>
                    </div>
                    <div class='card-body'>
                        <div class='d-grid gap-2'>
                            <button class='btn btn-outline-primary btn-sm'>📖 Course Materials</button>
                            <button class='btn btn-outline-primary btn-sm'>💬 Discussion Forums</button>
                            <button class='btn btn-outline-primary btn-sm'>🎥 Recorded Lectures</button>
                            <button class='btn btn-outline-primary btn-sm'>📝 Practice Quizzes</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>"

Dim pdf = renderer.RenderHtmlAsPdf(bootstrapLMS)
pdf.SaveAs("lms-dashboard.pdf")
$vbLabelText   $csharpLabel

Wynik: Profesjonalny system zarządzania nauką PDF z systemem siatkowym Bootstrap 5, komponentami kart, paskami postępu, odznakami, układami flexbox i grupami list—all rendering with pefect spacing, typography and color accuracy.

PDFNet (Apryse): Częściowe wsparcie dla nowoczesnych CSS

PDFNet używa niestandardowego silnika renderowania HTML z selektywnym wsparciem dla CSS3:

  • Ograniczona implementacja flexbox: Układy oparte na flexach w Bootstrap 4/5 mogą renderować się niespójnie
  • Częściowe wsparcie siatki CSS: Projektowane na siatce często wymagają alternatyw
  • Ograniczenia JavaScript: Minimalne wykonanie w porównaniu do pełnych środowisk przeglądarkowych
  • Konieczne testowanie frameworku: Komponenty Bootstrap wymagają weryfikacji przed uruchomieniem

Wpływ na rozwój: Zespoły muszą testować każdy komponent Bootstrap indywidualnie i często tworzyć uproszczone układy lub alternatywne CSS dla PDFNet, dodając złożoność i zmniejszając spójność designu.

Dla kompleksowych wskazówek dotyczących frameworku Bootstrap i możliwości renderowania nowoczesnych CSS, zobacz Przewodnik po Bootstrap & Flexbox CSS.

7. Drukowanie pliku PDF (Przykłady kodu)

Drukowanie pliku PDF jest niezbędną funkcją w nowoczesnych aplikacjach zajmujących się PDF-ami. Tutaj omówimy, jak drukować pliki PDF za pomocą obu narzędzi.

7.1. Drukowanie pliku PDF za pomocą IronPDF

IronPDF drukuje PDF przez wysłanie go do domyślnej drukarki w komputerze. Otworzy się interfejs drukowania Windows—wystarczy kliknąć drukuj, aby to zrobić.

using IronPdf;

class PrintPDF
{
    static void Main(string[] args)
    {
        // Create a new PDF and print it
        var Renderer = new IronPdf.ChromePdfRenderer();
        PdfDocument Pdf = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");

        // Send the PDF to the default printer to print
        Pdf.Print(300, false);
    }
}
using IronPdf;

class PrintPDF
{
    static void Main(string[] args)
    {
        // Create a new PDF and print it
        var Renderer = new IronPdf.ChromePdfRenderer();
        PdfDocument Pdf = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");

        // Send the PDF to the default printer to print
        Pdf.Print(300, false);
    }
}
Imports IronPdf

Friend Class PrintPDF
	Shared Sub Main(ByVal args() As String)
		' Create a new PDF and print it
		Dim Renderer = New IronPdf.ChromePdfRenderer()
		Dim Pdf As PdfDocument = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")

		' Send the PDF to the default printer to print
		Pdf.Print(300, False)
	End Sub
End Class
$vbLabelText   $csharpLabel

7.2. Drukowanie pliku PDF za pomocą PDFNet

PDFTron's PDFNet SDK również udostępnia funkcję drukowania. Poniżej znajduje się fragment kodu źródłowego do drukowania pliku PDF w PDFNet.

using System;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;

namespace PDFPrintTestCS
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Opening the input file...");
            using (PDFDoc pdfdoc = new PDFDoc("tiger.pdf"))
            {
                pdfdoc.InitSecurityHandler();
                Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...");
                PrinterMode printerMode = new PrinterMode();
                printerMode.SetAutoCenter(true);
                printerMode.SetAutoRotate(true);
                printerMode.SetCollation(true);
                printerMode.SetCopyCount(1);
                printerMode.SetDPI(300); // Set print quality to 300 DPI
                printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto);
                printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom);
                printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait);
                printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations);
                printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale);
                printerMode.SetOutputPageBorder(false);
                printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium);
                printerMode.SetPaperSize(new Rect(0, 0, 612, 792));
                PageSet pagesToPrint = new PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all);
                Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, null);
            }
        }
    }
}
using System;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;

namespace PDFPrintTestCS
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Opening the input file...");
            using (PDFDoc pdfdoc = new PDFDoc("tiger.pdf"))
            {
                pdfdoc.InitSecurityHandler();
                Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...");
                PrinterMode printerMode = new PrinterMode();
                printerMode.SetAutoCenter(true);
                printerMode.SetAutoRotate(true);
                printerMode.SetCollation(true);
                printerMode.SetCopyCount(1);
                printerMode.SetDPI(300); // Set print quality to 300 DPI
                printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto);
                printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom);
                printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait);
                printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations);
                printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale);
                printerMode.SetOutputPageBorder(false);
                printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium);
                printerMode.SetPaperSize(new Rect(0, 0, 612, 792));
                PageSet pagesToPrint = new PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all);
                Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, null);
            }
        }
    }
}
Imports System
Imports pdftron
Imports pdftron.PDF
Imports pdftron.Common
Imports pdftron.Filters

Namespace PDFPrintTestCS
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Console.WriteLine("Opening the input file...")
			Using pdfdoc As New PDFDoc("tiger.pdf")
				pdfdoc.InitSecurityHandler()
				Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...")
				Dim printerMode As New PrinterMode()
				printerMode.SetAutoCenter(True)
				printerMode.SetAutoRotate(True)
				printerMode.SetCollation(True)
				printerMode.SetCopyCount(1)
				printerMode.SetDPI(300) ' Set print quality to 300 DPI
				printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto)
				printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom)
				printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait)
				printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations)
				printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale)
				printerMode.SetOutputPageBorder(False)
				printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium)
				printerMode.SetPaperSize(New Rect(0, 0, 612, 792))
				Dim pagesToPrint As New PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all)
				Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, Nothing)
			End Using
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

8. Tworzenie PDF-ów z HTML

Obie biblioteki posiadają funkcje konwersji HTML na PDF, ale metody są nieco inne.

8.1. Tworzenie PDF-ów z HTML za pomocą IronPDF

IronPDF nie wymaga użycia plików JSON ani mechanizmów szyfrowania. IronPDF obsługuje szeroki zakres metod. Na przykład:

Pliki HTML na PDF

using IronPdf;

class HtmlToPdf
{
    static void Main(string[] args)
    {
        var Renderer = new IronPdf.ChromePdfRenderer();
        Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
    }
}
using IronPdf;

class HtmlToPdf
{
    static void Main(string[] args)
    {
        var Renderer = new IronPdf.ChromePdfRenderer();
        Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
    }
}
Imports IronPdf

Friend Class HtmlToPdf
	Shared Sub Main(ByVal args() As String)
		Dim Renderer = New IronPdf.ChromePdfRenderer()
		Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

URL do pliku PDF

using IronPdf;

class UrlToPdf
{
    static void Main(string[] args)
    {
        IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
        var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
        Pdf.SaveAs("url.pdf");
    }
}
using IronPdf;

class UrlToPdf
{
    static void Main(string[] args)
    {
        IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
        var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
        Pdf.SaveAs("url.pdf");
    }
}
Imports IronPdf

Friend Class UrlToPdf
	Shared Sub Main(ByVal args() As String)
		Dim Renderer As New IronPdf.ChromePdfRenderer()
		Dim Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/")
		Pdf.SaveAs("url.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel
A Comparison Between IronPDF and PDFNet, Figure 9

8.2. Tworzenie PDF-ów z HTML za pomocą PDFNet

PDFNet również udostępnia funkcje konwersji HTML na PDF, używając zarówno konwersji stron, jak i konwersji URL. Ze względu na długi kod, damy tutaj tylko jeden przykład.

class HTML2PDFSample
{
    private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
    static HTML2PDFSample() {}

    static void Main(string[] args)
    {
        string output_path = "../../../../TestFiles/Output/html2pdf_example";
        string host = "https://www.pdftron.com";
        HTML2PDF.SetModulePath("../../../../../Lib");

        if (!HTML2PDF.IsModuleAvailable())
        {
            Console.WriteLine();
            Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
            return;
        }

        try
        {
            using (PDFDoc doc = new PDFDoc())
            {
                if (HTML2PDF.Convert(doc, host + "/"))
                    doc.Save(output_path + "_01.pdf", SDFDoc.SaveOptions.e_linearized);
                else
                    Console.WriteLine("Conversion failed.");
            }
        }
        catch (PDFNetException e)
        {
            Console.WriteLine(e.Message);
        }
    }
}
class HTML2PDFSample
{
    private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
    static HTML2PDFSample() {}

    static void Main(string[] args)
    {
        string output_path = "../../../../TestFiles/Output/html2pdf_example";
        string host = "https://www.pdftron.com";
        HTML2PDF.SetModulePath("../../../../../Lib");

        if (!HTML2PDF.IsModuleAvailable())
        {
            Console.WriteLine();
            Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
            return;
        }

        try
        {
            using (PDFDoc doc = new PDFDoc())
            {
                if (HTML2PDF.Convert(doc, host + "/"))
                    doc.Save(output_path + "_01.pdf", SDFDoc.SaveOptions.e_linearized);
                else
                    Console.WriteLine("Conversion failed.");
            }
        }
        catch (PDFNetException e)
        {
            Console.WriteLine(e.Message);
        }
    }
}
Friend Class HTML2PDFSample
	Private Shared pdfNetLoader As pdftron.PDFNetLoader = pdftron.PDFNetLoader.Instance()
	Shared Sub New()
	End Sub

	Shared Sub Main(ByVal args() As String)
		Dim output_path As String = "../../../../TestFiles/Output/html2pdf_example"
		Dim host As String = "https://www.pdftron.com"
		HTML2PDF.SetModulePath("../../../../../Lib")

		If Not HTML2PDF.IsModuleAvailable() Then
			Console.WriteLine()
			Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.")
			Return
		End If

		Try
			Using doc As New PDFDoc()
				If HTML2PDF.Convert(doc, host & "/") Then
					doc.Save(output_path & "_01.pdf", SDFDoc.SaveOptions.e_linearized)
				Else
					Console.WriteLine("Conversion failed.")
				End If
			End Using
		Catch e As PDFNetException
			Console.WriteLine(e.Message)
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel
A Comparison Between IronPDF and PDFNet, Figure 10

9. Licencjonowanie

IronPDF to biblioteka, która oferuje darmową licencję developerską. IronPDF oferuje również specjalną strukturę cenową: pakiet light rozpoczyna się od $999 bez ukrytych kosztów. Również możliwe jest redystrybucja produktów SaaS i OEM. Wszystkie licencje obejmują 30-dniową gwarancję zwrotu pieniędzy, rok wsparcia i aktualizacji oprogramowania, ważność na etapy rozwijania/testowania/wdrażania/produkcji oraz licencję wieczystą (jednorazowy zakup). Licencje IronPDF zapewniają maksymalną wydajność dla potrzeb użytkowników. Przejdź na tę Stronę o Licencjach IronPDF aby zobaczyć całą strukturę cenową i licencje IronPDF.

A Comparison Between IronPDF and PDFNet, Figure 11

PDFTron PDFNet SDK posiada kilka opcji licencjonowania dostosowanych do Twoich biznesowych potrzeb. Trzy rodzaje licencji z redystrybucją enterprise i OEM. Licencje Enterprise są tylko do użytku organizacyjnego i nie mogą być używane w dystrybucji aplikacji. Dodatkowe API wymagające dostępu do systemu plików są również zawarte w licencjach. Wszystkie licencje mają klucz licencyjny. Trzy rodzaje licencji to:

  • Viewer
  • Viewer & Annotation
  • Core SDK

Więcej informacji o ich strukturze licencji można znaleźć na tej Stronie Informacyjnej o Licencjach PDFTron.

10. Wnioski

IronPDF oferuje wiele funkcji i zdolności do przetwarzania plików PDF i konwersji ich do różnych formatów. Konwersje z HTML do PDF są tworzone w formacie wektorowym, który jest odpowiedni do wysokiej jakości komercyjnego druku. W rezultacie otrzymasz klarowny, wysokiej jakości PDF. Informacje o licencjach i cenach można znaleźć na stronie internetowej.

Podobnie jak IronPDF, PDFNet wspomaga przejście, anotację, podpis, wypełnienie, konwersję i edycję plików PDF. Obsługuje wiele platform, w tym Windows, iOS, Android, WEB i Linux. Do użytku produkcyjnego, SDK PDFNet potrzebuje klucza produktu.

Licencje IronPDF są centryczne na deweloperze, co oznacza, że musisz uzyskać licencję w oparciu na ilość deweloperów, którzy będą używać produktu. Z drugiej strony, licencje PDFNet nie działają w ten sam sposób, działając zamiast tego na licencji opartej na funkcjach. Oznacza to, że musisz uzyskać licencję, która wspiera wymagane funkcje. Licencje IronPDF zawierają wszystkie funkcje out of the box. W przypadku PDFNet, niektóre funkcje, takie jak konwersja dokumentów, muszą być zakupione jako dodatki.

Biblioteka IronPDF oferuje funkcje w uporządkowany sposób, co sprawia, że łatwo jest pisać kod, który wykonuje duże zadania za pomocą kilku linijek. Iron Software obecnie oferuje pakiet pięciu narzędzi za cenę zaledwie dwóch. Narzędzia zawarte w Iron Suite to:

Odwiedź tę Stronę Informacyjną Iron Suite, aby Zbadać Iron Suite.

Zwróć uwagęPDFTron jest zarejestrowanym znakiem towarowym odpowiedniego właściciela. Ta strona nie jest powiązana z, popierana ani sponsorowana przez PDFTron. 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

Jakie są kluczowe biblioteki PDF porównywane w artykułe?

Artykuł porównuje IronPDF, opracowany przez Iron Software, oraz PDFNet firmy PDFTron, skupiając się na ich możliwościach dla programistów C# w ramach .NET Framework.

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. Dodatkowo możesz konwertować pliki HTML i adresy URL na pliki PDF przy użyciu solidnego silnika Chromium biblioteki IronPDF.

Jakie systemy operacyjne są obsługiwane przez IronPDF?

IronPDF obsługuje wiele systemów operacyjnych, w tym Windows, Azure i Docker, co pozwala na płynną integrację z różnorodnymi środowiskami programistycznymi.

W jaki sposób IronPDF radzi sobie z ekstrakcją danych z plików PDF?

IronPDF umożliwia wydajne wyodrębnianie danych z plików PDF, pozwalając programistom na łatwe pobieranie tekstu i obrazów z dokumentów PDF w celu dalszego przetwarzania.

Jakie są opcje instalacji IronPDF?

IronPDF można zainstalować za pomocą menedżera pakietów NuGet w Visual Studio, wiersza poleceń Visual Studio lub bezpośrednio z galerii NuGet, co zapewnia programistom łatwą konfigurację.

Jakie są różnice w licencjonowaniu między IronPDF a PDFNet?

IronPDF oferuje licencje przeznaczone dla programistów, które obejmują wszystkie funkcje, natomiast licencje PDFNet są oparte na funkcjach i mogą wymagać dodatkowych zakupów w celu uzyskania określonych funkcji.

Czy IronPDF nadaje się do dużych zadań związanych z plikami PDF?

Tak, IronPDF jest chwalony za łatwość obsługi i minimalne wymagania dotyczące kodu, dzięki czemu nadaje się do wydajnego wykonywania dużych zadań związanych z plikami PDF.

Jakie dodatkowe narzędzia są zawarte w Suite Iron Software?

Pakiet Iron Software obejmuje IronBarcode, IronXL, IronOCR, IronPDF i IronWebscraper, dostępne w pakiecie, co zwiększa jego atrakcyjność dla programistów.

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

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie