Przejdź do treści stopki
PRZEWODNIKI MIGRACJI

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 PDFdo IronPDF— 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 bazowane na płótnie z pozycjonowaniem współrzędnych (canvas.DrawString(x, y, text)), podczas gdy IronPDF korzysta z HTML/CSS do 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 licencyjny IronPDF(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" .
SHELL

Zmiany wymagające dostosowania

Zmiana BitMiracle Docotic PDF IronPDF Wpływ
Renderowanie HTML Wymagany jest dodatek HtmlToPdf Wbudowane Usuń pakiet dodatków
Indeksowanie stron Bazowane na 0 (Pages[0]) Bazowane na 0 (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
SHELL

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;
// HtmlConverter from the BitMiracle.Docotic.Pdf.HtmlToPdf NuGet package
// also lives in the BitMiracle.Docotic.Pdf namespace (no extra using needed).

// Add this
using IronPdf;
// Remove these
using BitMiracle.Docotic.Pdf;
using BitMiracle.Docotic.Pdf.Layout;
// HtmlConverter from the BitMiracle.Docotic.Pdf.HtmlToPdf NuGet package
// also lives in the BitMiracle.Docotic.Pdf namespace (no extra using needed).

// Add this
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

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"
$vbLabelText   $csharpLabel

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 await converter.CreatePdfFromStringAsync(html) renderer.RenderHtmlAsPdf(html)
Plik HTML do PDF await converter.CreatePdfAsync(filePath) renderer.RenderHtmlFileAsPdf(path)
URL do pliku PDF await converter.CreatePdfAsync(new Uri(url)) renderer.RenderUrlAsPdf(url)
Ustaw rozmiar strony options.Page.SetSize(PdfPaperSize.A4) renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Ustaw marginesy options.Page.MarginTop = 20 (itd.) renderer.RenderingOptions.MarginTop = 20

Operacje scałania i dzielenia

Zadanie BitMiracle Docotic PDF IronPDF
Połącz dokumenty doc1.Append("file.pdf") (ścieżka/Strumień/bajty) 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 bardzo IronPDF ułatwia pracę.

Wdrożenie BitMiracle Docotic PDF:

// NuGet: Install-Package BitMiracle.Docotic.Pdf
// NuGet: Install-Package BitMiracle.Docotic.Pdf.HtmlToPdf  (separate add-on required)
using BitMiracle.Docotic.Pdf;
using System;
using System.Threading.Tasks;

class Program
{
    static async Zadanie Main()
    {
        // HtmlConverter is async-only and downloads Chromium on first use
        using var converter = await HtmlConverter.CreateAsync();

        string html = "<html><body><h1>Hello World</h1><p>This is HTML do PDF conversion.</p></body></html>";

        using var pdf = await converter.CreatePdfFromStringAsync(html);
        pdf.Save("output.pdf");

        Console.WriteLine("PDF created successfully");
    }
}
// NuGet: Install-Package BitMiracle.Docotic.Pdf
// NuGet: Install-Package BitMiracle.Docotic.Pdf.HtmlToPdf  (separate add-on required)
using BitMiracle.Docotic.Pdf;
using System;
using System.Threading.Tasks;

class Program
{
    static async Zadanie Main()
    {
        // HtmlConverter is async-only and downloads Chromium on first use
        using var converter = await HtmlConverter.CreateAsync();

        string html = "<html><body><h1>Hello World</h1><p>This is HTML do PDF conversion.</p></body></html>";

        using var pdf = await converter.CreatePdfFromStringAsync(html);
        pdf.Save("output.pdf");

        Console.WriteLine("PDF created successfully");
    }
}
Imports BitMiracle.Docotic.Pdf
Imports System
Imports System.Threading.Tasks

Module Program
    Async Function Main() As Task
        ' HtmlConverter is async-only and downloads Chromium on first use
        Using converter = Await HtmlConverter.CreateAsync()

            Dim html As String = "<html><body><h1>Hello World</h1><p>This is HTML to PDF conversion.</p></body></html>"

            Using pdf = Await converter.CreatePdfFromStringAsync(html)
                pdf.Save("output.pdf")
            End Using

            Console.WriteLine("PDF created successfully")
        End Using
    End Function
End Module
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

IronPDF eliminuje wymóg instrukcji using i zapewnia dedykowaną klasę ChromePdfRenderer, która jasno wskazuje na jego zdolność renderowania bazowaną na 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 BitMiracle.Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;

class Program
{
    static void Main()
    {
        using (var pdf1 = new PdfDocument("document1.pdf"))
        {
            // PdfDocument.Append accepts a file path, Stream, or byte[] —
            // not another PdfDocument instance.
            pdf1.Append("document2.pdf");
            pdf1.Save("merged.pdf");
        }

        Console.WriteLine("PDFs merged successfully");
    }
}
// NuGet: Install-Package BitMiracle.Docotic.Pdf
using BitMiracle.Docotic.Pdf;
using System;

class Program
{
    static void Main()
    {
        using (var pdf1 = new PdfDocument("document1.pdf"))
        {
            // PdfDocument.Append accepts a file path, Stream, or byte[] —
            // not another PdfDocument instance.
            pdf1.Append("document2.pdf");
            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")
            ' PdfDocument.Append accepts a file path, Stream, or byte[] —
            ' not another PdfDocument instance.
            pdf1.Append("document2.pdf")
            pdf1.Save("merged.pdf")
        End Using

        Console.WriteLine("PDFs merged successfully")
    End Sub
End Class
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

Statyczna metoda MergeIronPDF akceptuje bezpośrednio wiele dokumentów, zapewniając czystsze API niż iteracyjny wzorzec Append. Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą scałania plików PDF.

Wyodrębnianie tekstu

Wdrożenie BitMiracle Docotic PDF:

// NuGet: Install-Package BitMiracle.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 BitMiracle.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

Class Program
    Shared 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 Class
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

IronPDF obsługuje tokeny zastępcze jak {page} i {total-pages} 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!")
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

Indeksowanie tej samej strony

Obie biblioteki używają indeksowania bazowanego na 0 (Pages[0] to pierwsza strona) - nie ma potrzeby zmian w kodzie dostępu do stron.

Nie wymaga utylizacji

IronPDF nie wymaga instrukcji using do zarządzania pamięcią, upraszczając 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
$vbLabelText   $csharpLabel

Obsługa asynchroniczna

Dodatek HtmlToPdf firmyBitMiracle Docotic PDFwymaga stosowania wzorców asynchronicznych we wszystkich miejscach.IronPDF obsł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)
$vbLabelText   $csharpLabel

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.BinaryData, "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.BinaryData, "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.BinaryData, "application/pdf", "report.pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

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 w IronPDF moż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

Dodatkowe zasoby


Przejście zBitMiracle Docotic PDFna IronPDF eliminuje 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.

Zwróć uwagęBitmiracle Docotic.Pdf jest zarejestrowanym znakiem towarowym swojego właściciela. Ta strona nie jest powiązana, zatwierdzana ani sponsorowana przez Bit Miracle. 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.

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