IRONPDF VERWENDEN

PDF-Anzeige in .NET MAUI (Schritt-für-Schritt) Tutorial

Jordi Bardia
Jordi Bardia
30. Januar 2023
Aktualisiert 25. Februar 2024
Teilen Sie:

.NET MAUI ist die nächste Generation von .NET, die es Entwicklern ermöglicht, plattformübergreifende Desktop-, Web- und Mobile-Apps, einschließlich Xamarin.Forms, mit einer einzigen Codebasis zu erstellen. Mit .NET MAUI können Sie Ihre App einmal schreiben und sie auf mehreren Plattformen bereitstellen, darunter Windows, macOS, iOS, Android und tvOS, mit demselben Projektnamen. mit .NET MAUI können Sie auch die neuesten UI-Funktionen der einzelnen Plattformen nutzen, z. B. den Dark Mode und die Touch-Unterstützung unter macOS oder die Spracherkennung unter Windows 10.

In diesem Artikel wird erklärt, wie IronPDF in der .NET MAUI-Anwendung verwendet werden kann, um PDF-Dokumente mit vielen Vorteilen zu erstellen.


IronPDF: C# PDF-Bibliothek

IronPDF ist eine .NET-Bibliothek, mit der Sie PDF-Dateien erzeugen und bearbeiten können. Es eignet sich perfekt für den Einsatz in .NET MAUI-Anwendungen, da es eine breite Palette von Funktionen bietet, die an Ihre spezifischen Anforderungen angepasst werden können. Mit seiner benutzerfreundlichen API ermöglicht IronPDF die einfache Integration von PDF-Funktionen in Ihr .NET MAUI-Projekt.

Voraussetzungen

Es gibt einige Voraussetzungen für die Erstellung von PDF und PDF Viewer in .NET MAUI mit IronPDF:

  1. Die neueste Version von Visual Studio

  2. .NET-Framework 6 oder 7

  3. In Visual Studio installierte MAUI-Pakete

  4. .NET MAUI-Anwendung läuft in Visual Studio

Schritt 1: IronPDF installieren

Eine der besten Möglichkeiten, IronPDF in einem neuen Projekt zu installieren, ist die Verwendung der NuGet Package Manager Console in Visual Studio. Es gibt einige Vorteile, IronPDF mit dieser Methode zu installieren.

  • Es ist einfach zu machen und
  • Sie können sicher sein, dass Sie die neueste Version von IronPDF verwenden.

Schritte zur Installation von IronPDF

Öffnen Sie zuerst die Paket-Manager-Konsole, indem Sie zu Tools > NuGet-Paket-Manager > Paket-Manager-Konsole gehen.

Anleitung: PDF in .NET MAUI anzeigen (Schritt für Schritt), Abbildung 1: Paketmanager-Konsole

Verwaltungskonsole für Pakete

Geben Sie dann den folgenden Befehl ein:

Install-Package IronPdf

Dies wird das Paket und alle seine Abhängigkeiten wie den assets-Ordner installieren.

Wie man PDF in .NET MAUI ansieht (Schritt-für-Schritt) Tutorial, Abbildung 2: IronPDF-Installation

IronPDF Installation

Sie können nun IronPDF in Ihrem MAUI-Projekt verwenden.

Schritt 2: Einrichtung des Frontend-Designs in .NET MAUI

Erstellen Sie zunächst ein Layout für drei Funktionalitäten von IronPDF.

URL zu PDF Layout

Erstellen Sie für das URL-zu-PDF-Layout eine Beschriftung mit dem Text "URL eingeben, um PDF zu konvertieren" unter Verwendung eines .NET MAUI-Beschriftungssteuerelements. Wenden Sie anschließend ein horizontales Stapel-Layout an, um das Eingabe-Steuerelement und die Schaltfläche horizontal anzuordnen. Setzen Sie dann eine Linie nach den Steuerelementen, um den nächsten Abschnitt der Steuerelemente zu unterteilen.

<Label
    Text="Enter URL to Convert PDF"
    SemanticProperties.HeadingLevel="Level1"
    FontSize="18"
    HorizontalOptions="Center" 
/>
<HorizontalStackLayout
    HorizontalOptions="Center">
    <Border Stroke="White"
            StrokeThickness="2"
            StrokeShape="RoundRectangle 5,5,5,5"
            HorizontalOptions="Center">
        <Entry
            x:Name="URL"
            HeightRequest="50"
            WidthRequest="300" 
            HorizontalOptions="Center"
        />
    </Border>

    <Button
        x:Name="urlPDF"
        Text="Convert URL to PDF"
        Margin="30,0,0,0"
        Clicked="UrlToPdf"
        HorizontalOptions="Center" />
</HorizontalStackLayout>

<Line Stroke="White" X2="1500" />
XML

HTML zu PDF Layout

Für das Layout des Abschnitts HTML zu PDF erstellen Sie ein Editor-Steuerelement und eine Schaltfläche. Das Editor-Steuerelement wird verwendet, um eine Zeichenkette mit HTML-Inhalt vom Benutzer zu akzeptieren. Fügen Sie zusätzlich eine Linie als Trennlinie ein.

<Label
    Text="Enter HTML to Convert to PDF"
    SemanticProperties.HeadingLevel="Level2"
    FontSize="18"
    HorizontalOptions="Center" />
<Border 
    Stroke="White"
    StrokeThickness="2"
    StrokeShape="RoundRectangle 5,5,5,5"
    HorizontalOptions="Center">

    <Editor
        x:Name="HTML"
        HeightRequest="200"
        WidthRequest="300" 
        HorizontalOptions="Center"
    />

</Border>

<Button
    x:Name="htmlPDF"
    Text="Convert HTML to PDF"
    Clicked="HtmlToPdf"
    HorizontalOptions="Center" />

<Line Stroke="White" X2="1500" />
XML

HTML-Datei in PDF-Layout

Für die Umwandlung von HTML-Dateien in PDF-Dateien fügen Sie nur eine Schaltfläche hinzu. Mit Hilfe dieser Schaltfläche können Sie eine HTML-Datei mit IronPDF in ein PDF-Dokument umwandeln.

<Label
    Text="Convert HTML file to PDF"
    SemanticProperties.HeadingLevel="Level2"
    FontSize="18"
    HorizontalOptions="Center" />

<Button
    x:Name="htmlFilePDF"
    Text="Convert HTML file to PDF"
    Clicked="FileToPdf"
    HorizontalOptions="Center" />
XML

Der vollständige UI-Code

Der vollständige Quellcode für das .NET MAUI-Frontend ist unten angegeben.

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="PDF_Viewer.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">
            <Label
                Text="Enter URL to Convert PDF"
                SemanticProperties.HeadingLevel="Level1"
                FontSize="18"
                HorizontalOptions="Center" 
            />
            <HorizontalStackLayout
                HorizontalOptions="Center">
                <Border Stroke="White"
                        StrokeThickness="2"
                        StrokeShape="RoundRectangle 5,5,5,5"
                        HorizontalOptions="Center">
                    <Entry
                        x:Name="URL"
                        HeightRequest="50"
                        WidthRequest="300" 
                        HorizontalOptions="Center"
                    />
                </Border>

                <Button
                    x:Name="urlPDF"
                    Text="Convert URL to PDF"
                    Margin="30,0,0,0"
                    Clicked="UrlToPdf"
                    HorizontalOptions="Center" />
            </HorizontalStackLayout>

            <Line Stroke="White" X2="1500" />

            <Label
                Text="Enter HTML to Convert to PDF"
                SemanticProperties.HeadingLevel="Level2"
                FontSize="18"
                HorizontalOptions="Center" />
            <Border 
                Stroke="White"
                StrokeThickness="2"
                StrokeShape="RoundRectangle 5,5,5,5"
                HorizontalOptions="Center">

                <Editor
                    x:Name="HTML"
                    HeightRequest="200"
                    WidthRequest="300" 
                    HorizontalOptions="Center"
                />

            </Border>

            <Button
                x:Name="htmlPDF"
                Text="Convert HTML to PDF"
                Clicked="HtmlToPdf"
                HorizontalOptions="Center" />

            <Line Stroke="White" X2="1500" />

            <Label
                Text="Convert HTML file to PDF"
                SemanticProperties.HeadingLevel="Level2"
                FontSize="18"
                HorizontalOptions="Center" />

            <Button
                x:Name="htmlFilePDF"
                Text="Convert HTML file to PDF"
                Clicked="FileToPdf"
                HorizontalOptions="Center" />
        </VerticalStackLayout>
    </ScrollView>

</ContentPage>
XML

Schritt 3: Code für PDF-Datei speichern und anzeigen

.NET MAUI verfügt über keine vordefinierte Funktion zum Speichern von Dateien im lokalen Speicher. Es ist also notwendig, den Code selbst zu schreiben. Zur Erstellung der Speicher- und Ansichts-Funktionalität wird eine partielle Klasse mit dem Namen SaveService erstellt, die eine partielle void-Funktion mit dem Namen SaveAndView enthält. Diese Funktion hat drei Parameter: den Dateinamen, den Dateityp und den Speicherstrom, um die Datei zu schreiben.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PDF_Viewer
{
    public partial class SaveService
    {
        public partial void SaveAndView(string filename, string contentType, MemoryStream stream);
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PDF_Viewer
{
    public partial class SaveService
    {
        public partial void SaveAndView(string filename, string contentType, MemoryStream stream);
    }
}

Die Speicher- und Anzeigefunktionalität muss für jede Plattform implementiert werden, die Unterstützung bieten soll (z. B. für Android, macOS und/oder Windows). Für die Windows-Plattform erstelle eine Datei mit dem Namen "SaveWindows.cs" und implementiere die partielle Methode SaveAndView:

using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.Storage.Streams;
using Windows.UI.Popups;

namespace PDF_Viewer
{
    public partial class SaveService
    {
        public async partial void SaveAndView(string filename, string contentType, MemoryStream stream)
        {
            StorageFile stFile;
            string extension = Path.GetExtension(filename);
            //Gets process windows handle to open the dialog in application process.
            IntPtr windowHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
            if (!Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
            {
                //Creates file save picker to save a file.
                FileSavePicker savePicker = new FileSavePicker();
                savePicker.DefaultFileExtension = ".pdf";
                savePicker.SuggestedFileName = filename;
                //Saves the file as PDF file.
                savePicker.FileTypeChoices.Add("PDF", new List<string>() { ".pdf" });

                WinRT.Interop.InitializeWithWindow.Initialize(savePicker, windowHandle);
                stFile = await savePicker.PickSaveFileAsync();
            }
            else
            {
                StorageFolder local = ApplicationData.Current.LocalFolder;
                stFile = await local.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
            }
            if (stFile != null)
            {
                using (IRandomAccessStream zipStream = await stFile.OpenAsync(FileAccessMode.ReadWrite))
                {
                    //Writes compressed data from memory to file.
                    using Stream outstream = zipStream.AsStreamForWrite();
                    outstream.SetLength(0);
                    //Saves the stream as file.
                    byte [] buffer = stream.ToArray();
                    outstream.Write(buffer, 0, buffer.Length);
                    outstream.Flush();
                }
                //Create message dialog box.
                MessageDialog msgDialog = new("Do you want to view the document?", "File has been created successfully");
                UICommand yesCmd = new("Yes");
                msgDialog.Commands.Add(yesCmd);
                UICommand noCmd = new("No");
                msgDialog.Commands.Add(noCmd);

                WinRT.Interop.InitializeWithWindow.Initialize(msgDialog, windowHandle);

                //Showing a dialog box.
                IUICommand cmd = await msgDialog.ShowAsync();
                if (cmd.Label == yesCmd.Label)
                {
                    //Launch the saved file.
                    await Windows.System.Launcher.LaunchFileAsync(stFile);
                }
            }
        }
    }
}
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.Storage.Streams;
using Windows.UI.Popups;

namespace PDF_Viewer
{
    public partial class SaveService
    {
        public async partial void SaveAndView(string filename, string contentType, MemoryStream stream)
        {
            StorageFile stFile;
            string extension = Path.GetExtension(filename);
            //Gets process windows handle to open the dialog in application process.
            IntPtr windowHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
            if (!Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
            {
                //Creates file save picker to save a file.
                FileSavePicker savePicker = new FileSavePicker();
                savePicker.DefaultFileExtension = ".pdf";
                savePicker.SuggestedFileName = filename;
                //Saves the file as PDF file.
                savePicker.FileTypeChoices.Add("PDF", new List<string>() { ".pdf" });

                WinRT.Interop.InitializeWithWindow.Initialize(savePicker, windowHandle);
                stFile = await savePicker.PickSaveFileAsync();
            }
            else
            {
                StorageFolder local = ApplicationData.Current.LocalFolder;
                stFile = await local.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
            }
            if (stFile != null)
            {
                using (IRandomAccessStream zipStream = await stFile.OpenAsync(FileAccessMode.ReadWrite))
                {
                    //Writes compressed data from memory to file.
                    using Stream outstream = zipStream.AsStreamForWrite();
                    outstream.SetLength(0);
                    //Saves the stream as file.
                    byte [] buffer = stream.ToArray();
                    outstream.Write(buffer, 0, buffer.Length);
                    outstream.Flush();
                }
                //Create message dialog box.
                MessageDialog msgDialog = new("Do you want to view the document?", "File has been created successfully");
                UICommand yesCmd = new("Yes");
                msgDialog.Commands.Add(yesCmd);
                UICommand noCmd = new("No");
                msgDialog.Commands.Add(noCmd);

                WinRT.Interop.InitializeWithWindow.Initialize(msgDialog, windowHandle);

                //Showing a dialog box.
                IUICommand cmd = await msgDialog.ShowAsync();
                if (cmd.Label == yesCmd.Label)
                {
                    //Launch the saved file.
                    await Windows.System.Launcher.LaunchFileAsync(stFile);
                }
            }
        }
    }
}

Für Android und macOS müssen Sie separate Dateien mit vergleichbaren SaveAndView-Implementierungen erstellen. Ein funktionierendes Beispiel finden Sie in diesem MAUI PDF Viewer GitHub Repo.

Schritt 4: Code für PDF-Funktionen

Nun ist es an der Zeit, den Code für die PDF-Funktionen zu schreiben. Beginnen wir mit der URL-zu-PDF-Funktionalität.

URL-zu-PDF-Funktionalität

Erstellen Sie eine UrlToPdf-Funktion für die URL-zu-PDF-Funktionalität. Innerhalb der Funktion instanziieren Sie das ChromePdfRenderer-Objekt und verwenden Sie die RenderUrlAsPdf-Funktion, um die URL in PDF-Dokumente zu konvertieren. Die Funktion RenderUrlAsPdf ruft die Daten der URL vom Webserver ab und verarbeitet sie, um sie in ein PDF-Dokument zu konvertieren. Übergeben Sie in den Parametern den Text in der URL-Eingabesteuerung, erstellen Sie ein Objekt der SaveService-Klasse und verwenden Sie die SaveAndView-Funktion. In den Parametern der SaveAndView-Funktion übergeben Sie den Stream der erzeugten PDF-Datei.

Die SaveAndView-Funktion hilft dabei, Dateien an einem beliebigen benutzerdefinierten Pfad zu speichern und bietet die Möglichkeit, PDF-Dateien anzuzeigen. Zuletzt wird ein Warnfenster mit Informationen zur Erstellung der PDF-Datei angezeigt. Wenn ein Benutzer versucht, eine PDF-Datei mit einem leeren Eingabefeld zu erstellen, wird ein Warnfeld mit einer Fehlermeldung und einer Warnung angezeigt.

private void UrlToPdf(object sender, EventArgs e)
{
    if (URL.Text != null)
    {
        var renderer = new IronPdf.ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf(URL.Text.Trim());
        SaveService saveService = new SaveService();
        saveService.SaveAndView("URLtoPDF.pdf", "application/pdf", pdf.Stream);
        DisplayAlert("Success", "PDF from URL Created!", "OK");
    }
    else
    {
        DisplayAlert("Error", "Field can't be empty! \nPlease enter URL!", "OK");
    }

}
private void UrlToPdf(object sender, EventArgs e)
{
    if (URL.Text != null)
    {
        var renderer = new IronPdf.ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf(URL.Text.Trim());
        SaveService saveService = new SaveService();
        saveService.SaveAndView("URLtoPDF.pdf", "application/pdf", pdf.Stream);
        DisplayAlert("Success", "PDF from URL Created!", "OK");
    }
    else
    {
        DisplayAlert("Error", "Field can't be empty! \nPlease enter URL!", "OK");
    }

}

HTML-zu-PDF-Funktionalität

Um die Funktionalität zur Konvertierung von HTML in PDF zu verwenden, erstellen Sie die HtmlToPdf-Funktion und nutzen Sie die RenderHtmlAsPdf-Funktion. Verwenden Sie den Text der Editor-Steuerung und übergeben Sie ihn als Parameter der RenderHtmlAsPdf-Funktion. Ähnlich wie bei der obigen Funktion, verwenden Sie die SaveAndView-Funktion, um die Möglichkeit zu aktivieren, die PDF-Datei nach dem Speichern anzusehen.

private void HtmlToPdf(object sender, EventArgs e)
{
    if (HTML.Text != null)
    {
        var renderer = new IronPdf.ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(HTML.Text);
        SaveService saveService = new SaveService();
        saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", pdf.Stream);
        DisplayAlert("Success", "PDF from HTML Created!", "OK");
    }
    else
    {
        DisplayAlert("Error", "Field can't be empty! \nPlease enter valid HTML!", "OK");
    }
}
private void HtmlToPdf(object sender, EventArgs e)
{
    if (HTML.Text != null)
    {
        var renderer = new IronPdf.ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(HTML.Text);
        SaveService saveService = new SaveService();
        saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", pdf.Stream);
        DisplayAlert("Success", "PDF from HTML Created!", "OK");
    }
    else
    {
        DisplayAlert("Error", "Field can't be empty! \nPlease enter valid HTML!", "OK");
    }
}

HTML-Datei in PDF-Funktionalität

Erstellen Sie die Funktion FileToPdf zum Konvertieren von HTML-Dateien in PDF-Dateien, verwenden Sie die Funktion RenderHtmlFileAsPdf und übergeben Sie den Pfad der HTML-Datei als Parameter. Es wandelt alle HTML-Inhalte in PDF um und speichert die Ausgabedatei.

private void FileToPdf(object sender, EventArgs e)
{
    var renderer = new IronPdf.ChromePdfRenderer();
    var pdf = renderer.RenderHtmlFileAsPdf(@"C:\Users\Administrator\Desktop\index.html");
    SaveService saveService = new SaveService();
    saveService.SaveAndView("HTML File to PDF.pdf", "application/pdf", pdf.Stream);
    DisplayAlert("Success", "PDF from File Created!", "OK");
}
private void FileToPdf(object sender, EventArgs e)
{
    var renderer = new IronPdf.ChromePdfRenderer();
    var pdf = renderer.RenderHtmlFileAsPdf(@"C:\Users\Administrator\Desktop\index.html");
    SaveService saveService = new SaveService();
    saveService.SaveAndView("HTML File to PDF.pdf", "application/pdf", pdf.Stream);
    DisplayAlert("Success", "PDF from File Created!", "OK");
}

Ausgabe

Nach der Ausführung des Projekts wird die Ausgabe wie folgt aussehen.

Wie man PDF in .NET MAUI anzeigt (Schritt-für-Schritt) Tutorial, Abbildung 3: Ausgabe

Ausgabe

Geben Sie die URL der Microsoft-Website in diesen Abschnitt ein und klicken Sie auf die Schaltfläche.

Wie man ein PDF in .NET MAUI anzeigt (Schritt-für-Schritt) Tutorial, Abbildung 4: URL zu PDF

URL zu PDF

Nach der Erstellung der PDF-Datei wird ein Dialogfeld angezeigt, in dem Sie die Datei an dem gewünschten Zielort speichern können.

Wie man PDF in .NET MAUI anzeigt (Schritt-für-Schritt) Anleitung, Abbildung 5: Datei speichern

Datei speichern

Nach dem Speichern der Datei wird dieses Popup-Fenster angezeigt und bietet die Möglichkeit, einen PDF-Viewer auszuwählen, um die PDF-Datei anzuzeigen.

Wie man PDF in .NET MAUI ansieht (Schritt-für-Schritt) Tutorial, Abbildung 6: PDF-Viewer-Popup

PDF-Viewer-Popup

IronPDF wandelt die URL in hervorragender Weise in PDF um. Dabei bleiben alle Farben und Bilder in ihrer ursprünglichen Form und Formatierung erhalten.

Wie man PDF in .NET MAUI anzeigt (Schritt-für-Schritt) Tutorial, Abbildung 7: PDF-Viewer-Popup

PDF-Viewer-Popup

Dasselbe Verfahren muss bei allen anderen Funktionen angewandt werden. Schauen Sie sich diesen IronPDF in Blazor Blog-Post an, um mehr über die Funktionsweise von IronPDF in Blazor zu erfahren.

Erfahren Sie, wie Sie eine MAUI-Seite als XAML in ein PDF-Dokument konvertieren, indem Sie "XAML in PDF in MAUI konvertieren" besuchen.

Zusammenfassung

In diesem Tutorial wurde IronPDF in der .NET MAUI-Anwendung verwendet, um eine PDF-Datei und einen PDF-Viewer zu erstellen. Die .NET MAUI ist ein großartiges Werkzeug zur Erstellung von Multiplattform-Anwendungen mit einer einzigen Codebasis. IronPDF hilft bei der einfachen Erstellung und Anpassung von PDF-Dateien in jeder .NET-Anwendung. IronPDF ist vollständig kompatibel mit der .NET MAUI-Plattform.

IronPDF ist für die Entwicklung kostenlos. Sie können einen kostenlosen Testschlüssel erhalten, um IronPDF in der Produktion zu testen. Für weitere Informationen über IronPDF und seine Funktionen besuchen Sie bitte die offizielle IronPDF-Website.

Jordi Bardia
Software-Ingenieur
Jordi beherrscht vor allem Python, C# und C++. Wenn er seine Fähigkeiten bei Iron Software nicht einsetzt, programmiert er Spiele. Durch seine Mitverantwortung für Produkttests, Produktentwicklung und Forschung trägt Jordi wesentlich zur kontinuierlichen Produktverbesserung bei. Die vielseitigen Erfahrungen, die er sammelt, bieten ihm immer wieder neue Herausforderungen, und er sagt, dass dies einer seiner Lieblingsaspekte bei Iron Software ist. Jordi wuchs in Miami, Florida, auf und studierte Informatik und Statistik an der University of Florida.
< PREVIOUS
Konvertieren von PPT (PowerPoint) in PDF in C# (Beispiel-Tutorial)
NÄCHSTES >
PDFium in C# Alternativen mit IronPDF