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

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의 제약 사항

  1. 뷰어 / 렌더러만: HTML, 이미지에서 PDF를 생성할 수 없습니다. PdfiumViewer의 기능은 보기 및 래스터화에 제한됩니다 — PDF 생성, 편집, 병합 또는 기타 조작적 기능을 지원하지 않습니다.

  2. Windows Forms / Windows 전용: System.Drawing과 WinForms 제어를 중심으로 구축됨; 다른 UI 프레임워크를 위해 설계되지 않았으며 System.Drawing.Common는 .NET 6+에서 Windows 전용입니다.

  3. PDF 조작 불가: PDF 콘텐츠를 병합, 분할, 또는 수정할 수 없습니다.

  4. 네이티브 바이너리 종속성: 플랫폼별 PDFium 바이너리는 PdfiumViewer.Native.x86.v8-xfaPdfiumViewer.Native.x86_64.v8-xfa(V8 없음 / XFA 없음 변형)을 통해 필요합니다.

  5. 아카이브된 업스트림: 2019-08-02 레포 아카이브; 마지막 NuGet 릴리스 2.13.0 (2017-11-06); 더 이상의 업데이트 없음.

  6. 페이지 수준 텍스트 추출만: PdfDocument.GetPdfText(int page)는 원시 페이지 텍스트를 반환합니다 — 단어별 좌표, 레이아웃 재구성, 이미지 전용 PDF에 대한 OCR은 없습니다.

  7. HTML을 PDF로 변환할 수 없음: PDFium은 HTML을 파싱하지 않습니다. HTML에서 PDF를 생성하려면 별도의 생성기 (예: wkhtmltopdf, IronPDF, PuppeteerSharp 등)를 사용해야 하며, 그런 다음 PdfiumViewer로 결과를 로드하여 표시하거나 래스터화할 수 있습니다.

  8. 헤더/푸터 없음: 페이지 번호 또는 반복되는 콘텐츠를 추가할 수 없습니다.

  9. 워터마크 없음: 오버레이로 문서에 스탬핑할 수 없습니다.

  10. 보안 기능 없음: 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 제한 및 네이티브 바이너리 복잡성을 제거합니다.


시작하기 전에

필수 조건

  1. .NET 환경: .NET Framework 4.6.2+ 또는 .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet 접근 권한: NuGet 패키지를 설치할 수 있는 능력
  3. 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
SHELL

라이선스 구성

// 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"
$vbLabelText   $csharpLabel

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" .
SHELL

완전한 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
$vbLabelText   $csharpLabel

핵심 클래스 매핑

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
$vbLabelText   $csharpLabel

이후 (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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

이후 (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
$vbLabelText   $csharpLabel

이것이 가장 큰 기능 격차입니다. 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
$vbLabelText   $csharpLabel

이후 (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
$vbLabelText   $csharpLabel

이것은 PdfiumViewer의 주요 강점 중 하나인 PDF 이미지를 렌더링하는 곳입니다. 두 라이브러리 모두 이 작업을 효과적으로 처리하지만 다른 패턴을 사용합니다.

PdfiumViewer는 document.Render(pageIndex, dpiX, dpiY, forPrinting) 및 적절한 처리를 위한 중첩된 using 문을 사용합니다. 당신은 System.DrawingSystem.Drawing.ImagingImageFormat 열거형을 위해 가져와야 합니다.

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" />
SHELL

중요한 마이그레이션 노트

내장된 뷰어 제어 없음

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})
$vbLabelText   $csharpLabel

뷰잉 필요에 따라 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)
$vbLabelText   $csharpLabel

저장 방법 변경

// PdfiumViewer
document.Save(path)

// IronPDF
pdf.SaveAs(path)
// PdfiumViewer
document.Save(path)

// IronPDF
pdf.SaveAs(path)
$vbLabelText   $csharpLabel

렌더링 메서드 변경

// 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")
$vbLabelText   $csharpLabel

페이지 크기 접근 변경

// 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}")
$vbLabelText   $csharpLabel

기능 비교 요약

기능 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라이센스 키를 받으세요

패키지 변경 사항

  • PdfiumViewer NuGet 패키지 제거
  • PdfiumViewer.Native.x86.v8-xfa 패키지 제거
  • PdfiumViewer.Native.x86_64.v8-xfa 패키지 제거
  • x86/ 및 x64/ 폴더에서 네이티브 pdfium.dll 바이너리 삭제
  • IronPdf NuGet 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, 병합, 워터마크, 보안)을 추가하십시오
  • 문서 업데이트

참고해 주세요PdfiumViewer, PDFium, Chromium, DevExpress, Syncfusion, Telerik, 및 wkhtmltopdf는 해당 소유자의 상표입니다. 이 사이트는 Pieter van Ginkel, Chromium Project, Google, DevExpress, Syncfusion, Progress Software, 또는 wkhtmltopdf 프로젝트와 관련이 없으며, 승인되거나 후원을 받지 않았습니다. 모든 제품명, 로고 및 브랜드는 해당 소유자의 자산입니다. 비교는 정보 제공 목적으로만 사용되며, 작성 시점에 공개적으로 이용 가능한 정보를 반영합니다.

Curtis Chau
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

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

아이언 서포트 팀

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