IRONSOFTWAREHOME
FILMY

Jak obsługiwać podziały stron HTML na PDF przy użyciu języka C#

Curtis Chau
Curtis Chau
Updated: 18 maja 2026

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:

AspektBitMiracle Docotic PDFIronPDF
HTML do PDFWymaga oddzielnego dodatku (HtmlToPdf)Wbudowana funkcja podstawowa
Struktura pakietuPodstawowa wersja + wiele dodatkówPojedynczy pakiet NuGet
Model licencyjnyLicencjonowanie poszczególnych dodatkówWszystkie funkcje w zestawie
Złożoność APIOddzielne przestrzenie nazw dla każdego dodatkuUjednolicony interfejs API
Silnik HTMLChromium (poprzez dodatek)Chromium (wbudowane)
Wielkość społecznościMniejszeWięcej zasobów
DokumentacjaInformacje techniczneObszerne samouczki

Równowaga funkcji

Obie biblioteki obsługują kompleksową funkcjonalność PDF:

FunkcjaBitMiracle Docotic PDFIronPDF
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" .
SHELL

Zmiany wymagające dostosowania

ZmianaBitMiracle Docotic PDFIronPDFWpływ
Renderowanie HTMLWymagany jest dodatek HtmlToPdfWbudowaneUsuń pakiet dodatków
Indeksowanie stronBazowane na 0 (Pages[0])Bazowane na 0 (Pages[0])Nie ma potrzeby wprowadzania zmian
Układ współrzędnychPoczątek w lewym dolnym roguStruktura HTML/CSSUżyj CSS do pozycjonowania
Rysowanie na płótniePdfCanvas.DrawText()Znaczniki HTMLZmiana paradygmatu
Wyodrębnianie tekstupage.GetText()pdf.ExtractAllText()Zmiana nazwy metody
Ładowanie dokumentównew PdfDocument(path)PdfDocument.FromFile(path)Konstruktor → metoda statyczna
Zapisywaniedocument.Save(path)pdf.SaveAs(path)Zmiana nazwy metody
UtylizacjaIDisposable wzorzecNie jest wymaganeProstsze 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
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;

Krok 3: Skonfiguruj licencję

// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Kompletna dokumentacja API

Operacje na dokumentach

ZadanieBitMiracle Docotic PDFIronPDF
Utwórz pusty dokumentnew PdfDocument()new PdfDocument()
Wczytaj z plikunew PdfDocument(path)PdfDocument.FromFile(path)
Wczytaj ze strumieniaPdfDocument.Load(stream)PdfDocument.FromStream(stream)
Wczytaj z bajtówPdfDocument.Load(bytes)PdfDocument.FromBinaryData(bytes)
Zapisz do plikudocument.Save(path)pdf.SaveAs(path)
Sprawdź liczbę strondocument.PageCountpdf.PageCount
Zamknij/Usuńdocument.Dispose()Nie jest wymagane

Konwersja HTML do PDF

ZadanieBitMiracle Docotic PDF(dodatek HtmlToPdf)IronPDF
Ciąg znaków HTML do pliku PDFawait converter.CreatePdfFromStringAsync(html)renderer.RenderHtmlAsPdf(html)
Plik HTML do PDFawait converter.CreatePdfAsync(filePath)renderer.RenderHtmlFileAsPdf(path)
URL do pliku PDFawait converter.CreatePdfAsync(new Uri(url))renderer.RenderUrlAsPdf(url)
Ustaw rozmiar stronyoptions.Page.SetSize(PdfPaperSize.A4)renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Ustaw marginesyoptions.Page.MarginTop = 20 (itd.)renderer.RenderingOptions.MarginTop = 20

Operacje scałania i dzielenia

ZadanieBitMiracle Docotic PDFIronPDF
Połącz dokumentydoc1.Append("file.pdf") (ścieżka/Strumień/bajty)PdfDocument.Merge(pdf1, pdf2)
Podziel dokumentdocument.CopyPage(index) do nowego dokumentupdf.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");
    }
}
C#

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");
    }
}
C#

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");
    }
}

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");
    }
}

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);
        }
    }
}
C#

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);
    }
}

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");

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");

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!");

Wzór IronPDF:

var html = "<div style='position:absolute; left:50px; top:50px;'>Hello, World!</div>";
var pdf = renderer.RenderHtmlAsPdf(html);

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

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);

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");
    }
}

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ęczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta