IRONSOFTWAREHOME
FILMY

Jak zarządzać logowaniem i uwierzytelnianiem przy użyciu języka C#

Curtis Chau
Curtis Chau
Updated: 18 maja 2026

BCL Technologies, oryginalny wydawca easyPDF SDK, został przejęty przez Apryse (dawniej PDFTron) w marcu 2020 roku, a produkt jest teraz pozycjonowany jako przestarzały SDK obok Apryse PDF SDK. Sam SDK polega na kilku przestarzałych technologiach, które stwarzają problemy z wdrażaniem i utrzymaniem w nowoczesnych środowiskach developerskich.

Typowe problemy związane z wdrażaniem Easy PDF SDK

Programiści często napotykają następujące problemy podczas pracy z Easy PDF SDK:

  • bcl.easypdf.interop.easypdfprinter.dll error loading
  • COM object that has been separated from its underlying RCW cannot be used
  • Timeout expired waiting for print job to complete
  • The printer operation failed because the service is not running
  • Error: Access denied (wymagana interaktywna sesja)
  • Cannot find printer: BCL easyPDF Printer

Te błędy typowo wynikają z architektury Easy PDF SDK, która polega na wirtualnych sterownikach drukarki, wymianie COM i interaktywnych sesjach Windows, które są trudne do odtworzenia w nowoczesnych środowiskach serwerowych.

###Easy PDF SDKa IronPDF: kluczowe różnice

FunkcjaEasy PDF SDKIronPDF
PlatformaTylko dla systemu WindowsWindows, Linux, macOS, Docker
Zależność od pakietu OfficeWymaganeNone
DystrybucjaInstalator MSI + ręczne odniesienia do plików DLL (brak pakietu NuGet)Pakiet NuGet (IronPdf)
InstalacjaMSI + wirtualny sterownik drukarki + rejestracja COMPakiet NuGet
Wsparcie serweroweZwykle wymaga interaktywnej sesji WindowsDziała w trybie headless
Renderowanie HTMLPodstawowe (w środowisku biurowym)Pełny Chromium (CSS3, JS)
Wsparcie .NETOgraniczony .NET Core.NET Framework 4.6.2+ oraz .NET 5/6/7/8/9
Wzorzec asynchronicznyOparte na wywołaniach zwrotnychNatywne async/await
Obsługa kontenerówNie wspierane przez sprzedawcęPełna wersja Docker/Kubernetes

Ograniczenia platformy

Easy PDF SDK jest skierowany na Windows i polega na instalacjach Microsoft Office dla konwersji dokumentów Office, co ogranicza jego użycie na Linux, macOS i środowiskach kontenerowych jak Docker. Ta zależność często powoduje, że konfiguracja serwerowa jest bardziej złożona i wiąże wdrożenie z Windows — ograniczenie dla zespołów praktykujących DevOps wieloplatformowe lub polegających na kontenerach Linux.

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 Easy PDF SDK

Uruchom te polecenia w katalogu rozwiązania, aby zidentyfikować wszystkie odwołania do Easy PDF SDK:

# Find all BCL using statements
grep -r "using BCL" --include="*.cs" .

# Find Printer/PDFDocument usage
grep -r "Printer\|PDFDocument\|PDFConverter\|HTMLConverter" --include="*.cs" .

# Find COM interop references
grep -r "easyPDF\|BCL.easyPDF" --include="*.csproj" .

# Find configuration settings
grep -r "PageOrientation\|TimeOut\|PrintOffice" --include="*.cs" .
SHELL

Zmiany wymagające dostosowania

Wzorzec Easy PDF SDKWymagana zmiana
new Printer()Użyj ChromePdfRenderer
PrintOfficeDocToPDF()Konwersja plików Office obsługiwana w inny sposób
RenderHTMLToPDF()RenderHtmlAsPdf()
Odniesienia do interoperacyjności COMUsuń całkowicie
Konfiguracja sterownika drukarkiNie jest potrzebne
BeginPrintToFile() wywołania zwrotneNatywne async/await
Wymagania dotyczące sesji interaktywnejDziała w trybie headless
Indeksowanie stron oparte na 1Indeksowanie oparte na 0
Limit czasu w sekundachLimit czasu w milisekundach

Proces migracji krok po kroku

Krok 1: Usuń Easy PDF SDK

Easy PDF SDK jest dystrybuowany jako instalator MSI, a nie pakiet NuGet, a projekty zazwyczaj odwołują się bezpośrednio do jego zestawów (takich jak BCL.easyPDF.PDFConverter.dll dla .NET Framework lub BCL.easyPDF.PDFConverter.NetCore.dll dla .NET Core). Usuń wszystkie odniesienia:

  1. Odinstaluj BCL EasyPDF SDK z sekcji Programy i funkcje
  2. Usuń wpisy DLL <Reference> ze swojego .csproj
  3. Usuń odniesienia do COM Interop
  4. Wyczyść wpisy GAC, jeśli są obecne

Krok 2: Zainstaluj IronPDF

# Install IronPDF
dotnet add package IronPdf
SHELL

Lub za pomocą konsoli menedżera pakietów:

PM > Install-Package IronPdf

Krok 3: Zaktualizuj odniesienia do przestrzeni nazw

Zastąp przestrzenie nazwEasy PDF SDKnazwą IronPDF:

// Remove these
using BCL.easyPDF;
using BCL.easyPDF.PDFConverter;
using BCL.easyPDF.PDFProcessor;
using BCL.easyPDF.Printer;

// Add these
using IronPdf;
using IronPdf.Rendering;

Kompletna dokumentacja API

Mapowanie klas podstawowych

KlasaEasy PDF SDKOdpowiednik IronPDF
PrinterChromePdfRenderer
PDFDocumentPdfDocument
HTMLConverterChromePdfRenderer
PrinterConfigurationChromePdfRenderOptions
PageOrientationPdfPaperOrientation
PageSizePdfPaperSize
SecurityHandlerPdfDocument.SecuritySettings

Metody tworzenia plików PDF

MetodaEasy PDF SDKMetoda IronPDF
printer.RenderHTMLToPDF(html, path)renderer.RenderHtmlAsPdf(html).SaveAs(path)
printer.RenderUrlToPDF(url, path)renderer.RenderUrlAsPdf(url).SaveAs(path)
htmlConverter.ConvertHTML(html, doc)renderer.RenderHtmlAsPdf(html)
htmlConverter.ConvertURL(url, doc)renderer.RenderUrlAsPdf(url)

Metody manipulacji plikami PDF

MetodaEasy PDF SDKMetoda IronPDF
doc.Append(doc2)PdfDocument.Merge(pdf1, pdf2)
doc.ExtractPages(start, end)pdf.CopyPages(start, end)
doc.DeletePage(index)pdf.RemovePages(index)
doc.GetPageCount()pdf.PageCount
doc.Save(path)pdf.SaveAs(path)
doc.Close()pdf.Dispose() lub using
doc.ExtractText()pdf.ExtractAllText()

Opcje konfiguracji

OpcjaEasy PDF SDKOpcja IronPDF
config.TimeOutRenderingOptions.Timeout
config.PageOrientation = LandscapeRenderingOptions.PaperOrientation = Landscape
config.PageSize = A4RenderingOptions.PaperSize = PdfPaperSize.A4
config.MarginTop/Bottom/Left/RightRenderingOptions.MarginTop, itd.

Przykłady migracji kodu

Ciąg znaków HTML do pliku PDF

Łatwa implementacja Easy PDF SDK:

// Reference BCL.easyPDF.PDFConverter.dll (or the .NetCore variant)
// installed by the easyPDF SDK MSI — there is no NuGet package.
using BCL.easyPDF;
using System;

class Program
{
    static void Main()
    {
        var pdf = new PDFDocument();
        var htmlConverter = new HTMLConverter();
        htmlConverter.ConvertHTML("<h1>Hello World</h1>", pdf);
        pdf.Save("output.pdf");
        pdf.Close();
    }
}

Wdrożenie IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        pdf.SaveAs("output.pdf");
    }
}

IronPDF integruje renderowanie HTML w pojedynczym wywołaniu renderera i pozwala Dispose zająć się czyszczeniem, eliminując odrębny krok HTMLConverter i ręczny wzorzec Close().

Konwersja adresów URL do formatu PDF

Łatwa implementacja Easy PDF SDK:

// Reference BCL.easyPDF.PDFConverter.dll (or the .NetCore variant)
// installed by the easyPDF SDK MSI — there is no NuGet package.
using BCL.easyPDF;
using System;

class Program
{
    static void Main()
    {
        var pdf = new PDFDocument();
        var htmlConverter = new HTMLConverter();
        htmlConverter.ConvertURL("https://example.com", pdf);
        pdf.Save("webpage.pdf");
        pdf.Close();
    }
}

Wdrożenie IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}

Łączenie wielu plików PDF

Łatwa implementacja Easy PDF SDK:

// Reference BCL.easyPDF.PDFConverter.dll (or the .NetCore variant)
// installed by the easyPDF SDK MSI — there is no NuGet package.
using BCL.easyPDF;
using System;

class Program
{
    static void Main()
    {
        var pdf1 = new PDFDocument("document1.pdf");
        var pdf2 = new PDFDocument("document2.pdf");
        pdf1.Append(pdf2);
        pdf1.Save("merged.pdf");
        pdf1.Close();
        pdf2.Close();
    }
}

Wdrożenie IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
        var pdfs = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf")
        };
        var merged = PdfDocument.Merge(pdfs);
        merged.SaveAs("merged.pdf");
    }
}

Statyczna metoda MergeIronPDF akceptuje bezpośrednio kolekcję dokumentów, zastępując wzorzec parowy Append.

Ochrona hasłem

Wdrożenie IronPDF:

using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");

// Set security
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;

pdf.SaveAs("protected.pdf");

Nagłówki i stopki

Easy PDF SDK nie udostępnia dedykowanych API dla nagłówków i stopki w swojej ścieżce konwersji HTML; nagłówki i stopki są zazwyczaj osadzone bezpośrednio w źródle HTML.IronPDF dostarcza dedykowane obiekty nagłówków i stopek:

using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align:center; font-size:12px; font-family:Arial;'>
            Company Name - 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>Content</h1>");
pdf.SaveAs("with_headers.pdf");

Aby uzyskać więcej opcji, zapoznaj się z dokumentacją dotyczącą nagłówków i stopek.

Asynchroniczne generowanie plików PDF

Easy PDF SDK wykorzystuje wzorce asynchroniczne oparte na wywołaniach zwrotnych.IronPDF obsługuje natywne async/await:

Łatwa implementacja Easy PDF SDK:

using BCL.easyPDF;

Printer printer = new Printer();

// BCL uses callback-based async
printer.BeginPrintToFile(
    "https://example.com",
    "output.pdf",
    OnPrintComplete,
    OnPrintError
);

Console.ReadLine();
printer.Dispose();

Wdrożenie IronPDF:

using IronPdf;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var renderer = new ChromePdfRenderer();

        // Native async/await
        var pdf = await renderer.RenderUrlAsPdfAsync("https://example.com");
        await pdf.SaveAsAsync("output.pdf");

        Console.WriteLine("PDF created: output.pdf");
    }
}

Ważne uwagi dotyczące migracji

Zmiana indeksu strony

Easy PDF SDK wykorzystuje indeksowanie oparte na 1.IronPDF stosuje indeksowanie od 0:

// Easy PDF SDK: 1-based
doc.ExtractPages(1, 5);

// IronPDF: 0-based
pdf.CopyPages(0, 4);

Limit czasu w milisekundach

Easy PDF SDK używa sekund jako wartości limitu czasu.IronPDF używa milisekund:

// Easy PDF SDK: seconds
config.TimeOut = 120;

// IronPDF: milliseconds
renderer.RenderingOptions.Timeout = 120000;

Integracja z ASP.NET Core.NET Core

Easy PDF SDK ma trudności w kontekście internetowym ze względu na wymagania dotyczące sesji interaktywnych.

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

Wdrażanie Docker

Easy PDF SDK nie jest zaprojektowany do kontenerów Linux — jego obsługiwana konfiguracja to Windows z Microsoft Office, sterownikiem wirtualnej drukarki, a (w większości konfiguracji) interaktywna sesja pulpitu, co sprawia, że typowe przepływy Docker oparte na Linux są niewykonalne.

Konfiguracja IronPDF w Dockerze:

FROM mcr.microsoft.com/dotnet/aspnet:8.0

# Install Chromium dependencies
RUN apt-get update && apt-get install -y \
    libc6 libgdiplus libx11-6 libxcomposite1 \
    libxdamage1 libxrandr2 libxss1 libxtst6 \
    libnss3 libatk-bridge2.0-0 libgtk-3-0 \
    libgbm1 libasound2 fonts-liberation \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "MyApp.dll"]
Text

Rozwiązywanie typowych problemów związanych z migracją

Problem: Nie znaleziono drukarki

Objaw: Cannot find printer: BCL easyPDF Printer

**Rozwiązanie:**IronPDF nie wymaga sterowników drukarki:

// Just use the renderer directly
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);

Problem: Błędy COM Interop

Objaw: DLL error loading lub błędy RCW

Rozwiązanie: Usuń wszystkie odniesienia do COM i użyj zarządzanego interfejsu API IronPDF.

Problem: Przekroczenie limitu czasu na serwerze

Objaw: Generowanie pliku PDF zawiesza się na serwerze internetowym

**Rozwiązanie:**IronPDF działa w trybie headless bez sesji interaktywnych:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.Timeout = 60000; // Reliable timeout
var pdf = renderer.RenderHtmlAsPdf(html);

Problem: Tło nie drukuje się

Objaw: Brak tła CSS

Rozwiązanie: Włącz drukowanie w tle:

renderer.RenderingOptions.PrintHtmlBackgrounds = true;

Lista kontrolna po migracji

Po zakończeniu migracji kodu sprawdź, czy:

  • Sprawdź jakość plików PDF dzięki silnikowi Chromium w IronPDF
  • Przetestuj wszystkie skrajne przypadki z użyciem złożonego kodu HTML/CSS
  • Sprawdź, czy wdrożenie serwera działa bez sesji interaktywnych
  • Test wdrożenia Docker/kontener
  • Usuń instalator BCL EasyPDF z wdrożenia
  • Usuń instalację pakietu Office z serwerów (nie jest już potrzebna)
  • Zaktualizuj potoki CI/CD o nowy pakiet NuGet

Dodatkowe zasoby


Migracja zEasy PDF SDKdo IronPDF usuwa sterownik wirtualnej drukarki, interoperację COM i ograniczenia wyłącznie dla Windows w ścieżce generowania PDF. Renderowanie oparte na Chromium zapewnia wsparcie nowoczesnego CSS3 i JavaScript oraz ta sama baza kodów działa na Dockerze, Kubernetes i środowiskach chmurowych opartych na Linux, które trudno jest zaadresować za pomocą modelu wdrażania obsługiwanego przez easyPDF SDK.

Zwróć uwagę: BCL easyPDF SDK,Easy PDF SDKi Apryse to zarejestrowane znaki towarowe ich odpowiednich właścicieli. Ta strona nie jest powiązana z, zatwierdzona przez ani sponsorowana przez BCL Technologies lub Apryse. 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