IRONSOFTWAREHOME
동영상

C#에서 PDF UA 형식 문서를 내보내는 방법

Curtis Chau
Curtis Chau
Updated: 2026년 7월 19일

HiQPdf는 HiQPdf Software에서 발행한 상업용 HTML-to-PDF 라이브러리입니다 (현재 HiQPdf 18.0.2, 2026년 2월 기준 nuget.org). 개발자들이 대안을 평가하는 일반적인 이유:

  1. 제한적인 무료 버전: HiQPdf.Free는 문서당 최대 3페이지로 출력을 제한합니다 — 전체 문서 생성을 요구하는 프로덕션 작업보다는 평가에 유용합니다.

  2. 클래식 라인의 WebKit: 클래식 HiQPdf 패키지는 최신 JavaScript 프레임워크에서 문제가 발생할 수 있는 구버전의 WebKit 기반 엔진을 사용합니다. HiQPdf는 Chromium 기반의 변형 (HiQPdf.NG / HiQPdf.Chromium.Windows, Linux 빌드 포함)을 제공하지만 대부분의 기존 코드는 클래식 엔진을 대상으로 합니다.

  3. .NET 지원이 패키지에 걸쳐 확산됨: .NET Framework, .NET Core, .NET Standard 2.0이 모두 지원되지만, 별도의 NuGet ID (HiQPdf, HiQPdf_NetCore, HiQPdf.NG, HiQPdf.Chromium.Windows, HiQPdf_x64)로 분할되어 선택해야 합니다.

  4. 분산된 패키지: 다양한 플랫폼을 위한 여러 NuGet ID가 존재합니다 (HiQPdf, HiQPdf.Free, HiQPdf_NetCore, HiQPdf.NG, HiQPdf.Chromium.Windows), 이는 의존성 관리를 복잡하게 만듭니다.

  5. 상세한 구성: 유창한 렌더링 옵션 API 대신 Document, Header, Footer 속성 체인을 통해 설정이 필요합니다.

  6. 개발자 라이선스 비용 추가: $245 Startup / $495 Developer / $795 Team / $1,095 Enterprise (영구적, 첫 해의 업데이트가 포함됨).

HiQPdf vs IronPDF 비교

측면HiQPdfIronPDF
렌더링 엔진WebKit (클래식 HiQPdf) 또는 Chromium (HiQPdf.NG / HiQPdf.Chromium.Windows)최신 크로뮴
무료 등급HiQPdf.Free 3페이지 제한30일 완전 체험
최신 JS 지원클래식에서 제한됨; NG/Chromium에서 최신완전 (React, Angular, Vue)
.NET Core/5+ 지원지원되지만 여러 NuGet 패키지로 나누어짐단일 통합 패키지
API 설계속성 체인유창한 렌더링 옵션
CSS3 지원클래식에서 부분적; NG에서 완전함전체 지원
문서화제품 라인에 걸쳐 분열됨포괄적
NuGet 패키지다양한 변형단일 패키지

IronPDF 문서는 현대적인 Chromium 렌더링 엔진에서 최신 .NET 버전(.NET Framework 4.6.2+, .NET 6, 7, 8, 9)을 지원합니다.


마이그레이션 복잡성 평가

기능별 예상 노력

기능마이그레이션 복잡성
HTML to PDF매우 낮음
URL을 PDF로 변환매우 낮음
PDF 병합낮음
헤더/푸터중간
페이지 크기/여백낮음
TriggerMode/지연낮음

패러다임 전환

이 HiQPdf 마이그레이션의 근본적인 변화는 속성 체인 구성에서 유창한 렌더링 옵션으로의 전환입니다:

HiQPdf:   converter.Document.Header.Height = 50;
          converter.Document.Header.Add(new HtmlToPdfVariableElement(...));
          
IronPDF:  renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { ... };
Text

시작하기 전에

필수 조건

  1. .NET 버전: IronPDF는 .NET Framework 4.6.2+ 및 .NET Core 3.1+ / .NET 5+ 를 지원합니다
  2. 라이선스 키: ironpdf.com에서 IronPDF 라이선스 키를 얻으세요.
  3. HiQPdf 제거: 모든 HiQPdf NuGet 패키지 변형을 제거할 계획

모든 HiQPdf 사용 식별

# Find HiQPdf namespace usage
grep -r "using HiQPdf\|HtmlToPdf\|PdfDocument" --include="*.cs" .

# Find header/footer usage
grep -r "\.Header\.\|\.Footer\.\|HtmlToPdfVariableElement" --include="*.cs" .

# Find placeholder syntax
grep -r "CrtPage\|PageCount" --include="*.cs" .

# Find NuGet references
grep -r "HiQPdf" --include="*.csproj" .
SHELL

NuGet 패키지 변경 사항

# Remove all HiQPdf variants
dotnet remove package HiQPdf
dotnet remove package HiQPdf.Free
dotnet remove package HiQPdf_NetCore
dotnet remove package HiQPdf_x64
dotnet remove package HiQPdf.NG
dotnet remove package HiQPdf.Chromium.Windows

# Install IronPDF (single package for all platforms)
dotnet add package IronPdf
SHELL

빠른 시작 마이그레이션

1단계: 라이선스 구성 업데이트

이전 (HiQPdf):

HtmlToPdf converter = new HtmlToPdf();
converter.SerialNumber = "HIQPDF-SERIAL-NUMBER";

이후 (IronPDF):

// Set globally at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

2단계: 네임스페이스 가져오기 업데이트

// Before (HiQPdf)
using HiQPdf;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;

완전한 API 참조

주요 클래스 매핑

HiQPdf 클래스IronPDF 클래스
HtmlToPdfChromePdfRenderer
PdfDocumentPdfDocument
HtmlToPdfVariableElementTextHeaderFooter 또는 HtmlHeaderFooter

변환 메서드 매핑

HiQPdf 메서드IronPDF 메소드
ConvertHtmlToMemory(html, baseUrl)RenderHtmlAsPdf(html)
ConvertUrlToMemory(url)RenderUrlAsPdf(url)
File.WriteAllBytes(path, bytes)pdf.SaveAs(path)

PDF 문서 메서드 매핑

HiQPdf 메서드IronPDF 메소드
PdfDocument.FromFile(path)PdfDocument.FromFile(path)
document1.AddDocument(document2)PdfDocument.Merge(pdf1, pdf2)
document.WriteToFile(path)pdf.SaveAs(path)

헤더/푸터 플레이스홀더 매핑

HiQPdf 플레이스홀더IronPDF 플레이스홀더설명
{CrtPage}{page}현재 페이지 번호
{PageCount}{total-pages}총 페이지 수

코드 마이그레이션 예제

예제 1: HTML에서 PDF로 변환

이전 (HiQPdf):

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

class Program
{
    static void Main()
    {
        HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
        byte[] pdfBuffer = htmlToPdfConverter.ConvertUrlToMemory("https://example.com");
        System.IO.File.WriteAllBytes("output.pdf", pdfBuffer);
        
        // Convert HTML string
        string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        byte[] pdfFromHtml = htmlToPdfConverter.ConvertHtmlToMemory(html, "");
        System.IO.File.WriteAllBytes("fromhtml.pdf", pdfFromHtml);
    }
}

이후 (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");
        
        // Convert HTML string
        string html = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        var pdfFromHtml = renderer.RenderHtmlAsPdf(html);
        pdfFromHtml.SaveAs("fromhtml.pdf");
    }
}

HiQPdf 접근 방식은 HtmlToPdf 인스턴스를 생성하고, ConvertUrlToMemory() 또는 ConvertHtmlToMemory()를 호출하여 바이트 배열을 얻은 다음 수동으로 파일에 바이트를 씁니다. IronPDF의 ChromePdfRenderer는 직접 SaveAs() 메서드를 가진 PdfDocument 객체를 반환하여 수동 파일 쓰기 단계를 제거합니다. 현대적인 Chromium 엔진은 복잡한 HTML/CSS/JavaScript 콘텐츠에 대해 더 나은 렌더링을 제공합니다. HTML to PDF 문서에서 추가 렌더링 옵션을 참조하십시오.

예제 2: 여러 PDF 병합

이전 (HiQPdf):

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

class Program
{
    static void Main()
    {
        // Create first PDF
        HtmlToPdf converter1 = new HtmlToPdf();
        byte[] pdf1 = converter1.ConvertHtmlToMemory("<h1>First Document</h1>", "");
        System.IO.File.WriteAllBytes("doc1.pdf", pdf1);
        
        // Create second PDF
        HtmlToPdf converter2 = new HtmlToPdf();
        byte[] pdf2 = converter2.ConvertHtmlToMemory("<h1>Second Document</h1>", "");
        System.IO.File.WriteAllBytes("doc2.pdf", pdf2);
        
        // Merge PDFs
        PdfDocument document1 = PdfDocument.FromFile("doc1.pdf");
        PdfDocument document2 = PdfDocument.FromFile("doc2.pdf");
        document1.AddDocument(document2);
        document1.WriteToFile("merged.pdf");
    }
}

이후 (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        
        // Create first PDF
        var pdf1 = renderer.RenderHtmlAsPdf("<h1>First Document</h1>");
        pdf1.SaveAs("doc1.pdf");
        
        // Create second PDF
        var pdf2 = renderer.RenderHtmlAsPdf("<h1>Second Document</h1>");
        pdf2.SaveAs("doc2.pdf");
        
        // Merge PDFs
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}

HiQPdf 접근 방식은 PdfDocument.FromFile()을 사용하여 파일로부터 문서를 로드하고 AddDocument()을 사용하여 첫 번째 문서에 두 번째를 추가한 후 WriteToFile()을 사용하여 저장합니다. IronPDF는 여러 PdfDocument 객체를 직접 수용하는 깔끔한 정적 PdfDocument.Merge() 메서드를 제공하므로 중간 파일 작업이 필요하지 않습니다. PDF 병합 및 분할에 대해 더 알아보세요.

예제 3: 페이지 번호가 있는 PDF 헤더와 푸터

이전 (HiQPdf):

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

class Program
{
    static void Main()
    {
        HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
        
        // Add header
        htmlToPdfConverter.Document.Header.Height = 50;
        HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page Header</div>", "");
        htmlToPdfConverter.Document.Header.Add(headerHtml);
        
        // Add footer with page number
        htmlToPdfConverter.Document.Footer.Height = 50;
        HtmlToPdfVariableElement footerHtml = new HtmlToPdfVariableElement("<div style='text-align:center'>Page {CrtPage} of {PageCount}</div>", "");
        htmlToPdfConverter.Document.Footer.Add(footerHtml);
        
        byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory("<h1>Document with Headers and Footers</h1>", "");
        System.IO.File.WriteAllBytes("header-footer.pdf", pdfBuffer);
    }
}

이후 (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        
        // Configure header and footer
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Page Header",
            FontSize = 12
        };
        
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}",
            FontSize = 10
        };
        
        var pdf = renderer.RenderHtmlAsPdf("<h1>Document with Headers and Footers</h1>");
        pdf.SaveAs("header-footer.pdf");
    }
}

HiQPdf 접근 방식은 Document.Header.Height를 설정하고, HtmlToPdfVariableElement 객체를 생성하며, 머리글/꼬리글 섹션에 대해 Add()를 호출합니다. 페이지 번호 자리 표시자는 {CrtPage}{PageCount} 구문을 사용합니다. IronPDF는 TextHeaderFooter 속성 및 다른 자리표시자 구문 {page}{total-pages}과 함께 더 깔끔한 CenterText 구성을 제공합니다. 헤더 및 푸터 문서를 참조하여 HTML 기반 헤더를 포함한 추가 옵션을 확인하세요.


중요한 마이그레이션 노트

플레이스홀더 구문 변경

페이지 번호가 있는 문서의 가장 중요한 변화는 플레이스홀더 구문입니다:

// HiQPdf placeholders
"Page {CrtPage} of {PageCount}"

// IronPDF placeholders
"Page {page} of {total-pages}"

완전한 플레이스홀더 매핑:

  • {CrtPage}{page}
  • {PageCount}{total-pages}

병합 메서드 차이

HiQPdf는 첫 번째 문서를 직접 수정합니다:

// HiQPdf: Modifies document1
document1.AddDocument(document2);
document1.WriteToFile("merged.pdf");

IronPDF는 새로 병합된 문서를 반환합니다:

// IronPDF: Returns new document
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");

3페이지 제한 없음

HiQPdf의 무료 버전은 출력량을 3페이지로 제한하고 워터마크를 추가합니다. IronPDF는 체험판 기간 동안 인위적인 제한 없이 완전한 문서를 생성합니다.

ChromePdfRenderer 재사용

HiQPdf에서는 변환마다 새로운 HtmlToPdf 인스턴스를 생성해야 할 수 있지만 IronPDF의 ChromePdfRenderer은 재사용해야 합니다:

// IronPDF: Create once, reuse
var renderer = new ChromePdfRenderer();
var pdf1 = renderer.RenderHtmlAsPdf(html1);
var pdf2 = renderer.RenderHtmlAsPdf(html2);

문제 해결

문제 1: HtmlToPdf를 찾을 수 없음

문제: HtmlToPdf 클래스는 IronPDF에 존재하지 않습니다.

해결책: ChromePdfRenderer으로 대체하십시오:

// HiQPdf
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();

// IronPDF
var renderer = new ChromePdfRenderer();

문제 2: ConvertHtmlToMemory를 찾을 수 없음

문제: ConvertHtmlToMemory() 메서드가 존재하지 않습니다.

해결책: RenderHtmlAsPdf() 사용:

// HiQPdf
byte[] pdfBytes = converter.ConvertHtmlToMemory(html, "");

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] pdfBytes = pdf.BinaryData;

문제 3: 페이지 번호 플레이스홀더가 작동하지 않음

문제: {CrtPage}{PageCount}가 출력에 문자 그대로 나타납니다.

솔루션: IronPDF의 플레이스홀더 구문으로 업데이트하십시오:

// HiQPdf syntax (won't work)
"Page {CrtPage} of {PageCount}"

// IronPDF syntax
"Page {page} of {total-pages}"

문제 4: HtmlToPdfVariableElement를 찾을 수 없음

문제: HtmlToPdfVariableElement 클래스가 존재하지 않습니다.

해결책: TextHeaderFooter 또는 HtmlHeaderFooter 사용:

// HiQPdf
HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div>Header</div>", "");
converter.Document.Header.Add(headerHtml);

// IronPDF
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    CenterText = "Header",
    FontSize = 12
};

마이그레이션 체크리스트

사전 마이그레이션

  • 코드베이스에서 모든 HiQPdf API 호출 인벤토리
  • 현재 페이지 크기, 여백 및 설정 문서화
  • 헤더/푸터 구성 및 플레이스홀더 식별
  • IronPDF 라이센스 키를 받으세요
  • 개발 환경에서 IronPDF 테스트

코드 마이그레이션

  • 모든 HiQPdf NuGet 패키지(모든 변형) 제거
  • IronPDF NuGet Install-Package: dotnet add package IronPdf
  • 네임스페이스 가져오기 업데이트
  • HtmlToPdf을(를) ChromePdfRenderer로 교체
  • ConvertHtmlToMemory()을(를) RenderHtmlAsPdf()로 변환
  • ConvertUrlToMemory()을(를) RenderUrlAsPdf()로 변환
  • 머리글/꼬리글 자리표시자 업데이트 ({CrtPage}{page}, {PageCount}{total-pages})
  • HtmlToPdfVariableElement을(를) TextHeaderFooter로 교체
  • 병합 작업 업데이트 (AddDocumentPdfDocument.Merge)
  • 시작 시 라이선스 키 초기화 추가

테스트

  • HTML을 PDF로 변환 테스트
  • URL을 PDF로 변환 테스트
  • 헤더/푸터 렌더링 검증
  • 페이지 번호 플레이스홀더 확인
  • PDF 병합 테스트
  • JavaScript가 많은 페이지 테스트 (이제 Chromium 지원)

마이그레이션 이후

  • 구성에서 HiQPdf 일련 번호 제거
  • 문서 업데이트
  • 렌더링 차이 모니터링

참고해 주세요: HiQPdf는 해당 소유자의 등록 상표입니다. 이 사이트는 HiQPdf 소프트웨어와 관련이 없으며, 승인을 받거나 후원을 받지 않았습니다. 모든 제품명, 로고 및 브랜드는 해당 소유자의 자산입니다. 비교는 정보 제공 목적으로만 사용되며, 작성 시점에 공개적으로 이용 가능한 정보를 반영합니다.
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일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.