푸터 콘텐츠로 바로가기
마이그레이션 가이드

C#에서 HiQPdf에서 IronPDF로 마이그레이션하는 방법

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 비교

측면 HiQPdf IronPDF
렌더링 엔진 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() { ... };

시작하기 전에

필수 조건

  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" .
# 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
# 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";
HtmlToPdf converter = new HtmlToPdf();
converter.SerialNumber = "HIQPDF-SERIAL-NUMBER";
Dim converter As New HtmlToPdf()
converter.SerialNumber = "HIQPDF-SERIAL-NUMBER"
$vbLabelText   $csharpLabel

이후 (IronPDF):

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

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

// Before (HiQPdf)
using HiQPdf;

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

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;
Imports IronPdf
Imports IronPdf.Rendering
$vbLabelText   $csharpLabel

완전한 API 참조

주요 클래스 매핑

HiQPdf 클래스 IronPDF 클래스
HtmlToPdf ChromePdfRenderer
PdfDocument PdfDocument
HtmlToPdfVariableElement TextHeaderFooter 또는 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);
    }
}
// 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);
    }
}
Imports HiQPdf
Imports System

Class Program
    Shared Sub Main()
        Dim htmlToPdfConverter As New HtmlToPdf()
        Dim pdfBuffer As Byte() = htmlToPdfConverter.ConvertUrlToMemory("https://example.com")
        System.IO.File.WriteAllBytes("output.pdf", pdfBuffer)

        ' Convert HTML string
        Dim html As String = "<h1>Hello World</h1><p>This is a PDF document.</p>"
        Dim pdfFromHtml As Byte() = htmlToPdfConverter.ConvertHtmlToMemory(html, "")
        System.IO.File.WriteAllBytes("fromhtml.pdf", pdfFromHtml)
    End Sub
End Class
$vbLabelText   $csharpLabel

이후 (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");
    }
}
// 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");
    }
}
Imports IronPdf
Imports System

Module Program
    Sub Main()
        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
        pdf.SaveAs("output.pdf")

        ' Convert HTML string
        Dim html As String = "<h1>Hello World</h1><p>This is a PDF document.</p>"
        Dim pdfFromHtml = renderer.RenderHtmlAsPdf(html)
        pdfFromHtml.SaveAs("fromhtml.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
Imports HiQPdf
Imports System

Module Program
    Sub Main()
        ' Create first PDF
        Dim converter1 As New HtmlToPdf()
        Dim pdf1 As Byte() = converter1.ConvertHtmlToMemory("<h1>First Document</h1>", "")
        System.IO.File.WriteAllBytes("doc1.pdf", pdf1)

        ' Create second PDF
        Dim converter2 As New HtmlToPdf()
        Dim pdf2 As Byte() = converter2.ConvertHtmlToMemory("<h1>Second Document</h1>", "")
        System.IO.File.WriteAllBytes("doc2.pdf", pdf2)

        ' Merge PDFs
        Dim document1 As PdfDocument = PdfDocument.FromFile("doc1.pdf")
        Dim document2 As PdfDocument = PdfDocument.FromFile("doc2.pdf")
        document1.AddDocument(document2)
        document1.WriteToFile("merged.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

이후 (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");
    }
}
// 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");
    }
}
Imports IronPdf
Imports System

Module Program
    Sub Main()
        Dim renderer = New ChromePdfRenderer()

        ' Create first PDF
        Dim pdf1 = renderer.RenderHtmlAsPdf("<h1>First Document</h1>")
        pdf1.SaveAs("doc1.pdf")

        ' Create second PDF
        Dim pdf2 = renderer.RenderHtmlAsPdf("<h1>Second Document</h1>")
        pdf2.SaveAs("doc2.pdf")

        ' Merge PDFs
        Dim merged = PdfDocument.Merge(pdf1, pdf2)
        merged.SaveAs("merged.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

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);
    }
}
// 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);
    }
}
Imports HiQPdf
Imports System

Class Program
    Shared Sub Main()
        Dim htmlToPdfConverter As New HtmlToPdf()

        ' Add header
        htmlToPdfConverter.Document.Header.Height = 50
        Dim headerHtml As 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
        Dim footerHtml As New HtmlToPdfVariableElement("<div style='text-align:center'>Page {CrtPage} of {PageCount}</div>", "")
        htmlToPdfConverter.Document.Footer.Add(footerHtml)

        Dim pdfBuffer As Byte() = htmlToPdfConverter.ConvertHtmlToMemory("<h1>Document with Headers and Footers</h1>", "")
        System.IO.File.WriteAllBytes("header-footer.pdf", pdfBuffer)
    End Sub
End Class
$vbLabelText   $csharpLabel

이후 (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");
    }
}
// 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");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System

Class Program
    Shared Sub Main()
        Dim renderer As New ChromePdfRenderer()

        ' Configure header and footer
        renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
            .CenterText = "Page Header",
            .FontSize = 12
        }

        renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
            .CenterText = "Page {page} of {total-pages}",
            .FontSize = 10
        }

        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Document with Headers and Footers</h1>")
        pdf.SaveAs("header-footer.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

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}"
// HiQPdf placeholders
"Page {CrtPage} of {PageCount}"

// IronPDF placeholders
"Page {page} of {total-pages}"
' HiQPdf placeholders
"Page {CrtPage} of {PageCount}"

' IronPDF placeholders
"Page {page} of {total-pages}"
$vbLabelText   $csharpLabel

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

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

병합 메서드 차이

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

// HiQPdf: Modifies document1
document1.AddDocument(document2);
document1.WriteToFile("merged.pdf");
// HiQPdf: Modifies document1
document1.AddDocument(document2);
document1.WriteToFile("merged.pdf");
' HiQPdf: Modifies document1
document1.AddDocument(document2)
document1.WriteToFile("merged.pdf")
$vbLabelText   $csharpLabel

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

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

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);
// IronPDF: Create once, reuse
var renderer = new ChromePdfRenderer();
var pdf1 = renderer.RenderHtmlAsPdf(html1);
var pdf2 = renderer.RenderHtmlAsPdf(html2);
' IronPDF: Create once, reuse
Dim renderer As New ChromePdfRenderer()
Dim pdf1 = renderer.RenderHtmlAsPdf(html1)
Dim pdf2 = renderer.RenderHtmlAsPdf(html2)
$vbLabelText   $csharpLabel

문제 해결

문제 1: HtmlToPdf를 찾을 수 없음

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

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

// HiQPdf
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();

// IronPDF
var renderer = new ChromePdfRenderer();
// HiQPdf
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();

// IronPDF
var renderer = new ChromePdfRenderer();
' HiQPdf
Dim htmlToPdfConverter As New HtmlToPdf()

' IronPDF
Dim renderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

문제 2: ConvertHtmlToMemory를 찾을 수 없음

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

해결책: RenderHtmlAsPdf() 사용:

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

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] pdfBytes = pdf.BinaryData;
// HiQPdf
byte[] pdfBytes = converter.ConvertHtmlToMemory(html, "");

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] pdfBytes = pdf.BinaryData;
' HiQPdf
Dim pdfBytes As Byte() = converter.ConvertHtmlToMemory(html, "")

' IronPDF
Dim pdf = renderer.RenderHtmlAsPdf(html)
Dim pdfBytes As Byte() = pdf.BinaryData
$vbLabelText   $csharpLabel

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

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

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

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

// IronPDF syntax
"Page {page} of {total-pages}"
// HiQPdf syntax (won't work)
"Page {CrtPage} of {PageCount}"

// IronPDF syntax
"Page {page} of {total-pages}"
' HiQPdf syntax (won't work)
"Page {CrtPage} of {PageCount}"

' IronPDF syntax
"Page {page} of {total-pages}"
$vbLabelText   $csharpLabel

문제 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
HtmlToPdfVariableElement headerHtml = new HtmlToPdfVariableElement("<div>Header</div>", "");
converter.Document.Header.Add(headerHtml);

// IronPDF
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    CenterText = "Header",
    FontSize = 12
};
' HiQPdf
Dim headerHtml As New HtmlToPdfVariableElement("<div>Header</div>", "")
converter.Document.Header.Add(headerHtml)

' IronPDF
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
    .CenterText = "Header",
    .FontSize = 12
}
$vbLabelText   $csharpLabel

마이그레이션 체크리스트

사전 마이그레이션

  • 코드베이스에서 모든 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를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해