如何在 MAUI 中将 XAML 转换为 PDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

查克尼特·宾

.NET MAUI(多平台应用程序用户界面)是一个用于构建本地设备应用程序的跨平台框架。 它扩展自Xamarin.Forms,并且是统一的.NET 6生态系统的一部分。 它使得.NET应用程序开发人员能够使用通用的UI组件和单一的代码库为桌面、网络和移动平台创建应用程序。 MAUI也允许在必要时添加特定平台的代码和资源。

IronPdf 允许您从 MAUI 页面生成 PDF 文档,使在这些应用程序中创建 PDF 文件/页面成为可能。 然而,IronPdf目前不支持移动平台。

IronPdf 扩展包

IronPdf.Extensions.Maui包IronPdf主包的扩展。 由于是扩展,因此仍需要 IronPdf 主包将 MAUI 应用程序的内容页面渲染为 PDF 文档。

PM > Install-Package IronPdf.Extensions.Maui
适用于PDF的C# NuGet库

安装使用 NuGet

安装包 IronPdf.Extensions.Maui

将 MAUI 页面渲染为 PDF

编辑 MainPage.xaml.cs 文件

  • 从 MainPage.xaml 文件转到其代码文件 MainPage.xaml.cs。
  • 将名为 OnCounterClicked 的函数更改为 PrintToPdf。 使用下面的代码样本。

    要将您的MAUI页面转换为PDF,请使用RenderContentPageToPdf方法。 该方法可以通过实例化 ChromePdfRenderer 类来访问。 此方法将为您提供一个PdfDocument对象,您可以使用SaveAs方法或PDF查看器保存或查看该对象。在MAUI中查看PDF.

    请注意
    "(《世界人权宣言》) 将内容页面渲染为 PDF 方法暂不支持数据绑定。

:path=/static-assets/pdf/content-code-examples/how-to/xaml-to-pdf-maui-mainpage-xaml-cs.cs
using IronPdf.Extensions.Maui;

namespace mauiSample;

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

    private void PrintToPdf(object sender, EventArgs e)
    {
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Apply HTML header
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<h1>Header</h1>",
        };

        // Render PDF from Maui Page
        PdfDocument pdf = renderer.RenderContentPageToPdf<MainPage, App>().Result;

        pdf.SaveAs(@"C:\Users\lyty1\Downloads\contentPageToPdf.pdf");
    }
}
Imports IronPdf.Extensions.Maui

Namespace mauiSample

	Partial Public Class MainPage
		Inherits ContentPage

		Public Sub New()
			InitializeComponent()
		End Sub

		Private Sub PrintToPdf(ByVal sender As Object, ByVal e As EventArgs)
			Dim renderer As New ChromePdfRenderer()

			' Apply HTML header
			renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {.HtmlFragment = "<h1>Header</h1>"}

			' Render PDF from Maui Page
			Dim pdf As PdfDocument = renderer.RenderContentPageToPdf(Of MainPage, App)().Result

			pdf.SaveAs("C:\Users\lyty1\Downloads\contentPageToPdf.pdf")
		End Sub
	End Class
End Namespace
VB   C#

此外,您可能已经注意到,从XAML渲染还可以让您完全访问RenderingOptions中的所有功能。 这包括添加文本和 HTML 页眉和页脚. 您还可以邮票图像添加页码,并且甚至可以自定义页面的大小和布局。 使用此方法创建 PDF 时,所有这些选项都可用。

编辑 MainPage.xaml 文件

在 MainPage.xaml 文件中,将默认的 OnCounterClicked 函数替换为新的 PrintToPdf 函数。 单击此按钮将运行 PrintToPdf 方法并创建 PDF。

<Button
x:Name="PrintToPdfBtn"
Text="Print to pdf"
SemanticProperties.Hint="Click to print page as PDF"
Clicked="PrintToPdf"
HorizontalOptions="Center" />
<Button
x:Name="PrintToPdfBtn"
Text="Print to pdf"
SemanticProperties.Hint="Click to print page as PDF"
Clicked="PrintToPdf"
HorizontalOptions="Center" />
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<Button x:Name="PrintToPdfBtn" Text="Print to pdf" SemanticProperties.Hint="Click to print page as PDF" Clicked="PrintToPdf" HorizontalOptions="Center" />
VB   C#

输出 PDF

在您保存PDF文件之前,可以使用PdfDocument提供的方法对其进行更多更改。 你可以合并页面,拆分页面,或旋转它们。 您还可以添加注释书签到您的 PDF 中。

下载 .NET MAUI 应用程序项目

您可以下载本指南的完整代码。它以压缩文件的形式提供,您可以将其作为.NET MAUI App项目在Visual Studio中打开。

下载完整的 MAUI 示例项目

Chaknith related to 下载 .NET MAUI 应用程序项目

查克尼特·宾

软件工程师

Chaknith 是开发者中的福尔摩斯。他第一次意识到自己可能在软件工程方面有前途,是在他出于乐趣做代码挑战的时候。他的重点是 IronXL 和 IronBarcode,但他为能帮助客户解决每一款产品的问题而感到自豪。Chaknith 利用他从直接与客户交谈中获得的知识,帮助进一步改进产品。他的轶事反馈不仅仅局限于 Jira 票据,还支持产品开发、文档编写和市场营销,从而提升客户的整体体验。当他不在办公室时,他可能会在学习机器学习、编程或徒步旅行。