Przejdź do treści stopki
KORZYSTANIE Z IRONPDF

Jak przekonwertować PDF na TIFF w VB.NET

Wyświetlanie stron PDF w aplikacji Windows Forms jest częstym wymaganiem w przypadku narzędzi do zarządzania dokumentami, przeglądarek raportów i programów do podglądu plików. Kontrola PictureBox jest naturalnym kandydatem, poniewaz juz obsluguje renderowanie obrazow w twoim formularzu. Wyzwaniem jest to, że pliki PDF nie są obrazami — wymagają specjalnego renderowania, zanim jakikolwiek standardowy element sterujący obrazem będzie mógł je wyświetlić. Ten przewodnik przeprowadzi przez uzycie IronPDF do konwersji stron PDF na obrazy bitmapowe i ich wyswietlanie wewnatrz kontroli PictureBox, wraz z obsluga nawigacji po stronach, drukowania i zapisywania.

Zacznij z IronPDF teraz.
green arrow pointer

Dlaczego PictureBox nie może wyświetlać plików PDF bezpośrednio?

Kontrola PictureBox w Windows Forms jest zaprojektowana wylacznie dla formatow obrazow: BMP, PNG, JPG, GIF, TIFF oraz kilku innych. Gdy probujesz przypisac sciezke pliku PDF do PictureBox.ImageLocation lub zaladowac strumien PDF do PictureBox.Image, kontrolka wyrzuci wyjatek, poniewaz binarny format PDF nie jest rozpoznawanym formatem obrazu.

Niektóre rozwiązania próbują obejść ten problem poprzez osadzenie programu Adobe Acrobat za pomocą interoperacyjności COM. Powoduje to silną zależność od zainstalowania programu Adobe Reader na każdym komputerze, na którym działa aplikacja — jest to ograniczenie wdrożeniowe, które trudno jest zarządzać w środowiskach Enterprise. Blokuje również silnik renderujący do wersji programu Acrobat, którą posiada użytkownik, co może powodować problemy z kompatybilnością na różnych komputerach.

Czystsze podejscie to uzycie biblioteki .NET do PDF, ktora konwertuje strony PDF na obrazy bitmapowe w czasie rzeczywistym. IronPDF zapewnia dokladnie taka mozliwosc poprzez metode ToBitmap, ktora renderuje kazda strone dokumentu PDF na obiekt AnyBitmap. Mozesz nastepnie przekonwertowac ten obiekt na standardowy System.Drawing.Bitmap i przypisac go bezposrednio do PictureBox.Image. Nie wymaga instalacji Adobe, rejestracji COM ani zewnętrznej przeglądarki osadzonej w oknie aplikacji.

Technika ta działa w środowisku .NET Framework 4.6.2 i nowszych wersjach, a także w .NET 6, 8 i 10 w systemie Windows. Silnik renderujący w IronPDF jest oparty na przeglądarce Chrome, co oznacza, że zapewnia wysoką jakość wydruku nawet w przypadku plików PDF o złożonym układzie, zawierających osadzone czcionki oraz mieszaną zawartość graficzną i tekstową.

Jak zainstalować IronPDF w projekcie Windows Forms?

Przed napisaniem jakiegokolwiek kodu należy dodać IronPDF do projektu. Najszybszym sposobem jest użycie interfejsu CLI menedżera pakietów NuGet:

dotnet add package IronPdf

Alternatywnie można użyć konsoli menedżera pakietów Visual Studio:

Install-Package IronPdf

Po instalacji, potwierdz, ze odniesienie do pakietu pojawia sie w pliku .csproj. IronPDF jest przeznaczony dla Windows w .NET 6 i nowszych, wiec jesli uzywasz multiplatformowego celu w pliku projektu, dodaj ograniczenie <RuntimeIdentifiers> lub <Platforms> dla Windows. W przypadku projektów Windows Forms jest to zazwyczaj już skonfigurowane podczas tworzenia szablonu projektu w Visual Studio.

Aby uzyskać licencję na użytek produkcyjny, umieść klucz licencyjny w kodzie uruchamiającym aplikację przed jakimkolwiek wywołaniem IronPDF:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Podczas tworzenia i testowania IronPDF działa w trybie próbnym, co powoduje dodanie znaku wodnego do renderowanego wyniku. Bezplatna licencja próbna usuwa znak wodny na potrzeby testowania.

Jak skonfigurować strukturę projektu Windows Forms?

Otworz Visual Studio i utworz nowy projekt aplikacji formularzy Windows skierowany na .NET 10. Szablon projektu generuje Form1.cs oraz punkt wejscia Program.cs.

Na powierzchni projektanta dodaj do formularza następujące kontrolki:

  • PictureBox o nazwie pictureBoxPdf zajmujacy wiekszosc formularza, z SizeMode ustawionym na Zoom
  • Button o nazwie btnOpen z tekstem "Open PDF"
  • Button o nazwie btnPrevious z tekstem "Previous"
  • Button o nazwie btnNext z tekstem "Next"
  • Button o nazwie btnSave z tekstem "Save Page"
  • Button o nazwie btnPrint z tekstem "Print"
  • Label o nazwie lblPageInfo do wyswietlania numeru obecnej strony

Ustawienie SizeMode = Zoom na PictureBox zapewnia, ze strony PDF skalowane sa proporcjonalnie, aby dopasowac sie do kontroli bez znieksztalcenia wspolczynnika proporcji. Jest to ważne, ponieważ strony PDF mają różne rozmiary — formaty Letter, A4 i Legal mają różne wymiary, a chcesz, aby przeglądarka obsługiwała je wszystkie bez problemów.

Poniżej znajduje się pełny kod formularza dla aplikacji do przeglądania plików PDF. To uzywa deklaracji na najwyzszym poziomie w Program.cs i umieszcza cala logike przegladarki wewnatrz Form1.cs:

using IronPdf;
using IronSoftware.Drawing;
using System.Drawing;

public partial class Form1 : Form
{
    private PdfDocument? currentPdf;
    private AnyBitmap[]? pageImages;
    private int currentPageIndex = 0;

    public Form1()
    {
        InitializeComponent();
        pictureBoxPdf.SizeMode = PictureBoxSizeMode.Zoom;
        UpdateNavigationState();
    }

    private void UpdateNavigationState()
    {
        bool hasPdf = pageImages != null && pageImages.Length > 0;
        btnPrevious.Enabled = hasPdf && currentPageIndex > 0;
        btnNext.Enabled = hasPdf && currentPageIndex < (pageImages?.Length - 1 ?? 0);
        btnSave.Enabled = hasPdf;
        btnPrint.Enabled = hasPdf;
        lblPageInfo.Text = hasPdf
            ? $"Page {currentPageIndex + 1} of {pageImages!.Length}"
            : "No document loaded";
    }
}
using IronPdf;
using IronSoftware.Drawing;
using System.Drawing;

public partial class Form1 : Form
{
    private PdfDocument? currentPdf;
    private AnyBitmap[]? pageImages;
    private int currentPageIndex = 0;

    public Form1()
    {
        InitializeComponent();
        pictureBoxPdf.SizeMode = PictureBoxSizeMode.Zoom;
        UpdateNavigationState();
    }

    private void UpdateNavigationState()
    {
        bool hasPdf = pageImages != null && pageImages.Length > 0;
        btnPrevious.Enabled = hasPdf && currentPageIndex > 0;
        btnNext.Enabled = hasPdf && currentPageIndex < (pageImages?.Length - 1 ?? 0);
        btnSave.Enabled = hasPdf;
        btnPrint.Enabled = hasPdf;
        lblPageInfo.Text = hasPdf
            ? $"Page {currentPageIndex + 1} of {pageImages!.Length}"
            : "No document loaded";
    }
}
Imports IronPdf
Imports IronSoftware.Drawing
Imports System.Drawing

Public Partial Class Form1
    Inherits Form

    Private currentPdf As PdfDocument
    Private pageImages As AnyBitmap()
    Private currentPageIndex As Integer = 0

    Public Sub New()
        InitializeComponent()
        pictureBoxPdf.SizeMode = PictureBoxSizeMode.Zoom
        UpdateNavigationState()
    End Sub

    Private Sub UpdateNavigationState()
        Dim hasPdf As Boolean = pageImages IsNot Nothing AndAlso pageImages.Length > 0
        btnPrevious.Enabled = hasPdf AndAlso currentPageIndex > 0
        btnNext.Enabled = hasPdf AndAlso currentPageIndex < If(pageImages?.Length - 1, 0)
        btnSave.Enabled = hasPdf
        btnPrint.Enabled = hasPdf
        lblPageInfo.Text = If(hasPdf, $"Page {currentPageIndex + 1} of {pageImages.Length}", "No document loaded")
    End Sub
End Class
$vbLabelText   $csharpLabel

Metoda pomocnicza UpdateNavigationState wylacza lub wlacza przyciski nawigacji i akcji w zaleznosci od tego, czy PDF zostal zaladowany i ktora strone aktualnie pokazuje przegladarka. Zapobiega to błędom odwołania do wartości null, gdy użytkownicy klikają przyciski przed załadowaniem dokumentu.

VB .NET Wyswietlanie PDF w PictureBox: Renderowanie Stron PDF jako Obrazy w Windows Forms: Obraz 1 - Zainstaluj IronPDF

Jak załadować i wyrenderować strony PDF w PictureBox?

Ladowanie PDF i jego renderowanie do PictureBox obejmuje dwa kroki: ladowanie dokumentu za pomoca PdfDocument.FromFile, a nastepnie wywolanie ToBitmap w celu konwersji wszystkich stron na tablice obiektow bitmapowych.

Metoda konwersji PDF na obraz ToBitmap renderuje kazda strone PDF przy zadanym DPI. Wyższa rozdzielczość DPI zapewnia ostrzejszy obraz, ale zużywa więcej pamięci. Wartość 150 DPI stanowi zazwyczaj dobry kompromis dla przeglądarki dokumentów — zapewnia czytelność na ekranie bez konieczności wykorzystywania gigabajtów pamięci RAM w przypadku dużych dokumentów.

private void btnOpen_Click(object sender, EventArgs e)
{
    using OpenFileDialog openDialog = new OpenFileDialog();
    openDialog.Filter = "PDF Files|*.pdf";
    openDialog.Title = "Select a PDF Document";

    if (openDialog.ShowDialog() == DialogResult.OK)
    {
        LoadPdfDocument(openDialog.FileName);
    }
}

private void LoadPdfDocument(string filePath)
{
    currentPdf?.Dispose();
    currentPdf = PdfDocument.FromFile(filePath);

    // Render all pages as bitmaps at 150 DPI
    pageImages = currentPdf.ToBitmap(150);
    currentPageIndex = 0;

    DisplayCurrentPage();
    UpdateNavigationState();
}

private void DisplayCurrentPage()
{
    if (pageImages == null || pageImages.Length == 0) return;

    // Convert AnyBitmap to System.Drawing.Bitmap for PictureBox
    System.Drawing.Bitmap bitmap = pageImages[currentPageIndex].ToImage<System.Drawing.Bitmap>();
    pictureBoxPdf.Image?.Dispose();
    pictureBoxPdf.Image = bitmap;

    UpdateNavigationState();
}
private void btnOpen_Click(object sender, EventArgs e)
{
    using OpenFileDialog openDialog = new OpenFileDialog();
    openDialog.Filter = "PDF Files|*.pdf";
    openDialog.Title = "Select a PDF Document";

    if (openDialog.ShowDialog() == DialogResult.OK)
    {
        LoadPdfDocument(openDialog.FileName);
    }
}

private void LoadPdfDocument(string filePath)
{
    currentPdf?.Dispose();
    currentPdf = PdfDocument.FromFile(filePath);

    // Render all pages as bitmaps at 150 DPI
    pageImages = currentPdf.ToBitmap(150);
    currentPageIndex = 0;

    DisplayCurrentPage();
    UpdateNavigationState();
}

private void DisplayCurrentPage()
{
    if (pageImages == null || pageImages.Length == 0) return;

    // Convert AnyBitmap to System.Drawing.Bitmap for PictureBox
    System.Drawing.Bitmap bitmap = pageImages[currentPageIndex].ToImage<System.Drawing.Bitmap>();
    pictureBoxPdf.Image?.Dispose();
    pictureBoxPdf.Image = bitmap;

    UpdateNavigationState();
}
Private Sub btnOpen_Click(sender As Object, e As EventArgs) Handles btnOpen.Click
    Using openDialog As New OpenFileDialog()
        openDialog.Filter = "PDF Files|*.pdf"
        openDialog.Title = "Select a PDF Document"

        If openDialog.ShowDialog() = DialogResult.OK Then
            LoadPdfDocument(openDialog.FileName)
        End If
    End Using
End Sub

Private Sub LoadPdfDocument(filePath As String)
    currentPdf?.Dispose()
    currentPdf = PdfDocument.FromFile(filePath)

    ' Render all pages as bitmaps at 150 DPI
    pageImages = currentPdf.ToBitmap(150)
    currentPageIndex = 0

    DisplayCurrentPage()
    UpdateNavigationState()
End Sub

Private Sub DisplayCurrentPage()
    If pageImages Is Nothing OrElse pageImages.Length = 0 Then Return

    ' Convert AnyBitmap to System.Drawing.Bitmap for PictureBox
    Dim bitmap As System.Drawing.Bitmap = pageImages(currentPageIndex).ToImage(Of System.Drawing.Bitmap)()
    pictureBoxPdf.Image?.Dispose()
    pictureBoxPdf.Image = bitmap

    UpdateNavigationState()
End Sub
$vbLabelText   $csharpLabel

Metoda PdfDocument.FromFile laduje PDF z dysku do pamieci. Wywolanie ToBitmap z parametrem DPI zwraca tablice obiektow AnyBitmap, po jednym na strone. Typ AnyBitmap to bezformatowa klasa bitmapowa IronPDF, a ToImage<System.Drawing.Bitmap>() konwertuje go do typu System.Drawing.Bitmap, ktorego oczekuje PictureBox.Image.

Zauwaz, ze poprzedni PictureBox.Image jest usuwany przed przypisaniem nowego. To jest wazne -- kazdy obiekt Bitmap przechowuje niezarzadzane zasoby GDI+, a zaniedbanie usuniecia starych bitmap generuje wycieki pamieci w aplikacjach dzialajacych dlugo.

VB .NET Wyswietlanie PDF w PictureBox: Renderowanie Stron PDF jako Obrazy w Windows Forms: Obraz 2 - Przykladowy pusty formularz Windows gotowy do uzycia

Po załadowaniu przeglądarka natychmiast wyświetla pierwszą stronę. Etykieta lblPageInfo aktualizuje sie, aby pokazac numer obecnej strony i liczbe wszystkich stron.

VB .NET Wyswietlanie PDF w PictureBox: Renderowanie Stron PDF jako Obrazy w Windows Forms: Obraz 3 - Przyklad wyswietlania wejsciowego PDF w naszej przegladarce

Jak dodać nawigację między stronami w pliku PDF?

Przeglądarka plików PDF, która wyświetla tylko pierwszą stronę, nie jest przydatna w przypadku dokumentów wielostronicowych. Przyciski nawigacyjne pozwalają użytkownikom poruszać się do przodu i do tyłu po wyświetlonej tablicy stron:

private void btnPrevious_Click(object sender, EventArgs e)
{
    if (currentPageIndex > 0)
    {
        currentPageIndex--;
        DisplayCurrentPage();
    }
}

private void btnNext_Click(object sender, EventArgs e)
{
    if (pageImages != null && currentPageIndex < pageImages.Length - 1)
    {
        currentPageIndex++;
        DisplayCurrentPage();
    }
}
private void btnPrevious_Click(object sender, EventArgs e)
{
    if (currentPageIndex > 0)
    {
        currentPageIndex--;
        DisplayCurrentPage();
    }
}

private void btnNext_Click(object sender, EventArgs e)
{
    if (pageImages != null && currentPageIndex < pageImages.Length - 1)
    {
        currentPageIndex++;
        DisplayCurrentPage();
    }
}
Private Sub btnPrevious_Click(sender As Object, e As EventArgs)
    If currentPageIndex > 0 Then
        currentPageIndex -= 1
        DisplayCurrentPage()
    End If
End Sub

Private Sub btnNext_Click(sender As Object, e As EventArgs)
    If pageImages IsNot Nothing AndAlso currentPageIndex < pageImages.Length - 1 Then
        currentPageIndex += 1
        DisplayCurrentPage()
    End If
End Sub
$vbLabelText   $csharpLabel

Kazde obslugiwane klikniecie zmienia currentPageIndex o jeden i wywoluje DisplayCurrentPage, ktore przelacza PictureBox.Image na odpowiednia bitmape. Sprawdzenia zakresu (currentPageIndex > 0 i currentPageIndex < pageImages.Length - 1) zapobiegaja wyrzucaniu wyjatkow o przekroczeniu zakresu indeksu, chociaz UpdateNavigationState rowniez wylacza przyciski, gdy sa poza zakresem.

Dla wiekszych dokumentow, warto takze rozwazyc dodanie pola wprowadzania numeru strony, gdzie uzytkownicy moga wpisac konkretny numer strony, aby przejsc bezposrednio do tej strony lub pasek miniatur z boku. Tablica pageImages juz zawiera wszystkie renderowane strony, wiec przeskok do dowolnej strony to tylko kwestia ustawienia currentPageIndex na zaintersowany indeks i wywolania DisplayCurrentPage.

VB .NET Wyswietlanie PDF w PictureBox: Renderowanie Stron PDF jako Obrazy w Windows Forms: Obraz 4 - Nawigowanie do strony 2 za pomoca naszych przyciskow

Jak zapisać i wydrukować strony PDF z przeglądarki?

Programy do przeglądania dokumentów zazwyczaj muszą umożliwiać zarówno zapisanie bieżącej strony jako pliku graficznego, jak i wysłanie dokumentu do drukarki. IronPDF sprawia, że obie te rzeczy są proste.

Zapisywanie bieżącej strony jako pliku graficznego

Obecna strona jest juz dostepna jako System.Drawing.Bitmap w PictureBox.Image. Zapisz to uzywajac Image.Save z formatem wywiedzionym z rozszerzenia pliku wybranego przez uzytkownika:

private void btnSave_Click(object sender, EventArgs e)
{
    if (pictureBoxPdf.Image == null) return;

    using SaveFileDialog saveDialog = new SaveFileDialog();
    saveDialog.Filter = "PNG Image|*.png|JPEG Image|*.jpg|TIFF Image|*.tif";
    saveDialog.Title = "Save Page As Image";
    saveDialog.FileName = $"page_{currentPageIndex + 1}";

    if (saveDialog.ShowDialog() == DialogResult.OK)
    {
        pictureBoxPdf.Image.Save(saveDialog.FileName);
    }
}
private void btnSave_Click(object sender, EventArgs e)
{
    if (pictureBoxPdf.Image == null) return;

    using SaveFileDialog saveDialog = new SaveFileDialog();
    saveDialog.Filter = "PNG Image|*.png|JPEG Image|*.jpg|TIFF Image|*.tif";
    saveDialog.Title = "Save Page As Image";
    saveDialog.FileName = $"page_{currentPageIndex + 1}";

    if (saveDialog.ShowDialog() == DialogResult.OK)
    {
        pictureBoxPdf.Image.Save(saveDialog.FileName);
    }
}
Private Sub btnSave_Click(sender As Object, e As EventArgs)
    If pictureBoxPdf.Image Is Nothing Then Return

    Using saveDialog As New SaveFileDialog()
        saveDialog.Filter = "PNG Image|*.png|JPEG Image|*.jpg|TIFF Image|*.tif"
        saveDialog.Title = "Save Page As Image"
        saveDialog.FileName = $"page_{currentPageIndex + 1}"

        If saveDialog.ShowDialog() = DialogResult.OK Then
            pictureBoxPdf.Image.Save(saveDialog.FileName)
        End If
    End Using
End Sub
$vbLabelText   $csharpLabel

Drukowanie dokumentu PDF

Do drukowania należy użyć metody PRINT biblioteki IronPDF, która wysyła plik PDF bezpośrednio do infrastruktury drukowania systemu Windows — nie renderowane obrazy, ale rzeczywistą zawartość pliku PDF. Daje to znacznie ostrzejszy wydruk niż drukowanie bitmapy, ponieważ sterownik drukarki otrzymuje instrukcje wektorowego pliku PDF zamiast obrazu rastrowanego:

private void btnPrint_Click(object sender, EventArgs e)
{
    if (currentPdf == null) return;

    using PrintDialog printDialog = new PrintDialog();
    if (printDialog.ShowDialog() == DialogResult.OK)
    {
        currentPdf.Print();
    }
}
private void btnPrint_Click(object sender, EventArgs e)
{
    if (currentPdf == null) return;

    using PrintDialog printDialog = new PrintDialog();
    if (printDialog.ShowDialog() == DialogResult.OK)
    {
        currentPdf.Print();
    }
}
Private Sub btnPrint_Click(sender As Object, e As EventArgs)
    If currentPdf Is Nothing Then Return

    Using printDialog As New PrintDialog()
        If printDialog.ShowDialog() = DialogResult.OK Then
            currentPdf.Print()
        End If
    End Using
End Sub
$vbLabelText   $csharpLabel

Kontrola PrintDialog pozwala uzytkownikowi wybrac docelowa drukarke i skonfigurowac ustawienia przed rozpoczeciem drukowania. Rzeczywiste zadanie drukowania jest obsługiwane przez wewnętrzny silnik renderujący IronPDF, który integruje się z buforem wydruku systemu Windows.

VB .NET Wyswietlanie PDF w PictureBox: Renderowanie Stron PDF jako Obrazy w Windows Forms: Obraz 5 - Przyklad dzialajacego przycisku drukowania

Jak prawidłowo zarządzać pamięcią i jej zwalnianiem?

Dokumenty PDF i renderowane mapy bitowe zajmują dużo pamięci, zwłaszcza przy wyższych ustawieniach DPI lub w przypadku dużych dokumentów. Bez odpowiedniego zarządzania pamięcią długo działająca aplikacja do przeglądania plików stopniowo wyczerpie dostępną pamięć.

Lista kontrolna utylizacji

Kluczowe punkty dotyczące poprawnego przetłumaczenia w tym wzorcu to:

  • Wywolaj currentPdf?.Dispose() przed zaladowaniem nowego dokumentu. PdfDocument implementuje IDisposable i przechowuje niezarzadzane zasoby.
  • Wywolaj pictureBoxPdf.Image?.Dispose() przed przypisaniem nowej bitmapy do PictureBox.Image. Każda renderowana strona jest oddzielnym, niezarządzanym obiektem GDI+.
  • Tablica pageImages przechowuje obiekty AnyBitmap. Kiedy przechodzisz z jednej strony i nie potrzebujesz juz starej bitmapy, wywolanie Dispose na PictureBox.Image obsługuje kopiowanie System.Drawing.Bitmap, ale mozesz rowniez chciec usunac obiekty AnyBitmap w tablicy podczas ladowania nowego dokumentu.

Zastap Form1.Dispose, aby posprzatac, gdy formularz sie zamyka:

protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        currentPdf?.Dispose();
        pictureBoxPdf.Image?.Dispose();

        if (pageImages != null)
        {
            foreach (var bitmap in pageImages)
                bitmap.Dispose();
        }

        components?.Dispose();
    }
    base.Dispose(disposing);
}
protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        currentPdf?.Dispose();
        pictureBoxPdf.Image?.Dispose();

        if (pageImages != null)
        {
            foreach (var bitmap in pageImages)
                bitmap.Dispose();
        }

        components?.Dispose();
    }
    base.Dispose(disposing);
}
Protected Overrides Sub Dispose(disposing As Boolean)
    If disposing Then
        currentPdf?.Dispose()
        pictureBoxPdf.Image?.Dispose()

        If pageImages IsNot Nothing Then
            For Each bitmap In pageImages
                bitmap.Dispose()
            Next
        End If

        components?.Dispose()
    End If
    MyBase.Dispose(disposing)
End Sub
$vbLabelText   $csharpLabel

Ten wzorzec zapewnia, że wszystkie zasoby IronPDF i GDI+ są zwalniane po zamknięciu formularza, co zapobiega wyciekom pamięci w środowiskach produkcyjnych.

Jak wyświetlić tylko widoczną stronę zamiast wszystkich stron?

Dla duzych PDFow z dziesiatkami lub setkami stron, renderowanie wszystkich stron na raz za pomoca ToBitmap moze byc wolne i kosztowne pamieciowo. Bardziej efektywne podejscie to renderowanie tylko strony, ktora uzytkownik chce zobaczyc, na zadanie.

Podejscie RasterizeToImageFiles IronPDF wspiera renderowanie pojedynczej strony, ale dla zastosowan w pamieci mozesz takze uzyc PageCount i renderowac tylko jedna strone na raz:

private void DisplayPageLazy(int pageIndex)
{
    if (currentPdf == null) return;

    // Render only the requested page
    AnyBitmap[] singlePage = currentPdf.ToBitmap(150, pageIndex, pageIndex);

    System.Drawing.Bitmap bitmap = singlePage[0].ToImage<System.Drawing.Bitmap>();
    pictureBoxPdf.Image?.Dispose();
    pictureBoxPdf.Image = bitmap;

    singlePage[0].Dispose();

    lblPageInfo.Text = $"Page {pageIndex + 1} of {currentPdf.PageCount}";
    UpdateNavigationState();
}
private void DisplayPageLazy(int pageIndex)
{
    if (currentPdf == null) return;

    // Render only the requested page
    AnyBitmap[] singlePage = currentPdf.ToBitmap(150, pageIndex, pageIndex);

    System.Drawing.Bitmap bitmap = singlePage[0].ToImage<System.Drawing.Bitmap>();
    pictureBoxPdf.Image?.Dispose();
    pictureBoxPdf.Image = bitmap;

    singlePage[0].Dispose();

    lblPageInfo.Text = $"Page {pageIndex + 1} of {currentPdf.PageCount}";
    UpdateNavigationState();
}
Private Sub DisplayPageLazy(pageIndex As Integer)
    If currentPdf Is Nothing Then Return

    ' Render only the requested page
    Dim singlePage As AnyBitmap() = currentPdf.ToBitmap(150, pageIndex, pageIndex)

    Dim bitmap As System.Drawing.Bitmap = singlePage(0).ToImage(Of System.Drawing.Bitmap)()
    pictureBoxPdf.Image?.Dispose()
    pictureBoxPdf.Image = bitmap

    singlePage(0).Dispose()

    lblPageInfo.Text = $"Page {pageIndex + 1} of {currentPdf.PageCount}"
    UpdateNavigationState()
End Sub
$vbLabelText   $csharpLabel

Przeciazenie ToBitmap(dpi, startPage, endPage) renderuje okreslony zakres stron. Przekazujac ten sam indeks dla startPage i endPage, tylko jedna strona jest renderowana na raz. Taka zamiana czasu renderowania przy kazdej nawigacji na mniejsze zuzycie pamieci moze byc oplacalna przy bardzo duzych dokumentach.

Więcej informacji na temat możliwości IronPDF w zakresie generowania obrazów można znaleźć w dokumentacji dotyczącej konwersji plików PDF na obrazy oraz w przewodniku po rasteryzacji plików PDF.

Praktyczna przeglądarka plików PDF powinna również umożliwiać użytkownikom powiększanie treści i obracanie stron. Dla zoomu, dynamicznie dostosuj DPI przekazywane do ToBitmap -- przechowuj pole currentDpi (rozpocznij od 150), zwiekszaj lub zmniejszaj je o 50 przy kliknieciach przyciskow zoomu, a nastepnie wywolaj lenietego renderera stron z akualizowanym DPI. Wyższe DPI wytwarza większy obraz, ktory w trybie Zoom PictureBox skaluje do rozmiaru kontroli. Ogranicz zakres miedzy 72 a 400 DPI za pomocą Math.Min i Math.Max, aby uniknać rozmytego wyjscia przy nizszym koncu lub nadmiernego zuzycia pamieci przy wyzszym.

Aby uzyskać informacje na temat bardziej zaawansowanych opcji renderowania, w tym wyodrębniania tekstu z plików PDF wraz z renderowaniem obrazów, zapoznaj się z przewodnikiem dotyczącym wyodrębniania tekstu z plików PDF oraz dokumentacją dotyczącą wyodrębniania obrazów z plików PDF.

Możesz również zapoznać się z obsługą IronPDF w zakresie łączenia dokumentów PDF, dodawania znaków wodnych, obracania stron PDF oraz dodawania adnotacji jako funkcji w bardziej zaawansowanej przeglądarce.

Jak wybrać bibliotekę renderowania plików PDF dla Windows Forms?

Przy wyborze biblioteki do renderowania plików PDF dla Windows Forms istnieje kilka alternatyw. Oto krótkie porównanie, które pomoże Ci ocenić dostępne opcje:

Opcje renderowania plików PDF dla aplikacji Windows Forms
Opcja Zależności zewnętrzne Wsparcie dla .NET Licencja komercyjna Wynik obrazu
IronPDF Brak (samodzielny) .NET 4.6.2 -- .NET 10 Tak (dostępna wersja próbna) Wysoka wierność przy konfigurowalnej rozdzielczości DPI
Adobe Acrobat COM Zainstalowany program Adobe Reader/Acrobat Tylko Windows .NET Framework Licencja Adobe W zależności od zainstalowanej wersji
PDFium.NET Natywne pliki binarne PDFium .NET 5+ BSD (open source) Dobra jakość, ręczna regulacja DPI
Owijki GhostScript Zainstalowano GhostScript Dowolne (poprzez CLI lub COM) AGPL lub komercyjne Dobra jakość, wolniejsze renderowanie

Główną zaletą IronPDF w zastosowaniach z wykorzystaniem Windows Forms jest to, że jest to rozwiązanie w pełni samodzielne — nie wymaga instalacji żadnego zewnętrznego oprogramowania na komputerach użytkowników końcowych. Strona licencyjna IronPDF zawiera pełne informacje na temat cen i opcji bezpłatnej wersji próbnej. Pakiet można znaleźć na stronie NuGet.org wraz ze statystykami pobrań i historią wersji. Aby dokładniej zapoznać się z tym, jak specyfikacja PDF definiuje renderowanie stron, warto zajrzeć do normy ISO 32000-2 dotyczącej formatu PDF, opublikowanej przez ISO, która opisuje format, który muszą implementować IronPDF i inne renderery.

Aby uzyskać dodatkowe informacje na temat możliwości IronPDF wykraczających poza renderowanie obrazów, strona główna dokumentacji IronPDF obejmuje tworzenie plików PDF, konwersję HTML do PDF, obsługę formularzy, podpisy cyfrowe i wiele więcej.

Jakie są Twoje kolejne kroki?

Wzor przedstawiony w tym przewodniku -- renderowanie za pomoca ToBitmap, wyswietlanie w PictureBox, nawigacja za pomoca kontroli opartej na indeksie -- daje funkcjonalna, niezalezna od zalezności przegladarke PDF w Windows Forms. W zależności od wymagań aplikacji warto rozważyć kilka kierunków działania.

Aby uzyskać przeglądarkę o jakości produkcyjnej, warto rozważyć leniwe renderowanie stron w celu wydajnego obsługiwania dużych dokumentów, dodanie panelu miniatur z możliwością przewijania obok głównej przeglądarki oraz udostępnienie elementów sterujących Zoomem powiązanych z parametrem DPI. W przypadku aplikacji do zarządzania dokumentami połącz przeglądarkę z funkcjami wyodrębniania tekstu i odczytu pól formularzy IronPDF, aby tworzyć indeksy dokumentów z możliwością wyszukiwania.

Jeśli Twój proces pracy obejmuje programowe generowanie plików PDF przed ich wyświetleniem, IronPDF obsługuje również konwersję HTML do PDF oraz tworzenie plików PDF od podstaw, dzięki czemu ta sama biblioteka obsługuje zarówno generowanie, jak i przeglądanie.

Zacznij bezplatna probe, aby uzyskac klucz licencyjny wolny od znakow wodnych do rozwoju, lub przejrzyj pelna dokumentacje API, aby zobaczyc kompletny zestaw metod dostepnych na PdfDocument, AnyBitmap i wspierajace klasy renderujące. Galeria przykładów IronPDF zawiera również gotowe do uruchomienia fragmenty kodu obejmujące typowe zadania związane z plikami PDF w języku C#.

Często Zadawane Pytania

Jak mogę wyswietlic PDF w PictureBox Windows Forms za pomoca C#?

Uzyj metody ToBitmap z IronPDF, aby renderować strony PDF jako obiekty AnyBitmap, przekonwertuj kazdy na System.Drawing.Bitmap i przypisz do PictureBox.Image.

Jaka metode oferuje IronPDF do renderowania stron PDF w C#?

IronPDF oferuje metode ToBitmap, która renderuje strony PDF jako obiekty AnyBitmap przy konfigurowalnym DPI. Wywolaj ToImage(), aby skonwertować dla użycia z PictureBox.

Czy można nawigowac po stronach PDF w PictureBox?

Tak. Przechowuj wyrenderowane bitmapy stron w tablicy i inkrementuj lub dekrementuj zmienna indeksu strony. Przypisz odpowiednia bitmape do PictureBox.Image przy kazdym kliknieciu nawigacji.

Jakie sa zalety używania IronPDF do wyswietlania PDF w Windows Forms?

IronPDF jest w pelni samodzielny i nie wymaga instalacji zewnetrznego oprogramowania. Obsługuje konfigurowalne renderowanie DPI, nawigacje po stronach, drukowanie i ekstrakcje tekstu bez jakiejkolwiek zależności od Adobe Acrobat.

Czy IronPDF może obsluzyc wielostronicowe PDF do wyswietlenia w PictureBox?

Tak. ToBitmap zwraca jeden AnyBitmap na strone. Przechowuj tablice i nawiguj po indeksie lub uzyj przeciążenia ToBitmap(dpi, startPage, endPage) dla renderowania na żądanie.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie