Jak przeprowadzić migrację z BitMiracle Docotic PDF do IronPDF w języku C#
BitMiracle Docotic PDF to ceniona biblioteka .NET do obsługi plików PDF, znana ze swojej architektury opartej w 100% na kodzie zarządzanym oraz rozbudowanych możliwości programowej manipulacji plikami PDF. Jednak jego modułowa struktura dodatków — wymagająca oddzielnych pakietów do konwersji HTML na PDF, funkcji układu i innych funkcji — zwiększa złożoność zarządzania projektami i licencjonowania. Ten kompleksowy przewodnik przedstawia krok po kroku ścieżkę migracji zBitMiracle Docotic PDFdoIronPDF— ujednoliconej biblioteki .NET do obsługi plików PDF z wbudowanym renderowaniem HTML opartym na Chromium oraz wszystkimi funkcjami zawartymi w jednym pakiecie NuGet.
Dlaczego warto przejść zBitMiracle Docotic PDFna IronPDF?
ChociażBitMiracle Docotic PDFoferuje solidne funkcje manipulacji plikami PDF, kilka czynników skłania zespoły programistów do poszukiwania alternatyw o bardziej uproszczonej architekturze.
Porównanie architektury pakietów
BitMiracle Docotic PDF wykorzystuje modułowe podejście oparte na dodatkach, które wymaga wielu pakietów w celu uzyskania pełnej funkcjonalności:
| Aspekt | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| HTML do PDF | Wymaga oddzielnego dodatku (HtmlToPdf) | Wbudowana funkcja podstawowa |
| Struktura pakietu | Podstawowa wersja + wiele dodatków | Pojedynczy pakiet NuGet |
| Model licencyjny | Licencjonowanie poszczególnych dodatków | Wszystkie funkcje w zestawie |
| Złożoność API | Oddzielne przestrzenie nazw dla każdego dodatku | Ujednolicony interfejs API |
| Silnik HTML | Chromium (poprzez dodatek) | Chromium (wbudowane) |
| Wielkość społeczności | Mniejsze | Więcej zasobów |
| Dokumentacja | Informacje techniczne | Obszerne samouczki |
Równowaga funkcji
Obie biblioteki obsługują kompleksową funkcjonalność PDF:
| Funkcja | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| Utwórz plik PDF od podstaw | ✅ | ✅ |
| HTML do PDF | ✅(wymagany dodatek) | ✅(wbudowane) |
| URL do pliku PDF | ✅(wymagany dodatek) | ✅(wbudowane) |
| Manipulacja plikami PDF | ✅ | ✅ |
| Wyodrębnianie tekstu | ✅ | ✅ |
| Scal/Podziel | ✅ | ✅ |
| Podpisy cyfrowe | ✅ | ✅ |
| Szyfrowanie | ✅ | ✅ |
| Wypełnianie formularzy | ✅ | ✅ |
| Zgodność z PDF/A | ✅ | ✅ |
Kluczowe różnice w podejściu
BitMiracle Docotic PDF wykorzystuje rysowanie oparte na płótnie z pozycjonowaniem współrzędnych (canvas.DrawString(x, y, text)), podczas gdyIronPDFwykorzystuje HTML/CSS do tworzenia układu i pozycjonowania. Stanowi Shift paradygmatu, który upraszcza tworzenie treści dla programistów zaznajomionych z technologiami internetowymi.
Przygotowania przed migracją
Wymagania wstępne
Upewnij się, że Twoje środowisko spełnia następujące wymagania:
- .NET Framework 4.6.2+ lub .NET Core 3.1 / .NET 5-9
- Visual Studio 2019+ lub VS Code z rozszerzeniem C#
- Dostęp do menedżera pakietów NuGet
- Klucz licencyjnyIronPDF(bezpłatna wersja próbna dostępna na stronie ironpdf.com)
Audyt wykorzystania plików PDF przez BitMiracle Docotic
Uruchom poniższe polecenia w katalogu rozwiązania, aby zidentyfikować wszystkie odwołania do Docotic.PDF:
# Find all Docotic.Pdf usages in your codebase
grep -r "using BitMiracle.Docotic" --include="*.cs" .
grep -r "PdfDocument\|PdfPage\|PdfCanvas" --include="*.cs" .
# Find NuGet package references
grep -r "Docotic.Pdf" --include="*.csproj" .
# Find all Docotic.Pdf usages in your codebase
grep -r "using BitMiracle.Docotic" --include="*.cs" .
grep -r "PdfDocument\|PdfPage\|PdfCanvas" --include="*.cs" .
# Find NuGet package references
grep -r "Docotic.Pdf" --include="*.csproj" .
Zmiany wymagające dostosowania
| Zmiana | BitMiracle Docotic PDF | IronPDF | Wpływ |
|---|---|---|---|
| Renderowanie HTML | Wymagany jest dodatek HtmlToPdf | Wbudowane | Usuń pakiet dodatków |
| Indeksowanie stron | 0-based (Pages[0]) |
0-based (Pages[0]) |
Nie ma potrzeby wprowadzania zmian |
| Układ współrzędnych | Początek w lewym dolnym rogu | Struktura HTML/CSS | Użyj CSS do pozycjonowania |
| Rysowanie na płótnie | PdfCanvas.DrawText() |
Znaczniki HTML | Zmiana paradygmatu |
| Wyodrębnianie tekstu | page.GetText() |
pdf.ExtractAllText() |
Zmiana nazwy metody |
| Ładowanie dokumentów | new PdfDocument(path) |
PdfDocument.FromFile(path) |
Konstruktor → metoda statyczna |
| Zapisywanie | document.Save(path) |
pdf.SaveAs(path) |
Zmiana nazwy metody |
| Utylizacja | IDisposable wzorzec |
Nie jest wymagane | Prostsze zarządzanie zasobami |
Proces migracji krok po kroku
Krok 1: Zaktualizuj pakiety NuGet
Usuń pakietyBitMiracle Docotic PDFi zainstaluj IronPDF:
# Remove Docotic.Pdf packages
dotnet remove package BitMiracle.Docotic.Pdf
dotnet remove package BitMiracle.Docotic.Pdf.HtmlToPdf
dotnet remove package BitMiracle.Docotic.Pdf.Layout
# Install IronPDF
dotnet add package IronPdf
# Remove Docotic.Pdf packages
dotnet remove package BitMiracle.Docotic.Pdf
dotnet remove package BitMiracle.Docotic.Pdf.HtmlToPdf
dotnet remove package BitMiracle.Docotic.Pdf.Layout
# Install IronPDF
dotnet add package IronPdf
Krok 2: Aktualizacja odniesień do przestrzeni nazw
Zastąp nazwy przestrzeni nazwBitMiracle Docotic PDFnazwami IronPDF:
// Remove these
using BitMiracle.Docotic.Pdf;
using BitMiracle.Docotic.Pdf.Layout;
using BitMiracle.Docotic.Pdf.HtmlToPdf;
// Add this
using IronPdf;
// Remove these
using BitMiracle.Docotic.Pdf;
using BitMiracle.Docotic.Pdf.Layout;
using BitMiracle.Docotic.Pdf.HtmlToPdf;
// Add this
using IronPdf;
Imports IronPdf
Krok 3: Skonfiguruj licencję
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Kompletna dokumentacja API
Operacje na dokumentach
| Zadanie | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| Utwórz pusty dokument | new PdfDocument() |
new PdfDocument() |
| Wczytaj z pliku | new PdfDocument(path) |
PdfDocument.FromFile(path) |
| Wczytaj ze strumienia | PdfDocument.Load(stream) |
PdfDocument.FromStream(stream) |
| Wczytaj z bajtów | PdfDocument.Load(bytes) |
PdfDocument.FromBinaryData(bytes) |
| Zapisz do pliku | document.Save(path) |
pdf.SaveAs(path) |
| Sprawdź liczbę stron | document.PageCount |
pdf.PageCount |
| Zamknij/Usuń | document.Dispose() |
Nie jest wymagane |
Konwersja HTML do PDF
| Zadanie | BitMiracle Docotic PDF(dodatek HtmlToPdf) | IronPDF |
|---|---|---|
| Ciąg znaków HTML do pliku PDF | HtmlConverter.Create(html).ToPdf() |
renderer.RenderHtmlAsPdf(html) |
| Plik HTML do PDF | HtmlConverter.Create(new Uri(filePath)).ToPdf() |
renderer.RenderHtmlFileAsPdf(path) |
| URL do pliku PDF | HtmlConverter.Create(new Uri(url)).ToPdf() |
renderer.RenderUrlAsPdf(url) |
| Ustaw rozmiar strony | options.PageSize = PageSize.A4 |
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 |
| Ustaw marginesy | options.PageMargins = new Margins(20) |
renderer.RenderingOptions.MarginTop = 20 |
Operacje scalania i dzielenia
| Zadanie | BitMiracle Docotic PDF | IronPDF |
|---|---|---|
| Połącz dokumenty | doc1.Append(doc2) |
PdfDocument.Merge(pdf1, pdf2) |
| Podziel dokument | document.CopyPage(index) do nowego dokumentu |
pdf.CopyPages(start, end) |
Przykłady migracji kodu
Konwersja HTML do PDF
Najczęstsza operacja pokazuje, jak bardzoIronPDFułatwia pracę.
Wdrożenie BitMiracle Docotic PDF:
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf = new PdfDocument())
{
string html = "<html><body><h1>Hello World</h1><p>This is HTML do PDF conversion.</p></body></html>";
pdf.CreatePage(html);
pdf.Save("output.pdf");
}
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf = new PdfDocument())
{
string html = "<html><body><h1>Hello World</h1><p>This is HTML do PDF conversion.</p></body></html>";
pdf.CreatePage(html);
pdf.Save("output.pdf");
}
Console.WriteLine("PDF created successfully");
}
}
Imports BitMiracle.Docotic.Pdf
Imports System
Class Program
Shared Sub Main()
Using pdf As New PdfDocument()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is HTML do PDF conversion.</p></body></html>"
pdf.CreatePage(html)
pdf.Save("output.pdf")
End Using
Console.WriteLine("PDF created successfully")
End Sub
End Class
Wdrożenie IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is HTML do PDF conversion.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is HTML do PDF conversion.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is HTML do PDF conversion.</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
IronPDF eliminuje wymóg stosowania instrukcji using i udostępnia dedykowaną klasę ChromePdfRenderer, która wyraźnie wskazuje na możliwość renderowania opartego na silniku Chromium. Aby uzyskać więcej opcji konwersji HTML, zapoznaj się z dokumentacją dotyczącą konwersji HTML do PDF.
Łączenie wielu plików PDF
Wdrożenie BitMiracle Docotic PDF:
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf1 = new PdfDocument("document1.pdf"))
using (var pdf2 = new PdfDocument("document2.pdf"))
{
pdf1.Append(pdf2);
pdf1.Save("merged.pdf");
}
Console.WriteLine("PDFs merged successfully");
}
}
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf1 = new PdfDocument("document1.pdf"))
using (var pdf2 = new PdfDocument("document2.pdf"))
{
pdf1.Append(pdf2);
pdf1.Save("merged.pdf");
}
Console.WriteLine("PDFs merged successfully");
}
}
Imports BitMiracle.Docotic.Pdf
Imports System
Class Program
Shared Sub Main()
Using pdf1 As New PdfDocument("document1.pdf"), pdf2 As New PdfDocument("document2.pdf")
pdf1.Append(pdf2)
pdf1.Save("merged.pdf")
End Using
Console.WriteLine("PDFs merged successfully")
End Sub
End Class
Wdrożenie IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
Dim pdf1 As PdfDocument = PdfDocument.FromFile("document1.pdf")
Dim pdf2 As PdfDocument = PdfDocument.FromFile("document2.pdf")
Dim merged As PdfDocument = PdfDocument.Merge(New List(Of PdfDocument) From {pdf1, pdf2})
merged.SaveAs("merged.pdf")
Console.WriteLine("PDFs merged successfully")
End Sub
End Module
Statyczna metoda Merge bibliotekiIronPDFakceptuje bezpośrednio wiele dokumentów, zapewniając bardziej przejrzysty interfejs API niż iteracyjny wzorzec Append. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą scalania plików PDF.
Wyodrębnianie tekstu
Wdrożenie BitMiracle Docotic PDF:
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf = new PdfDocument("document.pdf"))
{
string allText = "";
foreach (var page in pdf.Pages)
{
allText += page.GetText();
}
Console.WriteLine("Extracted text:");
Console.WriteLine(allText);
}
}
}
// NuGet: Install-Package Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;
class Program
{
static void Main()
{
using (var pdf = new PdfDocument("document.pdf"))
{
string allText = "";
foreach (var page in pdf.Pages)
{
allText += page.GetText();
}
Console.WriteLine("Extracted text:");
Console.WriteLine(allText);
}
}
}
Imports BitMiracle.Docotic.Pdf
Imports System
Module Program
Sub Main()
Using pdf As New PdfDocument("document.pdf")
Dim allText As String = ""
For Each page In pdf.Pages
allText &= page.GetText()
Next
Console.WriteLine("Extracted text:")
Console.WriteLine(allText)
End Using
End Sub
End Module
Wdrożenie IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted text:");
Console.WriteLine(allText);
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted text:");
Console.WriteLine(allText);
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim allText As String = pdf.ExtractAllText()
Console.WriteLine("Extracted text:")
Console.WriteLine(allText)
End Sub
End Class
IronPDF redukuje proces wyodrębniania tekstu z wielowierszowej pętli do pojedynczego wywołania metody. Aby uzyskać więcej opcji ekstrakcji, zapoznaj się z dokumentacją dotyczącą ekstrakcji tekstu.
Ochrona hasłem i szyfrowanie
Wdrożenie IronPDF:
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>")
' Set security
pdf.SecuritySettings.UserPassword = "userPassword"
pdf.SecuritySettings.OwnerPassword = "ownerPassword"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SaveAs("protected.pdf")
Aby uzyskać informacje na temat kompleksowych opcji bezpieczeństwa, zapoznaj się z dokumentacją dotyczącą szyfrowania.
Nagłówki i stopki
Wdrożenie IronPDF:
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:12px;'>
Company Header - Confidential
</div>",
DrawDividerLine = true,
MaxHeight = 30
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:10px;'>
Page {page} of {total-pages}
</div>",
DrawDividerLine = true,
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Document Content</h1>");
pdf.SaveAs("with_headers.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:12px;'>
Company Header - Confidential
</div>",
DrawDividerLine = true,
MaxHeight = 30
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='text-align:center; font-size:10px;'>
Page {page} of {total-pages}
</div>",
DrawDividerLine = true,
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Document Content</h1>");
pdf.SaveAs("with_headers.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='text-align:center; font-size:12px;'>
Company Header - Confidential
</div>",
.DrawDividerLine = True,
.MaxHeight = 30
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='text-align:center; font-size:10px;'>
Page {page} of {total-pages}
</div>",
.DrawDividerLine = True,
.MaxHeight = 25
}
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Document Content</h1>")
pdf.SaveAs("with_headers.pdf")
IronPDF obsługuje tokeny zastępcze, takie jak {page} i {total-pages}, służące do dynamicznego numerowania stron. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą nagłówków i stopek.
Ważne uwagi dotyczące migracji
Przejście z Canvas na HTML Shift
Podejście do rysowania oparte na płótnie wBitMiracle Docotic PDFmusi zostać przekonwertowane na HTML z pozycjonowaniem CSS:
Wzór pliku PDF BitMiracle Docotic:
var canvas = pdfPage.Canvas;
canvas.DrawString(50, 50, "Hello, World!");
var canvas = pdfPage.Canvas;
canvas.DrawString(50, 50, "Hello, World!");
Dim canvas = pdfPage.Canvas
canvas.DrawString(50, 50, "Hello, World!")
Wzór IronPDF:
var html = "<div style='position:absolute; left:50px; top:50px;'>Hello, World!</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
var html = "<div style='position:absolute; left:50px; top:50px;'>Hello, World!</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
Dim html As String = "<div style='position:absolute; left:50px; top:50px;'>Hello, World!</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
Indeksowanie tej samej strony
Obie biblioteki używają indeksowania od 0 (Pages[0] to pierwsza strona) — nie trzeba zmieniać kodu dostępu do stron.
Nie wymaga utylizacji
IronPDF nie wymaga instrukcji using do zarządzania pamięcią, co upraszcza strukturę kodu:
//BitMiracle Docotic PDF- disposal required
using (var pdf = new PdfDocument("input.pdf"))
{
// operations
}
//IronPDF- disposal optional
var pdf = PdfDocument.FromFile("input.pdf");
// operations - no using statement needed
//BitMiracle Docotic PDF- disposal required
using (var pdf = new PdfDocument("input.pdf"))
{
// operations
}
//IronPDF- disposal optional
var pdf = PdfDocument.FromFile("input.pdf");
// operations - no using statement needed
Imports BitMiracle.Docotic.Pdf
' BitMiracle Docotic PDF - disposal required
Using pdf As New PdfDocument("input.pdf")
' operations
End Using
' IronPDF - disposal optional
Dim pdf = PdfDocument.FromFile("input.pdf")
' operations - no using statement needed
Obsługa asynchroniczna
Dodatek HtmlToPdf firmyBitMiracle Docotic PDFwymaga stosowania wzorców asynchronicznych we wszystkich miejscach.IronPDFobsługuje zarówno metody synchroniczne, jak i asynchroniczne:
// Synchronous
var pdf = renderer.RenderHtmlAsPdf(html);
// Asynchronous
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
// Synchronous
var pdf = renderer.RenderHtmlAsPdf(html);
// Asynchronous
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
' Synchronous
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Asynchronous
Dim pdf = Await renderer.RenderHtmlAsPdfAsync(html)
Integracja z ASP.NET Core.NET Core
Wzór IronPDF:
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("generate")]
public IActionResult GeneratePdf()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");
return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
[HttpGet("generate-async")]
public async Task<IActionResult> GeneratePdfAsync()
{
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");
return File(pdf.Stream, "application/pdf", "report.pdf");
}
}
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
[HttpGet("generate")]
public IActionResult GeneratePdf()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>");
return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
[HttpGet("generate-async")]
public async Task<IActionResult> GeneratePdfAsync()
{
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>");
return File(pdf.Stream, "application/pdf", "report.pdf");
}
}
Imports Microsoft.AspNetCore.Mvc
<ApiController>
<Route("[controller]")>
Public Class PdfController
Inherits ControllerBase
<HttpGet("generate")>
Public Function GeneratePdf() As IActionResult
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>")
Return File(pdf.BinaryData, "application/pdf", "report.pdf")
End Function
<HttpGet("generate-async")>
Public Async Function GeneratePdfAsync() As Task(Of IActionResult)
Dim renderer = New ChromePdfRenderer()
Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>")
Return File(pdf.Stream, "application/pdf", "report.pdf")
End Function
End Class
Lista kontrolna po migracji
Po zakończeniu migracji kodu sprawdź, czy:
- Uruchom wszystkie testy jednostkowe, aby sprawdzić, czy generowanie plików PDF działa poprawnie
- Porównaj jakość wydruku PDF (silnik Chromium wIronPDFmoże renderować nieco inaczej — zazwyczaj lepiej)
- Sprawdź dokładność wyodrębniania tekstu
- Testowanie funkcji wypełniania formularzy
- W razie potrzeby sprawdź poprawność podpisów cyfrowych
- Testy wydajności operacji wsadowych
- Przetestuj we wszystkich środowiskach docelowych
- Aktualizacja potoków CI/CD
- Usuń pliki licencji Docotic.PDF
Zabezpieczenie infrastruktury PDF na przyszłość
W obliczu zbliżającej się premiery .NET 10 i wprowadzenia nowych funkcji językowych w C# 14, wybór biblioteki PDF o ujednoliconej architekturze upraszcza zarządzanie zależnościami i zapewnia spójną dostępność funkcji. PodejścieIronPDFoparte na jednym pakiecie oznacza, że nie będziesz musiał śledzić zgodności wielu wersji dodatków w miarę rozszerzania się projektów w latach 2025 i 2026.
Dodatkowe zasoby
- Dokumentacja IronPDF
- Samouczki dotyczące konwersji HTML do PDF
- Dokumentacja API
- Pakiet NuGet
- Opcje licencyjne
Przejście zBitMiracle Docotic PDFnaIronPDFeliminuje złożoność zarządzania wieloma pakietami dodatków, zapewniając jednocześnie te same możliwości renderowania HTML oparte na Chromium. Przejście od rysowania na płótnie do pozycjonowania za pomocą HTML/CSS wykorzystuje umiejętności tworzenia stron internetowych, które posiada już większość programistów .NET, co skutkuje łatwiejszym w utrzymaniu kodem generującym pliki PDF.

