C#에서 HiQPdf에서 IronPDF로 마이그레이션하는 방법
HiQPdf는 다음과 같은 몇 가지 문제점이 있는 상업용 HTML-to-PDF 라이브러리입니다:
-
제한적인 '무료' 버전: 무료 버전은 3페이지 제한과 많은 워터마크를 부과하여, 전체 문서 생성을 요구하는 생산 워크로드에서는 사실상 쓸모가 없습니다.
-
구형 WebKit 엔진: HiQPdf는 React, Angular, Vue와 같은 최신 JavaScript 프레임워크에 어려움을 겪는 구형 WebKit 기반의 렌더링 엔진을 사용합니다.
-
불명확한 .NET Core 지원: 문서에서 .NET Core / .NET 5+ 지원을 명확히 설명하지 않아, 현대적인 애플리케이션 개발에 불확실성을 초래합니다.
-
분할된 패키지: 다양한 플랫폼을 위한 여러 NuGet 패키지들(HiQPdf, HiQPdf.Free, HiQPdf.NetCore, HiQPdf.NetCore.x64, HiQPdf.Client)이 의존성 관리를 복잡하게 만듭니다.
-
복잡한 API: 직관적인 메서드가 아닌 구체적인 설정이 필요한 프로퍼티 연결
Document,Header,Footer. - 제한된 JavaScript 지원: WebKit 엔진은 최신 JavaScript 프레임워크와 복잡한 동적 레이아웃에서 생성된 콘텐츠를 렌더링하는 데 어려움을 겪습니다.
HiQPdfvsIronPDF비교
| 측면 | HiQPdf | IronPDF |
|---|---|---|
| 렌더링 엔진 | WebKit 기반 (구식) | 최신 크로뮴 |
| 무료 등급 | 3페이지 제한 + 워터마크 | 30일 완전 체험 |
| 최신 JS 지원 | 제한적 | 완전 (React, Angular, Vue) |
| .NET Core/5+ 지원 | 여러 패키지 필요 | 단일 통합 패키지 |
| API 설계 | 복잡한 속성 체인 | 깔끔한 유창한 API |
| CSS3 지원 | 부분적 | 지원됨 |
| 문서화 | 분산됨 | 포괄적 |
| NuGet 패키지 | 다양한 변형 | 단일 패키지 |
2025년과 2026년 동안 .NET 10과 C# 14를 도입할 계획인 팀에게 IronPDF는 최신 .NET 버전과 현대적인 Chromium 렌더링 엔진에 대한 문서화된 지원을 제공하여 미래 지향적인 기반을 제공합니다.
마이그레이션 복잡성 평가
기능별 예상 노력
| 기능 | 마이그레이션 복잡성 |
|---|---|
| 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() { ... };
시작하기 전에
필수 조건
- .NET 버전: IronPDF는 .NET Framework 4.6.2+ 및 .NET Core 3.1+ / .NET 5/6/7/8/9+를 지원합니다.
- 라이선스 키: ironpdf.com에서IronPDF라이선스 키를 얻으세요.
- HiQPdf 제거: 모든HiQPdfNuGet 패키지 변형을 제거할 계획
모든HiQPdf사용 식별
# FindHiQPdfnamespace 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" .
# FindHiQPdfnamespace 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" .
NuGet 패키지 변경 사항
# Remove allHiQPdfvariants
dotnet remove package HiQPdf
dotnet remove package HiQPdf.Free
dotnet remove package HiQPdf.NetCore
dotnet remove package HiQPdf.NetCore.x64
dotnet remove package HiQPdf.Client
# InstallIronPDF(single package for all platforms)
dotnet add package IronPdf
# Remove allHiQPdfvariants
dotnet remove package HiQPdf
dotnet remove package HiQPdf.Free
dotnet remove package HiQPdf.NetCore
dotnet remove package HiQPdf.NetCore.x64
dotnet remove package HiQPdf.Client
# InstallIronPDF(single package for all platforms)
dotnet add package IronPdf
빠른 시작 마이그레이션
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"
이후 (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";
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
완전한 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
이후 (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
HiQPdf 접근 방식은 HtmlToPdf 인스턴스를 생성하고, ConvertUrlToMemory() 또는 ConvertHtmlToMemory()을 호출하여 바이트 배열을 얻고, 그런 다음 수동으로 파일에 바이트를 작성해야 합니다. IronPDF의 ChromePdfRenderer은 PdfDocument 객체를 반환하며 직접 SaveAs() 메서드를 제공하여 수동 파일 작성 단계를 제거합니다. 현대적인 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
이후 (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
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
이후 (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
HiQPdf 접근 방식은 Document.Header.Height을 설정하고, HtmlToPdfVariableElement 객체를 생성하며, 본문/푸터 섹션에서 Add()을 호출해야 합니다. 페이지 번호 자리 표시자는 {CrtPage} 및 {PageCount} 구문을 사용합니다. IronPDF는 CenterText 프로퍼티가 포함된 깔끔한 TextHeaderFooter 구성을 제공하며, 자리 표시자 구문이 다릅니다: {page} 및 {total-pages}. 헤더 및 푸터 문서를 참조하여 HTML 기반 헤더를 포함한 추가 옵션을 확인하세요.
중요한 마이그레이션 노트
플레이스홀더 구문 변경
페이지 번호가 있는 문서의 가장 중요한 변화는 플레이스홀더 구문입니다:
//HiQPdfplaceholders
"Page {CrtPage} of {PageCount}"
//IronPDFplaceholders
"Page {page} of {total-pages}"
//HiQPdfplaceholders
"Page {CrtPage} of {PageCount}"
//IronPDFplaceholders
"Page {page} of {total-pages}"
'HiQPdfplaceholders
"Page {CrtPage} of {PageCount}"
'IronPDFplaceholders
"Page {page} of {total-pages}"
완전한 플레이스홀더 매핑:
{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")
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")
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)
문제 해결
문제 1: HtmlToPdf를 찾을 수 없음
문제: IronPDF에는 HtmlToPdf 클래스가 존재하지 않습니다.
해결책: 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()
문제 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
문제 3: 페이지 번호 플레이스홀더가 작동하지 않음
문제: {CrtPage} 및 {PageCount}이 출력에 문자 그대로 나타납니다.
솔루션: IronPDF의 플레이스홀더 구문으로 업데이트하십시오:
//HiQPdfsyntax (won't work)
"Page {CrtPage} of {PageCount}"
//IronPDFsyntax
"Page {page} of {total-pages}"
//HiQPdfsyntax (won't work)
"Page {CrtPage} of {PageCount}"
//IronPDFsyntax
"Page {page} of {total-pages}"
'HiQPdfsyntax (won't work)
"Page {CrtPage} of {PageCount}"
'IronPDFsyntax
"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
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
}
마이그레이션 체크리스트
사전 마이그레이션
- 코드베이스에서 모든HiQPdfAPI 호출 인벤토리
- 현재 페이지 크기, 여백 및 설정 문서화
- 헤더/푸터 구성 및 플레이스홀더 식별 -IronPDF라이센스 키를 받으세요
- 개발 환경에서IronPDF테스트
코드 마이그레이션
- 모든HiQPdfNuGet 패키지(모든 변형) 제거
- IronPdf NuGet Install-Package:
dotnet add package IronPdf - 네임스페이스 가져오기 업데이트
HtmlToPdf을ChromePdfRenderer로 대체하세요ConvertHtmlToMemory()을(를)RenderHtmlAsPdf()로 변환합니다ConvertUrlToMemory()을(를)RenderUrlAsPdf()로 변환합니다- 헤더/푸터 자리 표시자를 업데이트합니다 (
{CrtPage}→{page},{PageCount}→{total-pages}) HtmlToPdfVariableElement을TextHeaderFooter로 대체하세요- 병합 작업을 업데이트합니다 (
AddDocument→PdfDocument.Merge) - 시작 시 라이선스 키 초기화 추가
테스트
- HTML을 PDF로 변환 테스트
- URL을 PDF로 변환 테스트
- 헤더/푸터 렌더링 검증
- 페이지 번호 플레이스홀더 확인
- PDF 병합 테스트
- JavaScript가 많은 페이지 테스트 (이제 Chromium 지원)
마이그레이션 이후
- 구성에서HiQPdf일련 번호 제거
- 문서 업데이트
- 렌더링 차이 모니터링

