1.简单介绍
在应用程序中开发中,调用打印机进行打印是比较常见的功能,如果是.NET应用程序,会有BarTender,Fastreport等框架。
PowerApps是微软低代码平台Power Platform的一款产品,一般用来制作App供用户进行信息交互。在PowerApps中,查看了一下和打印(print)相关的组件,好像只有如下的两个icon,

如果要实现一下打印功能,则也可以借助一些别的方式,PowerApps Component Framework(简称PCF)允许用户进行组件的制作,导入和添加。发现Power Platform社区有一个开源的PCF组件 PrintIt-Component 。
这边将在PowerApps中尝试使用一下这个开源的组件进行数据的打印
2. 具体说明
2.1 准备阶段
首先需要开启PowerApps所在environment的Power Apps component framework for canvas apps 功能,同时从github平台上下载PrintIt组件。
2.1.1 开启PCF功能
- 打开Power Platform admin center, 选择对应的environment,然后点击上方的Settings按钮,

- 在 Settings界面中,点击如下Features链接

- 打开Power Apps component framework for canvas apps开关,如下图所示,

2.1.2 下载打印组件
地址是 https://github.com/yashag2255/PrintIt-Component

note, 发现这个开源组件是用Typescript制作的
2.2 使用PCF组件
2.2.1 导入PrintIt solution
- 点击Import solution

- 在 Import a solution 界面中,点击Browse按钮,选择打印solution的zip文件

- 导入成功后,打印solution将显示在界面中,

2.2.2 制作PowerApps
假定有一个SharePoint online list,存放了2024年巴黎奥运会奖牌数据,如下图,

2.2.2.1 添加打印组件
- 创建一个blank canvas app,然后点击左侧的添加组件按钮,同时点击右侧的Get more components按钮,如下图所示

note, 当前Get more components按钮的位置和以前是不一样的。
2)在右侧弹出的面板中,点击Code tab,然后选择特定的打印组件,

- 添加了component后,在控件栏中将多出一个打印组件出来

2.2.2.2 添加list数据源
在PowerApps中,添加巴黎奥运会奖牌数据所在的SharePoint online list,

2.2.2.3 Canvas界面
- 在Canvas中,添加一个Vertical Gallery,然后设定Items属性如下

2)添加打印组件到界面中,最后Canvas app界面是下图这样子的,

3) 设定打印组件的DataToPrint属性

Substitute(
Concatenate(
"[",
Concat(
Gallery1.AllItems,
"{" & Char(34) & "Country Name" & Char(34) & ":" & Char(34) & Title & Char(34) & "," & Char(34) & "Continent" & Char(34) & ":" & Char(34) & Continent & Char(34) & "," & Char(34) & "Gold" & Char(34) & ":" & Char(34) & Gold & Char(34) & "," & Char(34) & "Silver" & Char(34) & ":" & Char(34) & Silver & Char(34) & "," & Char(34) & "Bronze" & Char(34) & ":" & Char(34) & Bronze & Char(34) & "},"
),
"]"
),
",]",
"]"
)
5)保存并发布canvas app
2.2.2.3 运行一下
- 运行canvas app,点击Print it按钮,如下图所示,

2)出现的打印界面如下图所示,


这样的话,PowerApps就有了一个简单的打印功能了,样式可能需要改进一些。
3.总结
本文简单记录了一下在PowerApps中使用开源打印组件PrintIt-Component的过程,具体的细节相对多一些。有了开源社区的组件,我们可以制作出功能更丰富的PowerApps。
本文如果哪里有错误,麻烦告之,谢谢谢谢!