PowerApps PDF Viewer无法打开SharePoint存储的PDF文件求助
问题描述
我制作了一个简单PDF,在存入SharePoint前作为变量时,PDF Viewer能正常打开。相关代码:
Set( varMyPDF; PDF( PDFtosubmit; { Orientation: PaperOrientation.Portrait; Size: PaperSize.A4; Margin: "20px"; ExpandContainers: true } ) )
上传到SharePoint的代码:
makePDF.Run({file:{name: "Name"; contentBytes: varMyPDF}})
我在同一屏幕用垂直画廊展示该文档库内容,尝试两种方式打开PDF均失败:
- 画廊OnSelect设置:
Set(varMyPDF; ThisItem.'Koppeling naar item')
→ 报错:the PDF can't be opened - open in browser instead
- 通过Power Automate流
getPDF获取内容,流步骤:- PowerApps触发器(接收项目ID参数)
- SharePoint-获取文件内容
- Compose(base64转二进制)
- 返回文本格式结果给Power Apps
画廊OnSelect代码:
Set(varMyPDF; getPDF.Run(ThisItem.'Id ({Identifier})').result)
→ 报错:the PDF can't be open - check if the PDF is coming through https connection
找不到在Power Automate中强制HTTPS响应的方法,求解决方案。
解决方案
方案1:直接绑定文件绝对URL
无需变量中转,将PDF Viewer控件的Document属性直接绑定画廊选中项的绝对URL:
Gallery1.Selected.AbsoluteUri
PDF Viewer会通过HTTPS直接请求SharePoint上的PDF文件,规避格式不兼容问题。
方案2:修正Power Automate流的返回格式
如果必须通过流获取内容,调整流步骤:
- 保留PowerApps触发器(接收ID参数)
- SharePoint-获取文件内容(直接取
File content) - 跳过base64转二进制的Compose操作,直接将
File content以二进制数据格式返回给Power Apps - 在Power Apps中,将返回的二进制数据直接赋值给PDF Viewer的
Document属性:
getPDF.Run(Gallery1.Selected.'Id ({Identifier})').fileContent
方案3:修复变量赋值格式
若坚持用变量,方案1的报错是因为'Koppeling naar item'是内部链接对象,不是PDF Viewer支持的格式,改为绑定文件的二进制内容:
Set(varMyPDF; ThisItem.ContentBytes)
再将PDF Viewer的Document属性设为varMyPDF。
关键说明
- PDF Viewer仅支持二进制数据或HTTPS开头的绝对URL,不支持SharePoint内部链接对象或格式错误的文本数据
- Power Automate返回二进制数据时默认通过HTTPS传输,之前的错误是因为转成文本格式导致数据损坏
内容的提问来源于stack exchange,提问作者Istvan Kokuti
相关产品推荐
相关产品推荐

