如何在 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 文件中,用新的 PrintToPdf 函数替换默认的 OnCounterClicked 函数。点击该按钮将运行 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 应用程序项目

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

点击此处下载项目。

查克尼特·宾

软件工程师

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