C#에서 PdfiumViewer에서 IronPDF로 마이그레이션하는 방법
PdfiumViewer에서 IronPDF로 마이그레이션은 네이티브 바이너리 종속성 및 페이지 수준의 텍스트 추출만을 가진 Google's PDFium 주위의 Windows Forms 뷰어/렌더러 래퍼에서 전체 .NET 응용 프로그램 유형을 포괄하는 PDF 생성, 조작, 전체 텍스트 추출 및 렌더링을 처리하는 포괄적인 PDF 솔루션으로 .NET PDF 워크플로를 이동시킵니다. 이 가이드는 플랫폼 제한을 제거하면서 PdfiumViewer에 의해 설계되지 않은 기능을 추가하는 완전한 스텝 바이 스텝 마이그레이션 경로를 제공합니다.
PdfiumViewer에서 IronPDF로 마이그레이션해야 하는 이유
PdfiumViewer이해하기
PdfiumViewer (NuGet 패키지 PdfiumViewer, 레포 pvginkel/PdfiumViewer, Apache 2.0)는 Google's PDFium 렌더링 엔진을 중심으로 하는 .NET 래퍼입니다 — Chrome 내부에서 사용되는 것과 같은 엔진으로 Windows Forms 애플리케이션을 위한 PDF 보기와 래스터화를 제공하는 엔진입니다.
PdfiumViewer는 뷰어 및 렌더러이며, 생성기는 아닙니다. PDF 생성, 편집 또는 조작을 지원하지 않으며, 텍스트 API(PdfDocument.GetPdfText(int page))는 레이아웃이나 단어별 좌표 없이 원시 페이지 텍스트를 반환합니다. 업스트림 레포는 2019년 8월 2일에 유지보수자에 의해 아카이브되었으며, 마지막 NuGet 릴리스 (2.13.0)는 2017년 11월 6일에 출시되었습니다 — 기존 코드는 계속 작동하지만, 추가 수정, .NET 6+ 업데이트, 또는 CVE 패치를 기대할 수 없습니다.
중요한 PdfiumViewer의 제약 사항
-
뷰어 / 렌더러만: HTML, 이미지에서 PDF를 생성할 수 없습니다. PdfiumViewer의 기능은 보기 및 래스터화에 제한됩니다 — PDF 생성, 편집, 병합 또는 기타 조작적 기능을 지원하지 않습니다.
-
Windows Forms / Windows 전용:
System.Drawing과 WinForms 제어를 중심으로 구축됨; 다른 UI 프레임워크를 위해 설계되지 않았으며System.Drawing.Common는 .NET 6+에서 Windows 전용입니다. -
PDF 조작 불가: PDF 콘텐츠를 병합, 분할, 또는 수정할 수 없습니다.
-
네이티브 바이너리 종속성: 플랫폼별 PDFium 바이너리는
PdfiumViewer.Native.x86.v8-xfa및PdfiumViewer.Native.x86_64.v8-xfa(V8 없음 / XFA 없음 변형)을 통해 필요합니다. -
아카이브된 업스트림: 2019-08-02 레포 아카이브; 마지막 NuGet 릴리스 2.13.0 (2017-11-06); 더 이상의 업데이트 없음.
-
페이지 수준 텍스트 추출만:
PdfDocument.GetPdfText(int page)는 원시 페이지 텍스트를 반환합니다 — 단어별 좌표, 레이아웃 재구성, 이미지 전용 PDF에 대한 OCR은 없습니다. -
HTML을 PDF로 변환할 수 없음: PDFium은 HTML을 파싱하지 않습니다. HTML에서 PDF를 생성하려면 별도의 생성기 (예: wkhtmltopdf, IronPDF, PuppeteerSharp 등)를 사용해야 하며, 그런 다음 PdfiumViewer로 결과를 로드하여 표시하거나 래스터화할 수 있습니다.
-
헤더/푸터 없음: 페이지 번호 또는 반복되는 콘텐츠를 추가할 수 없습니다.
-
워터마크 없음: 오버레이로 문서에 스탬핑할 수 없습니다.
- 보안 기능 없음: PDF를 암호화하거나 암호 보호할 수 없습니다.
PdfiumViewer와IronPDF비교
| 측면 | PdfiumViewer | IronPDF |
|---|---|---|
| 주요 초점 | WinForms PDF 뷰어 | 완전한 PDF 솔루션 |
| 라이선스 | Apache 2.0 | 상업적 |
| PDF 생성 | ✗ | ✓(HTML, URL, 이미지) |
| PDF 조작 | ✗ | ✓(병합, 분할, 편집) |
| HTML to PDF | ✗ | ✓(Chromium 엔진) |
| 텍스트 추출 | 페이지 수준 전용 (GetPdfText) |
전체 (레아웃 있는, 페이지 수준에서) |
| 워터마크 | ✗ | ✓ |
| 헤더/푸터 | ✗ | ✓ |
| 보안 | ✗ | ✓ |
| 내장 뷰어 | ✓ | ✗ (백엔드 초점) |
| 플랫폼 지원 | Windows / WinForms 전용 | 콘솔, 웹, 데스크탑, 크로스 플랫폼 |
| 프레임워크 지원 | .NET Framework 2.0+ | .NET Framework, Core, 5+ |
| 유지보수 | 2019-08-02 아카이브 (마지막 릴리스 2017-11-06) | 활성 |
최신 .NET을 타겟으로 하는 팀에게 IronPDF는 포괄적이고, 적극적으로 유지보수되는 기반을 제공하며, 모든 .NET 응용 프로그램 유형에 대해 작동할 수 있으며, Windows Forms 제한 및 네이티브 바이너리 복잡성을 제거합니다.
시작하기 전에
필수 조건
- .NET 환경: .NET Framework 4.6.2+ 또는 .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet 접근 권한: NuGet 패키지를 설치할 수 있는 능력
- IronPDF 라이선스: ironpdf.com에서 라이선스 키를 획득하세요
NuGet 패키지 변경 사항
# RemovePdfiumViewerpackages
dotnet remove package PdfiumViewer
dotnet remove package PdfiumViewer.Native.x86.v8-xfa
dotnet remove package PdfiumViewer.Native.x86_64.v8-xfa
# Install IronPDF
dotnet add package IronPdf
# RemovePdfiumViewerpackages
dotnet remove package PdfiumViewer
dotnet remove package PdfiumViewer.Native.x86.v8-xfa
dotnet remove package PdfiumViewer.Native.x86_64.v8-xfa
# Install IronPDF
dotnet add package IronPdf
라이선스 구성
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
PdfiumViewer사용 식별
# FindPdfiumViewerusage
grep -r "PdfiumViewer\|PdfViewer\|PdfDocument\.Load" --include="*.cs" .
# Find native binary references
grep -r "pdfium\.dll\|Native\.x86\|Native\.x64" --include="*.csproj" .
# Find viewer control usage
grep -r "PdfViewer" --include="*.cs" --include="*.Designer.cs" .
# FindPdfiumViewerusage
grep -r "PdfiumViewer\|PdfViewer\|PdfDocument\.Load" --include="*.cs" .
# Find native binary references
grep -r "pdfium\.dll\|Native\.x86\|Native\.x64" --include="*.csproj" .
# Find viewer control usage
grep -r "PdfViewer" --include="*.cs" --include="*.Designer.cs" .
완전한 API 참조
네임스페이스 변경
// PdfiumViewer
using PdfiumViewer;
// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
// PdfiumViewer
using PdfiumViewer;
// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
Imports PdfiumViewer
Imports IronPdf
Imports IronPdf.Rendering
Imports IronPdf.Editing
핵심 클래스 매핑
| PdfiumViewer | IronPDF |
|---|---|
PdfDocument |
PdfDocument |
PdfViewer |
(동등한 항목 없음) |
PdfRenderer |
ChromePdfRenderer |
| (사용 불가) | HtmlHeaderFooter |
문서 로딩 매핑
| PdfiumViewer | IronPDF |
|---|---|
PdfDocument.Load(path) |
PdfDocument.FromFile(path) |
PdfDocument.Load(stream) |
PdfDocument.FromStream(stream) |
PdfDocument.Load(path, password) |
PdfDocument.FromFile(path, password) |
| (바이트 오버로드 없음 — MemoryStream에 감쌈) | PdfDocument.FromBinaryData(bytes) |
문서 속성 매핑
| PdfiumViewer | IronPDF |
|---|---|
document.PageCount |
document.PageCount |
document.PageSizes[i] |
document.Pages[i].Width/Height |
document.GetPdfText(pageIndex) |
pdf.Pages[pageIndex].Text |
페이지 렌더링 매핑
| PdfiumViewer | IronPDF |
|---|---|
document.Render(pageIndex, dpiX, dpiY, forPrinting) |
pdf.ToBitmap(pageIndex) |
document.Render(pageIndex, width, height, dpiX, dpiY, flags) |
pdf.RasterizeToImageFiles(path, dpi) |
문서 저장 매핑
| PdfiumViewer | IronPDF |
|---|---|
document.Save(path) |
pdf.SaveAs(path) |
document.Save(stream) |
new MemoryStream(pdf.BinaryData) |
| (사용 불가) | pdf.BinaryData (반환 byte[]) |
PdfiumViewer에 비해 신기능 혹은 대폭 확장된 기능
| IronPDF기능 | 설명 |
|---|---|
pdf.ExtractAllText() |
전체 문서 텍스트 추출 (PdfiumViewer는 페이지 수준 GetPdfText만 제공) |
pdf.ExtractTextFromPage(index) |
특정 페이지에서 텍스트 추출 |
ChromePdfRenderer.RenderHtmlAsPdf() |
HTML에서 생성 |
ChromePdfRenderer.RenderUrlAsPdf() |
URL에서 생성 |
PdfDocument.Merge() |
PDF 병합 |
pdf.CopyPages() |
페이지 추출 |
pdf.RemovePages() |
페이지 삭제 |
pdf.ApplyWatermark() |
워터마크 추가 |
pdf.AddHtmlHeaders() |
헤더 추가 |
pdf.AddHtmlFooters() |
푸터 추가 |
pdf.SecuritySettings |
암호 보호 |
pdf.Form |
양식 채우기 |
코드 마이그레이션 예제
예제 1: PDF에서 텍스트 추출
이전 (PdfiumViewer):
// NuGet: Install-Package PdfiumViewer
// Install-Package PdfiumViewer.Native.x86.v8-xfa
// Install-Package PdfiumViewer.Native.x86_64.v8-xfa
using PdfiumViewer;
using System;
using System.Text;
string pdfPath = "document.pdf";
//PdfiumViewerexposes page-level text extraction via
// PdfDocument.GetPdfText(int page). It returns raw page text only —
// no layout, no per-word coordinates, no OCR for image-only pages.
using (var document = PdfDocument.Load(pdfPath))
{
int pageCount = document.PageCount;
Console.WriteLine($"Total pages: {pageCount}");
var sb = new StringBuilder();
for (int i = 0; i < pageCount; i++)
{
string pageText = document.GetPdfText(i);
sb.AppendLine($"--- Page {i + 1} ---");
sb.AppendLine(pageText);
}
Console.WriteLine(sb.ToString());
}
// NuGet: Install-Package PdfiumViewer
// Install-Package PdfiumViewer.Native.x86.v8-xfa
// Install-Package PdfiumViewer.Native.x86_64.v8-xfa
using PdfiumViewer;
using System;
using System.Text;
string pdfPath = "document.pdf";
//PdfiumViewerexposes page-level text extraction via
// PdfDocument.GetPdfText(int page). It returns raw page text only —
// no layout, no per-word coordinates, no OCR for image-only pages.
using (var document = PdfDocument.Load(pdfPath))
{
int pageCount = document.PageCount;
Console.WriteLine($"Total pages: {pageCount}");
var sb = new StringBuilder();
for (int i = 0; i < pageCount; i++)
{
string pageText = document.GetPdfText(i);
sb.AppendLine($"--- Page {i + 1} ---");
sb.AppendLine(pageText);
}
Console.WriteLine(sb.ToString());
}
Imports PdfiumViewer
Imports System
Imports System.Text
Dim pdfPath As String = "document.pdf"
' PdfiumViewer exposes page-level text extraction via
' PdfDocument.GetPdfText(Integer page). It returns raw page text only —
' no layout, no per-word coordinates, no OCR for image-only pages.
Using document As PdfDocument = PdfDocument.Load(pdfPath)
Dim pageCount As Integer = document.PageCount
Console.WriteLine($"Total pages: {pageCount}")
Dim sb As New StringBuilder()
For i As Integer = 0 To pageCount - 1
Dim pageText As String = document.GetPdfText(i)
sb.AppendLine($"--- Page {i + 1} ---")
sb.AppendLine(pageText)
Next
Console.WriteLine(sb.ToString())
End Using
이후 (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
string pdfPath = "document.pdf";
// Open and extract text from PDF
PdfDocument pdf = PdfDocument.FromFile(pdfPath);
// Extract text from all pages
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted Text:");
Console.WriteLine(allText);
// Extract text from specific page
string pageText = pdf.ExtractTextFromPage(0);
Console.WriteLine($"\nFirst page text: {pageText}");
Console.WriteLine($"\nTotal pages: {pdf.PageCount}");
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
string pdfPath = "document.pdf";
// Open and extract text from PDF
PdfDocument pdf = PdfDocument.FromFile(pdfPath);
// Extract text from all pages
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted Text:");
Console.WriteLine(allText);
// Extract text from specific page
string pageText = pdf.ExtractTextFromPage(0);
Console.WriteLine($"\nFirst page text: {pageText}");
Console.WriteLine($"\nTotal pages: {pdf.PageCount}");
Imports IronPdf
Imports System
Module Program
Sub Main()
Dim pdfPath As String = "document.pdf"
' Open and extract text from PDF
Dim pdf As PdfDocument = PdfDocument.FromFile(pdfPath)
' Extract text from all pages
Dim allText As String = pdf.ExtractAllText()
Console.WriteLine("Extracted Text:")
Console.WriteLine(allText)
' Extract text from specific page
Dim pageText As String = pdf.ExtractTextFromPage(0)
Console.WriteLine(vbCrLf & "First page text: " & pageText)
Console.WriteLine(vbCrLf & "Total pages: " & pdf.PageCount)
End Sub
End Module
PdfiumViewer의 텍스트 API는 PdfDocument.GetPdfText(int page) — 페이지 수준 원시 텍스트만, 레이아웃 재구성 없음, 단어별 좌표 없음, 이미지 전용 PDF에 대한 OCR 백업 없음. 평면 텍스트 덤프를 넘어서는 어떤 것도 맞춤형 레이아웃 휴리스틱 또는 다른 라이브러리를 필요로 합니다.
IronPDF는 ExtractAllText()를 통한 전체 문서 추출 및 ExtractTextFromPage(index)(또는 pdf.Pages[index].Text)를 통한 페이지별 추출을 제공합니다. 텍스트 추출 문서에서 추가 옵션을 참조하세요.
예제 2: HTML을 PDF로 변환
이전 (PdfiumViewer):
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
//PdfiumViewerwraps Google's PDFium — a renderer, not a generator.
// PDFium does not parse HTML, soPdfiumViewerhas no HTML-to-PDF path.
// To produce a PDF from HTML you need a separate generator (wkhtmltopdf,
// IronPDF, PuppeteerSharp, etc.), then load the result with PdfiumViewer
// for display or rasterization.
string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";
// Pretend "output.pdf" was produced by another tool — load and render it.
string existingPdfPath = "output.pdf";
using (var document = PdfDocument.Load(existingPdfPath))
{
Console.WriteLine($"Loaded PDF with {document.PageCount} page(s).");
// PdfDocument.Render(int page, float dpiX, float dpiY, bool forPrinting)
var image = document.Render(0, 300, 300, true);
Console.WriteLine("Rendered page 1 at 300 DPI.");
}
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
//PdfiumViewerwraps Google's PDFium — a renderer, not a generator.
// PDFium does not parse HTML, soPdfiumViewerhas no HTML-to-PDF path.
// To produce a PDF from HTML you need a separate generator (wkhtmltopdf,
// IronPDF, PuppeteerSharp, etc.), then load the result with PdfiumViewer
// for display or rasterization.
string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";
// Pretend "output.pdf" was produced by another tool — load and render it.
string existingPdfPath = "output.pdf";
using (var document = PdfDocument.Load(existingPdfPath))
{
Console.WriteLine($"Loaded PDF with {document.PageCount} page(s).");
// PdfDocument.Render(int page, float dpiX, float dpiY, bool forPrinting)
var image = document.Render(0, 300, 300, true);
Console.WriteLine("Rendered page 1 at 300 DPI.");
}
Imports PdfiumViewer
Imports System
' PdfiumViewer wraps Google's PDFium — a renderer, not a generator.
' PDFium does not parse HTML, so PdfiumViewer has no HTML-to-PDF path.
' To produce a PDF from HTML you need a separate generator (wkhtmltopdf,
' IronPDF, PuppeteerSharp, etc.), then load the result with PdfiumViewer
' for display or rasterization.
Dim htmlContent As String = "<h1>Hello World</h1><p>This is a test document.</p>"
' Pretend "output.pdf" was produced by another tool — load and render it.
Dim existingPdfPath As String = "output.pdf"
Using document As PdfDocument = PdfDocument.Load(existingPdfPath)
Console.WriteLine($"Loaded PDF with {document.PageCount} page(s).")
' PdfDocument.Render(int page, float dpiX, float dpiY, bool forPrinting)
Dim image = document.Render(0, 300, 300, True)
Console.WriteLine("Rendered page 1 at 300 DPI.")
End Using
이후 (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";
// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";
// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
Imports IronPdf
Imports System
Module Program
Sub Main()
Dim htmlContent As String = "<h1>Hello World</h1><p>This is a test document.</p>"
' Create a PDF from HTML string
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
' Save the PDF
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End Module
이것이 가장 큰 기능 격차입니다. PDFium은 HTML을 파싱하지 않기 때문에 PdfiumViewer에서는 HTML에서 PDF로의 경로가 없습니다 — 다른 도구로 PDF를 먼저 생성하고, PdfiumViewer를 사용해 이를 표시하거나 래스터화해야 합니다.
IronPDF는 HTML, CSS, JavaScript 렌더링용으로 크로미엄 엔진을 내부적으로 사용하는 ChromePdfRenderer를 통한 네이티브 HTML to PDF 변환을 제공합니다. RenderHtmlAsPdf()는 HTML 문자열을 변환하고, RenderUrlAsPdf()는 URL을 캡처하고, RenderHtmlFileAsPdf()는 HTML 파일을 읽습니다. HTML에서 PDF로의 문서에서 포괄적인 예제를 참조하세요.
예제 3: PDF를 이미지로 변환
이전 (PdfiumViewer):
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.Drawing;
using System.Drawing.Imaging;
string pdfPath = "document.pdf";
string outputImage = "page1.png";
// PDFiumViewer excels at rendering PDFs to images
using (var document = PdfDocument.Load(pdfPath))
{
// Render first page at 300 DPI
int dpi = 300;
using (var image = document.Render(0, dpi, dpi, true))
{
// Save as PNG
image.Save(outputImage, ImageFormat.Png);
Console.WriteLine($"Page rendered to {outputImage}");
}
// Render all pages
for (int i = 0; i < document.PageCount; i++)
{
using (var pageImage = document.Render(i, 150, 150, true))
{
pageImage.Save($"page_{i + 1}.png", ImageFormat.Png);
}
}
}
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.Drawing;
using System.Drawing.Imaging;
string pdfPath = "document.pdf";
string outputImage = "page1.png";
// PDFiumViewer excels at rendering PDFs to images
using (var document = PdfDocument.Load(pdfPath))
{
// Render first page at 300 DPI
int dpi = 300;
using (var image = document.Render(0, dpi, dpi, true))
{
// Save as PNG
image.Save(outputImage, ImageFormat.Png);
Console.WriteLine($"Page rendered to {outputImage}");
}
// Render all pages
for (int i = 0; i < document.PageCount; i++)
{
using (var pageImage = document.Render(i, 150, 150, true))
{
pageImage.Save($"page_{i + 1}.png", ImageFormat.Png);
}
}
}
Imports PdfiumViewer
Imports System
Imports System.Drawing
Imports System.Drawing.Imaging
Module Module1
Sub Main()
Dim pdfPath As String = "document.pdf"
Dim outputImage As String = "page1.png"
' PDFiumViewer excels at rendering PDFs to images
Using document = PdfDocument.Load(pdfPath)
' Render first page at 300 DPI
Dim dpi As Integer = 300
Using image = document.Render(0, dpi, dpi, True)
' Save as PNG
image.Save(outputImage, ImageFormat.Png)
Console.WriteLine($"Page rendered to {outputImage}")
End Using
' Render all pages
For i As Integer = 0 To document.PageCount - 1
Using pageImage = document.Render(i, 150, 150, True)
pageImage.Save($"page_{i + 1}.png", ImageFormat.Png)
End Using
Next
End Using
End Sub
End Module
이후 (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Linq;
string pdfPath = "document.pdf";
string outputImage = "page1.png";
// Open PDF and convert to images
PdfDocument pdf = PdfDocument.FromFile(pdfPath);
// Convert first page to image
var firstPageImage = pdf.ToBitmap(0);
firstPageImage[0].Save(outputImage);
Console.WriteLine($"Page rendered to {outputImage}");
// Convert all pages to images
var allPageImages = pdf.ToBitmap();
for (int i = 0; i < allPageImages.Length; i++)
{
allPageImages[i].Save($"page_{i + 1}.png");
Console.WriteLine($"Saved page {i + 1}");
}
Console.WriteLine($"Total pages converted: {pdf.PageCount}");
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Linq;
string pdfPath = "document.pdf";
string outputImage = "page1.png";
// Open PDF and convert to images
PdfDocument pdf = PdfDocument.FromFile(pdfPath);
// Convert first page to image
var firstPageImage = pdf.ToBitmap(0);
firstPageImage[0].Save(outputImage);
Console.WriteLine($"Page rendered to {outputImage}");
// Convert all pages to images
var allPageImages = pdf.ToBitmap();
for (int i = 0; i < allPageImages.Length; i++)
{
allPageImages[i].Save($"page_{i + 1}.png");
Console.WriteLine($"Saved page {i + 1}");
}
Console.WriteLine($"Total pages converted: {pdf.PageCount}");
Imports IronPdf
Imports System
Imports System.Linq
Module Module1
Sub Main()
Dim pdfPath As String = "document.pdf"
Dim outputImage As String = "page1.png"
' Open PDF and convert to images
Dim pdf As PdfDocument = PdfDocument.FromFile(pdfPath)
' Convert first page to image
Dim firstPageImage = pdf.ToBitmap(0)
firstPageImage(0).Save(outputImage)
Console.WriteLine($"Page rendered to {outputImage}")
' Convert all pages to images
Dim allPageImages = pdf.ToBitmap()
For i As Integer = 0 To allPageImages.Length - 1
allPageImages(i).Save($"page_{i + 1}.png")
Console.WriteLine($"Saved page {i + 1}")
Next
Console.WriteLine($"Total pages converted: {pdf.PageCount}")
End Sub
End Module
이것은 PdfiumViewer의 주요 강점 중 하나인 PDF 이미지를 렌더링하는 곳입니다. 두 라이브러리 모두 이 작업을 효과적으로 처리하지만 다른 패턴을 사용합니다.
PdfiumViewer는 document.Render(pageIndex, dpiX, dpiY, forPrinting) 및 적절한 처리를 위한 중첩된 using 문을 사용합니다. 당신은 System.Drawing과 System.Drawing.Imaging를 ImageFormat 열거형을 위해 가져와야 합니다.
IronPDF는 비트맵 배열을 반환하는 pdf.ToBitmap(pageIndex)을 사용합니다. 중첩된 처분 요구 사항이 없는 더 간단한 패턴입니다. 배치 작업의 경우 매개변수 없이 ToBitmap()를 호출하면 모든 페이지를 반환합니다. 직접 파일 출력을 위해 RasterizeToImageFiles()을 사용할 수도 있습니다. 추가 렌더링 옵션을 위해 PDF에서 이미지로의 문서화를 참조하세요.
네이티브 종속성 제거
PdfiumViewer에서 IronPDF로의 전환의 주요 이점 중 하나는 네이티브 바이너리 관리를 제거하는 것입니다.
이전 (PdfiumViewer) - 복잡한 배포
MyApp/
├── bin/
│ ├── MyApp.dll
│ ├── PdfiumViewer.dll
│ ├── x86/
│ │ └── pdfium.dll
│ └── x64/
│ └── pdfium.dll
이후 (IronPDF) - 간결한 배포
MyApp/
├── bin/
│ ├── MyApp.dll
│ └── IronPdf.dll # 모든 것이 포함됨
네이티브 바이너리 참조 제거
# Delete native PDFium binaries
rm -rf x86/x64/runtimes/
# Remove from .csproj native package references
# <PackageReference Include="PdfiumViewer.Native.x86.v8-xfa" />
# <PackageReference Include="PdfiumViewer.Native.x64.v8-xfa" />
# Delete native PDFium binaries
rm -rf x86/x64/runtimes/
# Remove from .csproj native package references
# <PackageReference Include="PdfiumViewer.Native.x86.v8-xfa" />
# <PackageReference Include="PdfiumViewer.Native.x64.v8-xfa" />
중요한 마이그레이션 노트
내장된 뷰어 제어 없음
IronPDF는 백엔드 중심으로 시각적 PDF 뷰어 컨트롤을 포함하지 않습니다:
// PdfiumViewer: Built-in viewer control
pdfViewer.Document = document;
// IronPDF: Use external viewer or web-based approach
pdf.SaveAs(tempPath);
Process.Start(new ProcessStartInfo(tempPath) { UseShellExecute = true });
// PdfiumViewer: Built-in viewer control
pdfViewer.Document = document;
// IronPDF: Use external viewer or web-based approach
pdf.SaveAs(tempPath);
Process.Start(new ProcessStartInfo(tempPath) { UseShellExecute = true });
' PdfiumViewer: Built-in viewer control
pdfViewer.Document = document
' IronPDF: Use external viewer or web-based approach
pdf.SaveAs(tempPath)
Process.Start(New ProcessStartInfo(tempPath) With {.UseShellExecute = True})
뷰잉 필요에 따라 Process.Start()를 사용하여 기본 PDF 뷰어, PDF 경로가 있는 WebBrowser 컨트롤 또는 Syncfusion, DevExpress, Telerik과 같은 타사 뷰어 컨트롤로 여는 것을 고려하십시오.
문서 로딩 방법 변경
// PdfiumViewer
PdfDocument.Load(path)
// IronPDF
PdfDocument.FromFile(path)
// PdfiumViewer
PdfDocument.Load(path)
// IronPDF
PdfDocument.FromFile(path)
' PdfiumViewer
PdfDocument.Load(path)
' IronPDF
PdfDocument.FromFile(path)
저장 방법 변경
// PdfiumViewer
document.Save(path)
// IronPDF
pdf.SaveAs(path)
// PdfiumViewer
document.Save(path)
// IronPDF
pdf.SaveAs(path)
렌더링 메서드 변경
// PdfiumViewer: Returns image with nested using
using (var image = document.Render(0, 150, 150, true))
{
image.Save("page.png", ImageFormat.Png);
}
// IronPDF: Returns bitmap array
var images = pdf.ToBitmap(0);
images[0].Save("page.png");
// PdfiumViewer: Returns image with nested using
using (var image = document.Render(0, 150, 150, true))
{
image.Save("page.png", ImageFormat.Png);
}
// IronPDF: Returns bitmap array
var images = pdf.ToBitmap(0);
images[0].Save("page.png");
Imports System.Drawing.Imaging
' PdfiumViewer: Returns image with nested using
Using image = document.Render(0, 150, 150, True)
image.Save("page.png", ImageFormat.Png)
End Using
' IronPDF: Returns bitmap array
Dim images = pdf.ToBitmap(0)
images(0).Save("page.png")
페이지 크기 접근 변경
// PdfiumViewer
var size = document.PageSizes[index];
Console.WriteLine($"{size.Width} x {size.Height}");
// IronPDF
var page = pdf.Pages[index];
Console.WriteLine($"{page.Width} x {page.Height}");
// PdfiumViewer
var size = document.PageSizes[index];
Console.WriteLine($"{size.Width} x {size.Height}");
// IronPDF
var page = pdf.Pages[index];
Console.WriteLine($"{page.Width} x {page.Height}");
' PdfiumViewer
Dim size = document.PageSizes(index)
Console.WriteLine($"{size.Width} x {size.Height}")
' IronPDF
Dim page = pdf.Pages(index)
Console.WriteLine($"{page.Width} x {page.Height}")
기능 비교 요약
| 기능 | PdfiumViewer | IronPDF |
|---|---|---|
| PDF 로드 | ✓ | ✓ |
| 이미지로 렌더링 | ✓ | ✓ |
| 내장 뷰어 | ✓ | ✗ |
| PDF 인쇄 | ✓ | ✓ |
| 텍스트 추출 | 페이지 수준 (GetPdfText) |
전체 (ExtractAllText, 페이지별) |
| HTML에서 생성 | ✗ | ✓ |
| URL에서 생성 | ✗ | ✓ |
| PDF 병합 | ✗ | ✓ |
| PDF 분할 | ✗ | ✓ |
| 워터마크 추가 | ✗ | ✓ |
| 헤더/푸터 | ✗ | ✓ |
| 폼 채우기 | ✗ | ✓ |
| 비밀번호 보호 | ✗ | ✓ |
| WinForms 지원 | ✓ | ✓ |
| ASP.NET 지원 | ✗ | ✓ |
| .NET Core 지원 | 제한된 (System.Drawing이 Windows에 연결됨) | ✓ |
| 활성 유지관리 | 2019-08-02 아카이브 | ✓ |
마이그레이션 체크리스트
사전 마이그레이션
- 코드베이스에서 모든PdfiumViewer사용 식별
- PdfViewer 컨트롤을 사용하는 WinForms 나열
- 현재 렌더링 DPI 설정 문서화
- 네이티브 바이너리 참조 확인
- 인쇄 기능 사용 식별
- 뷰어 컨트롤 교체 전략 계획 -IronPDF라이센스 키를 받으세요
패키지 변경 사항
PdfiumViewerNuGet 패키지 제거PdfiumViewer.Native.x86.v8-xfa패키지 제거PdfiumViewer.Native.x86_64.v8-xfa패키지 제거- x86/ 및 x64/ 폴더에서 네이티브 pdfium.dll 바이너리 삭제
IronPdfNuGet Install-Package:dotnet add package IronPdf
코드 변경 사항
- 시작 시 라이선스 키 구성 추가
PdfDocument.Load()를PdfDocument.FromFile()로 교체document.Save()를pdf.SaveAs()로 교체document.Render()를pdf.ToBitmap()또는RasterizeToImageFiles()로 교체document.PageSizes[i]를pdf.Pages[i].Width/Height로 교체- PdfViewer 컨트롤을 외부 뷰어나 Process.Start()로 교체하십시오
- 새로운 기능(텍스트 추출, HTML to PDF 등)을 추가하십시오
마이그레이션 이후
- 렌더링 출력 품질 테스트
- 인쇄 기능을 테스트하십시오
- 대상 플랫폼에서 테스트하십시오
- 새로운 기능(HTML to PDF, 병합, 워터마크, 보안)을 추가하십시오
- 문서 업데이트

