C#에서 HiQPdf에서 IronPDF로 마이그레이션하는 방법
HiQPdf는 HiQPdf Software에서 발행한 상업용 HTML-to-PDF 라이브러리입니다 (현재 HiQPdf 18.0.2, 2026년 2월 기준 nuget.org). 개발자들이 대안을 평가하는 일반적인 이유:
-
제한적인 무료 버전:
HiQPdf.Free는 문서당 최대 3페이지로 출력을 제한합니다 — 전체 문서 생성을 요구하는 프로덕션 작업보다는 평가에 유용합니다. -
클래식 라인의 WebKit: 클래식
HiQPdf패키지는 최신 JavaScript 프레임워크에서 문제가 발생할 수 있는 구버전의 WebKit 기반 엔진을 사용합니다. HiQPdf는 Chromium 기반의 변형 (HiQPdf.NG/HiQPdf.Chromium.Windows, Linux 빌드 포함)을 제공하지만 대부분의 기존 코드는 클래식 엔진을 대상으로 합니다. -
.NET 지원이 패키지에 걸쳐 확산됨: .NET Framework, .NET Core, .NET Standard 2.0이 모두 지원되지만, 별도의 NuGet ID (HiQPdf, HiQPdf_NetCore, HiQPdf.NG, HiQPdf.Chromium.Windows, HiQPdf_x64)로 분할되어 선택해야 합니다.
-
분산된 패키지: 다양한 플랫폼을 위한 여러 NuGet ID가 존재합니다 (
HiQPdf,HiQPdf.Free,HiQPdf_NetCore,HiQPdf.NG,HiQPdf.Chromium.Windows), 이는 의존성 관리를 복잡하게 만듭니다. -
상세한 구성: 유창한 렌더링 옵션 API 대신
Document,Header,Footer속성 체인을 통해 설정이 필요합니다. - 개발자 라이선스 비용 추가: $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() { ... };
시작하기 전에
필수 조건
- .NET 버전: IronPDF는 .NET Framework 4.6.2+ 및 .NET Core 3.1+ / .NET 5+ 를 지원합니다
- 라이선스 키: ironpdf.com에서 IronPDF 라이선스 키를 얻으세요.
- 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" .
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
빠른 시작 마이그레이션
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는 직접 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
이후 (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는 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}"
완전한 플레이스홀더 매핑:
{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를 찾을 수 없음
문제: 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()
문제 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의 플레이스홀더 구문으로 업데이트하십시오:
// 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}"
문제 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
}
마이그레이션 체크리스트
사전 마이그레이션
- 코드베이스에서 모든 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로 교체- 병합 작업 업데이트 (
AddDocument→PdfDocument.Merge) - 시작 시 라이선스 키 초기화 추가
테스트
- HTML을 PDF로 변환 테스트
- URL을 PDF로 변환 테스트
- 헤더/푸터 렌더링 검증
- 페이지 번호 플레이스홀더 확인
- PDF 병합 테스트
- JavaScript가 많은 페이지 테스트 (이제 Chromium 지원)
마이그레이션 이후
- 구성에서 HiQPdf 일련 번호 제거
- 문서 업데이트
- 렌더링 차이 모니터링

