使用 IRONPDF

使用 IronPDF 在 .NET MAUI 中建立 PDF 文件

介紹

.NET 多平台應用 UI (.NET MAUI) 是一個使用 C# 和 XAML 創建原生移動和桌面應用的跨平台框架。 您可以使用 .NET MAUI 透過單一程式碼基礎在 Android、iOS、MacOS 和 Windows 上操作。 .NET MAUI 是開源的,是對 Xamarin Forms 的改進。 用於效能和擴展性的考量,UI 控件已經從頭開始重寫。 此外,它已從移動平台擴展至包含桌面使用案例。 如果您曾經使用 Xamarin Forms 創建跨平台使用者介面,那麼您會發現 .NET MAUI 框架與它有很多相似之處。

然而,存在一些差異。 您可以使用 .NET MAUI 框架透過一個專案建構多平台應用程式,但如果需要,您可以添加平台特定的程式碼和資源。 .NET MAUI 的主要目標之一是讓您儘可能多地在單一程式碼基礎中撰寫應用程式邏輯和 UI 佈局。 .NET MAUI 將適用於所有平台,並將支援現有的 MVVM 和 XAML 模式。

.NET MAUI 允許開發人員在各種平台上進行工作,例如移動開發和 Windows 平台。

IronPDF 功能

IronPDF 是一款功能強大的 PDF 轉換器,能夠處理幾乎每個瀏覽器可以處理的任務。 該.NET開發庫讓創建、閱讀和處理PDF文件變得簡單。 IronPDF使用Google Chrome引擎將HTML轉換為PDF文件。 在其他網路技術中,IronPDF 支援 HTML、ASPX、使用 IronPDF 將 Razor Pages 轉換為 PDF,以及 MVC View。 IronPDF 支援 Microsoft .NET 應用程式(包括 ASP.NET 網頁應用程式和傳統 Windows 應用程式)。 IronPDF 也可以用來製作精美的 PDF 文件。

IronPDF 可以從包含 JavaScript、CSS 和圖像檔案的HTML 檔案建立 PDF 檔案

不僅可以使用IronPDF將HTML文件轉換為PDF,還可以將圖像文件轉換為PDF

IronPDF 可以幫助創建互動式 PDF 文件,使用 IronPDF 填寫和提交互動式表單合併和拆分 PDF 文件從 PDF 文件中提取文本和圖像,在 PDF 文件中搜索文本,將 PDF 頁面光柵化為圖像,將 PDF 轉換為 HTML,並使用 IronPrint 列印 PDF 文件

IronPDF 可以從 URL 生成文件。 對於需要 HTML 登入的情況使用 IronPDF 用於登入表單,它還允許使用自訂網路登入憑證、使用者代理、代理伺服器、Cookie、HTTP 標頭和表單變數。

IronPDF 是一個可以讀取和填寫 PDF 文件的庫,並能夠從文件中提取圖像。 它允許我們在PDF檔案中新增頁首和頁尾、文字、照片、書籤以方便導航、浮水印等到文件中。 它還允許我們在新文件或現有文件中加入和分割頁面。 IronPDF 能夠在不使用 Acrobat 檢視器的情況下將文件轉換為 PDF 物件。 也可以將 CSS 文件轉換為 PDF 文件,並且 CSS 媒體類型文件可以轉換為文檔。

在 Visual Studio 中建立新專案

首先,使用 Visual Studio Code 和 Visual Studio 創建一個專案。 在使用 Visual Studio Code 時,有必要使用命令行工具來安裝專案類型模板。

打開 Microsoft Visual Studio 軟體並前往檔案選單。 選擇「新專案」,在新專案視窗中選擇「.NET MAUI 應用程式」。本文將使用 .NET MAUI 應用程式來生成 PDF 文件並將其保存到合適的位置。

在 .NET MAUI 中使用 IronPDF 創建 PDF 文件,圖 1:在 Visual Studio 中創建新專案

在 Visual Studio 中創建一個新專案

在相應的文字框中輸入專案名稱並選擇文件路徑。 然後,點擊如下螢幕截圖中的建立按鈕。

在 .NET MAUI 中使用 IronPDF 建立 PDF 文件,圖2:配置專案

配置專案

Visual Studio 專案現在將根據 .NET MAUI App 平台生成所選應用程式的結構。 現在將開啟MainPage.cs文件以添加代碼並構建/運行應用程式。

在 .NET MAUI 中使用 IronPDF 建立 PDF 檔案,圖 3:在 MainPage.cs 檔案中新增程式碼

將程式碼添加到 MainPage.cs 文件

接下來,安裝該程式庫以測試程式碼。

安裝 IronPDF 函式庫

IronPDF 庫可以透過四種方式下載和安裝。

這些是:

  • 使用 Visual Studio。
  • 使用 Visual Studio 命令行。
  • 從 NuGet 網站直接下載。
  • 直接從 IronPDF 網站下載。

使用 Visual Studio

Visual Studio 軟體提供 NuGet Package Manager 選項,讓使用者可以將套件直接安裝到解決方案中。 以下截圖顯示如何打開 NuGet Package Manager。

在 .NET MAUI 中使用 IronPDF 创建 PDF 檔案,圖 4:使用 NuGet 套件管理器 UI 進行導航

導航至 NuGet 套件管理器 UI

這提供了一個搜尋框,以顯示來自 NuGet 網站的套件列表。在 NuGet 套件管理器中,搜尋關鍵字「IronPDF」,如以下螢幕截圖所示。

在 .NET MAUI 中使用 IronPDF 創建 PDF 文件,圖 5:從 NuGet 套件管理器 UI 中選擇 IronPdf 套件

從 NuGet 套件管理員 UI 中的 IronPDF 套件

在上圖中,列出了相關的搜索項目,選擇第一個選項以將套件安裝到解決方案中。 它將安裝在所有 .NET MAUI 應用程式平台上,例如 Android、iOS 和 Windows 平台。

使用 Visual Studio 命令行

在 Visual Studio 中,前往工具 > NuGet 套件管理員 > 套件管理員主控台

在封裝管理員主控台標籤中輸入以下行:

Install-Package IronPdf

現在,該套件將下載/安裝到當前專案的所有 .NET MAUI 平台,並準備使用。

在.NET MAUI中使用IronPDF創建PDF文件,圖6:在套件管理器控制台中安裝套件

在套件管理器控制台中安裝套件

直接從 NuGet 網站下載

第三種方法是通過訪問IronPDF NuGet 存儲庫頁面,直接從他們的網站下載 NuGet 套件。

  • 從右側菜單中選擇下載套件選項。
  • 雙擊下載的包。 將自動安裝。
  • 重新載入解決方案,該套件應在您的專案中可用。

直接從 IronPDF 網站下載

直接從他們的網站下載最新的IronPDF ZIP包。下載後,按照以下步驟將該包加入到您的專案中。

  • 在解決方案窗口中,右鍵點擊專案的相依性選項。
  • 選擇特定平台,然後選擇選項參考並瀏覽下載參考的位置。
  • 單擊確定以添加參考。

    您還需要添加對所有 .NET MAUI 支援平台的引用。

使用 IronPDF 在 .NET MAUI 應用程式上建立 PDF

當專案被建立時,將會自動生成一個名為MainPage.xaml的檔案。 這是放置 .NET MAUI 應用程式使用者介面的位置。

請參考以下程式碼。

<?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="MAUI_PDF.MainPage"
            >

    <ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">

            <Image
                Source="dotnet_bot.png"
                SemanticProperties.Description="Cute .NET bot waving hi to you!"
                HeightRequest="200"
                HorizontalOptions="Center" />

            <Label
                Text="Welcome to IronPDF!"
                SemanticProperties.HeadingLevel="Level1"
                FontSize="32"
                HorizontalOptions="Center" />

            <Button
                x:Name="PdfBtn"
                Text="Click me to generate PDF"
                SemanticProperties.Hint="Click button to generate PDF"
                Clicked="GeneratePDF"
                HorizontalOptions="Center" />
        </VerticalStackLayout>
    </ScrollView>

</ContentPage>
<?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="MAUI_PDF.MainPage"
            >

    <ScrollView>
        <VerticalStackLayout
            Spacing="25"
            Padding="30,0"
            VerticalOptions="Center">

            <Image
                Source="dotnet_bot.png"
                SemanticProperties.Description="Cute .NET bot waving hi to you!"
                HeightRequest="200"
                HorizontalOptions="Center" />

            <Label
                Text="Welcome to IronPDF!"
                SemanticProperties.HeadingLevel="Level1"
                FontSize="32"
                HorizontalOptions="Center" />

            <Button
                x:Name="PdfBtn"
                Text="Click me to generate PDF"
                SemanticProperties.Hint="Click button to generate PDF"
                Clicked="GeneratePDF"
                HorizontalOptions="Center" />
        </VerticalStackLayout>
    </ScrollView>

</ContentPage>
XML

將上述程式碼添加到MainPage.xaml文件後,打開MainPage.xaml.cs文件,並在MainPage類中包含以下方法:

private void GeneratePDF(object sender, EventArgs e)
{
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    var doc = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF!</h1> <p>I'm using IronPDF MAUI!</p>");

    //Saves the memory stream as file.
    SaveService saveService = new SaveService();
    saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", doc.Stream);
}
private void GeneratePDF(object sender, EventArgs e)
{
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    var doc = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF!</h1> <p>I'm using IronPDF MAUI!</p>");

    //Saves the memory stream as file.
    SaveService saveService = new SaveService();
    saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", doc.Stream);
}
Private Sub GeneratePDF(ByVal sender As Object, ByVal e As EventArgs)
	Dim renderer As New ChromePdfRenderer()
	Dim doc = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF!</h1> <p>I'm using IronPDF MAUI!</p>")

	'Saves the memory stream as file.
	Dim saveService As New SaveService()
	saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", doc.Stream)
End Sub
$vbLabelText   $csharpLabel

GeneratePDF 方法會生成一個包含文字 "Hello, IronPDF!..." 的新 PDF 文件,並將其保存在使用者電腦的指定位置。

在上述方法中,創建了一個新的ChromePdfRenderer對象,並調用RenderHtmlAsPdf方法來生成包含文字"Hello IronPDF!"的新PDF文件。 從一串HTML標記中「……」。接下來,將把檔案儲存到使用者裝置的任務委託給一個獨立的類別,稱為SaveService。這個類別將在下一步中創建。

完整的MainPage.xaml.cs檔案如下所示。 請確認檔案內容與下列顯示的內容相符,然後再繼續下一步:


// Change the namespace as desired, but make sure that all source files use this same namespace,
// or there will be errors!
namespace MAUI_IronPDF;    

// This namespace is required to make use of IronPDF functionality
using IronPdf;

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }

    private void GeneratePDF(object sender, EventArgs e)
    {
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        var doc = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF!</h1> <p>I'm using IronPDF MAUI!</p>");
        //Saves the memory stream as file.
        SaveService saveService = new SaveService();
        saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", doc.Stream);
    }
}

// Change the namespace as desired, but make sure that all source files use this same namespace,
// or there will be errors!
namespace MAUI_IronPDF;    

// This namespace is required to make use of IronPDF functionality
using IronPdf;

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }

    private void GeneratePDF(object sender, EventArgs e)
    {
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        var doc = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF!</h1> <p>I'm using IronPDF MAUI!</p>");
        //Saves the memory stream as file.
        SaveService saveService = new SaveService();
        saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", doc.Stream);
    }
}
Imports IronPdf

' Change the namespace as desired, but make sure that all source files use this same namespace,
' or there will be errors!
Namespace MAUI_IronPDF

	' This namespace is required to make use of IronPDF functionality

	Partial Public Class MainPage
		Inherits ContentPage

		Public Sub New()
			InitializeComponent()
		End Sub

		Private Sub GeneratePDF(ByVal sender As Object, ByVal e As EventArgs)
			Dim renderer As New ChromePdfRenderer()
			Dim doc = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF!</h1> <p>I'm using IronPDF MAUI!</p>")
			'Saves the memory stream as file.
			Dim saveService As New SaveService()
			saveService.SaveAndView("IronPDF HTML string.pdf", "application/pdf", doc.Stream)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

現在,請在專案的根目錄中創建一個新的類別文件,名為SaveService.cs,並添加以下原始碼:

// Change the namespace as desired, but make sure that all source files use this same namespace,
// or there will be errors!
namespace MAUI_IronPDF
{
    // SaveService partial class declaration ... this allows a layer of abstraction
    // as we implement the save file details specially for each platform on which this app will
    // operate! 
    public partial class SaveService
    {
        public void SaveAndView(string filename, string contentType, MemoryStream stream)
        {
            SaveFile(filename, contentType, stream);
        }

        // Additional partial files will provide implementations for this method specifically.
        partial void SaveFile(string filename, string contentType, MemoryStream stream);
    }
}
// Change the namespace as desired, but make sure that all source files use this same namespace,
// or there will be errors!
namespace MAUI_IronPDF
{
    // SaveService partial class declaration ... this allows a layer of abstraction
    // as we implement the save file details specially for each platform on which this app will
    // operate! 
    public partial class SaveService
    {
        public void SaveAndView(string filename, string contentType, MemoryStream stream)
        {
            SaveFile(filename, contentType, stream);
        }

        // Additional partial files will provide implementations for this method specifically.
        partial void SaveFile(string filename, string contentType, MemoryStream stream);
    }
}
' Change the namespace as desired, but make sure that all source files use this same namespace,
' or there will be errors!
Namespace MAUI_IronPDF
	' SaveService partial class declaration ... this allows a layer of abstraction
	' as we implement the save file details specially for each platform on which this app will
	' operate! 
	Partial Public Class SaveService
		Public Sub SaveAndView(ByVal filename As String, ByVal contentType As String, ByVal stream As MemoryStream)
			SaveFile(filename, contentType, stream)
		End Sub

		' Additional partial files will provide implementations for this method specifically.
		Partial Private Sub SaveFile(ByVal filename As String, ByVal contentType As String, ByVal stream As MemoryStream)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

由於在使用者裝置上儲存內容的實作細節會因平台(Windows、Android、MacOS 等)而異,因此有必要為每種裝置類型撰寫特定平台的程式碼,以支援應用程式。 為了實現這一點,我們將SaveService定義為一個部分類別(為了抽象目的),其中包含一個名為SaveAndView的部分方法。 接下來,這個方法的實現將在一個獨立的 SaveService.cs 部分類中定義,用於方案資源管理器中平台文件夾內嵌的一個或多個文件夾(見下圖):

在 .NET MAUI 中使用 IronPDF 創建 PDF 文件,圖 7:實現跨平台的文件夾結構

實現跨平台的文件夾結構

為了簡化,本教程將僅為 Windows 平台定義上述的部分文件。 在 Windows 平台資料夾下建立一個新的 SaveService.cs 檔案,包含如下所示的程式碼:

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

namespace MAUI_IronPDF;

public partial class SaveService
{
    async partial void SaveFile(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();
            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 MAUI_IronPDF;

public partial class SaveService
{
    async partial void SaveFile(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();
            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);
            }
        }
    }
}
Imports Windows.Storage
Imports Windows.Storage.Pickers
Imports Windows.Storage.Streams
Imports Windows.UI.Popups

Namespace MAUI_IronPDF

	Partial Public Class SaveService
		Private Async Sub SaveFile(ByVal filename As String, ByVal contentType As String, ByVal stream As MemoryStream)
			Dim stFile As StorageFile
			Dim extension As String = Path.GetExtension(filename)
			'Gets process windows handle to open the dialog in application process.
			Dim windowHandle As IntPtr = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle
			If Not Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons") Then
				'Creates file save picker to save a file.
				Dim savePicker As New FileSavePicker()
				savePicker.DefaultFileExtension = ".pdf"
				savePicker.SuggestedFileName = filename
				'Saves the file as PDF file.
				savePicker.FileTypeChoices.Add("PDF", New List(Of String)() From {".pdf"})

				WinRT.Interop.InitializeWithWindow.Initialize(savePicker, windowHandle)
				stFile = Await savePicker.PickSaveFileAsync()
			Else
				Dim local As StorageFolder = ApplicationData.Current.LocalFolder
				stFile = Await local.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting)
			End If
			If stFile IsNot Nothing Then
				Using zipStream As IRandomAccessStream = Await stFile.OpenAsync(FileAccessMode.ReadWrite)
					'Writes compressed data from memory to file.
					Using outstream As Stream = zipStream.AsStreamForWrite()
						outstream.SetLength(0)
						'Saves the stream as file.
						Dim buffer() As Byte = stream.ToArray()
						outstream.Write(buffer, 0, buffer.Length)
						outstream.Flush()
					End Using
				End Using
				'Create message dialog box.
				Dim msgDialog As New MessageDialog("Do you want to view the document?", "File has been created successfully")
				Dim yesCmd As New UICommand("Yes")
				msgDialog.Commands.Add(yesCmd)
				Dim noCmd As New UICommand("No")
				msgDialog.Commands.Add(noCmd)

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

				'Showing a dialog box.
				Dim cmd As IUICommand = Await msgDialog.ShowAsync()
				If cmd.Label = yesCmd.Label Then
					'Launch the saved file.
					Await Windows.System.Launcher.LaunchFileAsync(stFile)
				End If
			End If
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

建立並運行 MAUI 應用程式。 將出現一個包含以下介面的窗口:

在.NET MAUI中使用IronPDF創建PDF文件,圖8:MAUI應用的UI

MAUI 應用程式的用戶介面

點擊“生成PDF”按鈕。 過幾分鐘後,會彈出一個窗口以選擇生成的 PDF 文件的儲存位置。

在 .NET MAUI 中使用 IronPDF 創建 PDF 文件,圖 9:選擇保存 PDF 文件的位置

選擇一個位置來儲存 PDF 檔案

結論

IronPDF 是最常用的 PDF 轉換庫之一,允許您生成、閱讀、編輯和格式化 PDF。 IronPDF 庫提供了許多優勢和功能,包括一個瀏覽器引擎,可以將指定的 URL 轉換為 PDF 文件,允許您將 CSS 添加到 HTML 字串並將其轉換為 PDF 文件,還允許您填寫 PDF 表單。 IronPDF 的所有功能都包含在一個庫中。

IronPDF 提供多種價格結構。 IronPDF 的基本價格從 $749 起。 產品支援和更新也可透過支付一年的費用獲得。 免版稅再分發覆蓋也可以作為附加選項購買。

總而言之,IronPDF 被推薦是因為它為處理 PDF 的開發人員提供了出色的性能和大量的功能。 它支援通用平台,如 .NET MAUI。 它還提供優秀的幫助和文件,讓您能夠充分利用IronPDF庫及其眾多功能。

Chipego
奇佩戈·卡林达
軟體工程師
Chipego 擁有天生的傾聽技能,這幫助他理解客戶問題,並提供智能解決方案。他在獲得信息技術理學學士學位後,于 2023 年加入 Iron Software 團隊。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但隨著他每天找到新的方法來支持客戶,他對所有產品的了解也在不斷增長。他喜歡在 Iron Software 的協作生活,公司內的團隊成員從各自不同的經歷中共同努力,創造出有效的創新解決方案。當 Chipego 離開辦公桌時,他常常享受讀好書或踢足球的樂趣。
< 上一頁
使用 Blazor 教程創建 PDF 文件
下一個 >
如何在C#中將圖片轉換為PDF【代碼示例教學】