IRONSOFTWAREHOME
동영상

C#을 사용하여 로그인 및 인증을 관리하는 방법

Curtis Chau
Curtis Chau
Updated: 2026년 5월 18일

easyPDF SDK의 원래 출판사인 BCL Technologies는 2020년 3월 Apryse(구 PDFTron)에 인수되었으며 제품은 이제 Apryse PDF SDK와 함께 유산 SDK로 자리 잡고 있습니다. SDK 자체는 현대 개발 환경에서 배포 및 유지 관리 문제를 일으키는 여러 유산 기술에 의존합니다.

일반적인Easy PDF SDK배포 문제

개발자는 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 (대화형 세션 필요)
  • Cannot find printer: BCL easyPDF Printer

이러한 오류는 일반적으로 Easy PDF SDK의 아키텍처에서 발생하며, 이는 가상 프린터 드라이버, COM 상호 운용성 및 현대 서버 환경에서 재현하기 어려운 상호작용 Windows 세션에 의존합니다.

###Easy PDF SDKvs. IronPDF: 핵심 차이점

기능Easy PDF SDKIronPDF
플랫폼Windows 전용Windows, Linux, macOS, Docker
Office 의존성필요함None
분포MSI 설치 관리자 + 수동 DLL 참조(무 NuGet 패키지)NuGet 패키지 (IronPdf)
설치MSI + 가상 프린터 드라이버 + COM 등록NuGet 패키지
서버 지원일반적으로 상호작용 Windows 세션 필요헤드리스 실행
HTML 렌더링기본적 (Office 기반)전체 Chromium (CSS3, JS)
.NET 지원제한된 .NET Core.NET Framework 4.6.2 이상 및 .NET 5/6/7/8/9
비동기 패턴콜백 기반네이티브 async/await
컨테이너 지원벤더로부터 지원되지 않음전체 Docker/Kubernetes

플랫폼 제한사항

Easy PDF SDK는 Windows를 대상으로 하고 있으며 Office 문서 변환을 위해 Microsoft Office 설치에 의존하므로 Linux, macOS 및 Docker와 같은 컨테이너 환경에서는 사용이 제한됩니다. 이 의존성은 서버 설정을 더 복잡하게 만들고 배포를 Windows에 연결하는 경향이 있어 멀티플랫폼 DevOps를 실천하거나 Linux 컨테이너에 의존하는 팀에 제한이 됩니다.

이전 준비

필수 조건

환경이 다음 요구 사항을 충족하는지 확인하세요:

  • .NET Framework 4.6.2+ 또는 .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ 또는 VS Code와 C# 확장
  • NuGet 패키지 관리자 접근 -IronPDF라이선스 키 (ironpdf.com에서 무료 체험판 제공)

###Easy PDF SDK사용 감사

솔루션 디렉토리에서 다음 명령어를 실행하여 모든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

예상해야 할 주요 변경사항

Easy PDF SDK 패턴변경 필요
new Printer()사용 ChromePdfRenderer
PrintOfficeDocToPDF()다르게 처리되는 Office 변환
RenderHTMLToPDF()RenderHtmlAsPdf()
COM 상호운용성 참조완전히 제거
프린터 드라이버 설정필요 없음
BeginPrintToFile() 콜백네이티브 async/await
상호작용 세션 요구 사항헤드리스 실행
1-based 페이지 색인 생성0 기반 인덱싱
초 단위 타임아웃밀리초 단위 타임아웃

단계별 마이그레이션 프로세스

1단계:Easy PDF SDK제거

Easy PDF SDK는 NuGet 패키지가 아닌 MSI 설치 프로그램으로 배포되며, 프로젝트는 일반적으로 그 어셈블리(예: .NET Framework의 BCL.easyPDF.PDFConverter.dll 또는 .NET Core의 BCL.easyPDF.PDFConverter.NetCore.dll)를 직접 참조합니다. 모든 참조를 제거하십시오:

  1. 프로그램 및 기능에서 BCL EasyPDF SDK 제거
  2. .csproj에서 DLL <Reference> 항목 제거
  3. COM 상호운용 참조 제거
  4. GAC 항목 정리(있을 경우)

2단계:IronPDF설치

# Install IronPDF
dotnet add package IronPdf
SHELL

또는 패키지 관리자 콘솔을 통해:

PM > Install-Package IronPdf

3단계: 네임스페이스 참조 업데이트

Easy PDF SDK 네임스페이스를 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;

완전한 API 마이그레이션 참조

핵심 클래스 매핑

Easy PDF SDK 클래스IronPDF 동등
PrinterChromePdfRenderer
PDFDocumentPdfDocument
HTMLConverterChromePdfRenderer
PrinterConfigurationChromePdfRenderOptions
PageOrientationPdfPaperOrientation
PageSizePdfPaperSize
SecurityHandlerPdfDocument.SecuritySettings

PDF 생성 메서드

Easy PDF SDK 메서드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)

PDF 조작 메서드

Easy PDF SDK 메서드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() 또는 using
doc.ExtractText()pdf.ExtractAllText()

구성 옵션

Easy PDF SDK 옵션IronPDF 옵션
config.TimeOutRenderingOptions.Timeout
config.PageOrientation = LandscapeRenderingOptions.PaperOrientation = Landscape
config.PageSize = A4RenderingOptions.PaperSize = PdfPaperSize.A4
config.MarginTop/Bottom/Left/RightRenderingOptions.MarginTop

코드 마이그레이션 예제

HTML 문자열에서 PDF로

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

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는 HTML 렌더링을 하나의 렌더러 호출로 결합하고 Dispose이 정리 작업을 처리하게 하여 별도의 HTMLConverter 단계를 제거하고 수동 Close() 패턴을 없앱니다.

URL을 PDF로 변환

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

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

여러 PDF 병합

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

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

IronPDF의 정적 Merge 메서드는 문서 컬렉션을 직접 받아들여 쌍 패턴 Append을 대체합니다.

비밀번호 보호

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

머리말과 바닥글

Easy PDF SDK는 HTML 변환 경로에 전용 헤더/푸터 API를 공개하지 않음; 헤더와 푸터는 일반적으로 소스 HTML에 직접 포함됩니다. IronPDF는 전용 헤더/푸터 객체를 제공합니다:

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

더 많은 옵션은 헤더 및 푸터 문서를 참조하세요.

비동기 PDF 생성

Easy PDF SDK는 콜백 기반 비동기 패턴을 사용합니다. IronPDF는 네이티브 async/await를 지원합니다:

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

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

중요한 마이그레이션 노트

페이지 인덱스 변경

Easy PDF SDK는 1 기반 인덱싱을 사용합니다. IronPDF는 0-based 색인을 사용합니다:

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

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

밀리초 단위 타임아웃

Easy PDF SDK는 타임아웃 값을 초 단위로 사용합니다. IronPDF는 밀리초를 사용합니다:

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

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

ASP.NET Core 통합

Easy PDF SDK는 상호작용 세션 요구 사항 때문에 웹 컨텍스트에서 어려움을 겪습니다.

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

Docker 배포

Easy PDF SDK는 Linux 컨테이너에 설계되지 않았으며, 지원되는 구성은 가상 프린터 드라이버 및 (대부분의 설정에서) 대화형 데스크톱 세션이 있는 Windows를 기본으로 하여 일반적인 Linux 기반 Docker 워크플로우가 비현실적입니다.

IronPDF Docker 구성:

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

일반적인 마이그레이션 문제 해결

문제: 프린터를 찾을 수 없음

증상: Cannot find printer: BCL easyPDF Printer

해결책: IronPDF는 프린터 드라이버가 필요 없습니다:

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

문제: COM 상호운용 오류

증상: DLL error loading 또는 RCW 오류

해결책: 모든 COM 참조를 제거하고 IronPDF의 관리 API를 사용하십시오.

문제: 서버에서 타임아웃

증상: 웹 서버에서 PDF 생성이 멈춤

해결책: IronPDF는 상호작용 세션 없이 헤드리스로 실행됩니다:

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

문제: 배경이 인쇄되지 않음

증상: CSS 배경 누락

해결책: 배경 인쇄 활성화:

renderer.RenderingOptions.PrintHtmlBackgrounds = true;

마이그레이션 후 점검 목록

코드 마이그레이션을 완료한 후, 다음을 확인하십시오:

  • IronPDF의 Chromium 엔진으로 PDF 출력 품질 확인
  • 복잡한 HTML/CSS로 모든 엣지 케이스 테스트
  • 서버 배포가 상호 작용 없는 세션에서도 작동하는지 검증합니다
  • Docker/컨테이너 배포 테스트
  • 배포에서 BCL EasyPDF 설치 파일 제거
  • 서버에서 Office 설치 제거 (더 이상 필요하지 않음)
  • 새로운 NuGet 패키지를 사용하여 CI/CD 파이프라인 업데이트

추가 리소스


Easy PDF SDK에서 IronPDF로의 마이그레이션은 PDF 생성 경로에서 가상 프린터 드라이버, COM 상호 운용성 및 Windows 전용 제약을 제거합니다. Chromium 기반 렌더링은 현대적인 CSS3 및 JavaScript 지원을 제공하며, 동일한 코드베이스가 Docker, Kubernetes 및 easyPDF SDK의 지원 배포 모델을 대상으로 하기 어려운 Linux 기반 클라우드 환경에서 실행됩니다.

참고해 주세요: BCL easyPDF SDK,Easy PDF SDK및 Apryse는 각각의 소유자의 등록 상표입니다. 이 사이트는 BCL Technologies 또는 Apryse와 관련이 없으며, 이들의 후원을 받고 있지 않으며, 그들이 승인한 것도 아닙니다. 모든 제품명, 로고 및 브랜드는 해당 소유자의 자산입니다. 비교는 정보 제공 목적으로만 사용되며, 작성 시점에 공개적으로 이용 가능한 정보를 반영합니다.
Curtis Chau
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

...
더 읽어보기

관련 기사

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
무료 라이브 데모를 예약하세요
Booking Badge

전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.

Iron Software의 고객 로고
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.