宁可枝头抱香死,何曾吹落北风中。这篇文章主要讲述介绍Dynamics 365/Power Apps生成PDF的功能相关的知识,希望能为你提供帮助。
我是微软Dynamics 365 &
Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复437或者20210319可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!
以前要生成PDF可能需要借助第三方工具,现在呢?Dynamics 365/Power Apps提供了生成PDF功能,配置下就可以,方便多了,今天我们来介绍下生成PDF功能。
Dynamics 365 Sales Enterprise App提供了生成PDF的功能,根据文档 Create PDF files from sales records 的说法从2020 release wave 2更新开始支持到所有的自定义实体了。我们先来看看标准的Dynamics 365 Sales Enterprise App如何配置。我的环境 https://thomasdemo.crm.dynamics.com/ 并没有Dynamics 365 Sales Enterprise App,有一个Sales Team Member App,从左侧的导航栏看不到PDF设置界面,但是我可以通过类似 https://thomasdemo.crm.dynamics.com/main.aspx?appid=ed8d20c5-d285-eb11-b1ab-000d3a8c0d45&
pagetype=control&
controlName=MscrmControls.FieldControls.CCFadminsettings&
data=https://www.songbingjia.com/android/%7B"id"%3A"enhance_pdf_generation"%7D 这样的URL(appid参数的值请替换成Dynamics 365 Sales Enterprise App或者Sales Team Member App的Id)来打开设置页面如下:
文章图片
默认只为报价单(quote)实体启用了PDF功能,为其他实体启用则很简单,将前面的复选框选中后点击Save按钮即可,我这里为客户启用下,并保存。这个会立即生效,打开某条客户记录,可以看到命令栏中增加了 Export to PDF 按钮,如下图。
文章图片
点击按钮出现的窗口如下,应该是使用的第一个Word模板来生成了PDF预览,如果有多个Word模板则可以选择某个来生成预览。
文章图片
点击窗口中的 Download 按钮就会将该PDF下载,文件名就是 Save as中设定的文件名。如果点击的是 Email 按钮则会创建一个Email记录,将该PDF添加到了该Email记录中,如果发送的话当然会作为邮件的附件发送,当然这个Email记录还自动关联了当前记录。
文章图片
如果点击的是【Save to Dynamics】按钮,则会将生成的PDF作为附件存储到当前记录,并显示在Timeline中,如下图。
文章图片
如果我要点击按钮直接生成PDF呢?可以使用 exportPdf Action ,我这里提供个实例代码如下,如果是使用Chrome浏览器会直接在新窗口中打开这个PDF。
var req = new XMLHttpRequest(); req.open("POST", Xrm.Utility.getGlobalContext().getClientUrl() + "/api/data/v9.2/ExportPdfDocument", true); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.onreadystatechange = function () { if (this.readyState == 4) { req.onreadystatechange = null; if (this.status == 200) { var responseJSON = JSON.parse(this.responseText); window.open("data:application/pdf; base64," + responseJSON.PdfFile); Xrm.Navigation.openAlertDialog({"text":"生成PDF成功!"}); } else { var error = JSON.parse(this.response).error; Xrm.Navigation.openErrorDialog({message:error.message }); } } }; var reqContent = { "EntityTypeCode":1, "SelectedTemplate":{ "@odata.type":"Microsoft.Dynamics.CRM.documenttemplate", "documenttemplateid":"9d6916e4-1033-4e03-a0e3-d15a5b133a9a" }, "SelectedRecords":"[\\"86df3aa7-9888-eb11-b1ac-000d3a8c07a8\\"]" }; req.send(JSON.stringify(reqContent));
如果你的Dynamics 365/Power Apps环境没有Sales相关的App呢,如何启用?这里可以参考Debajit Dutta的文章 How to enable or disable “Export to PDF” option for entities in CDS/ Dynamics 365 through code. ,我这里不罗嗦了,直接上示例代码如下,这个要更改记录的GUID是固定的,改的字段是pdfsettingsjson,我这里的值包括了之前已经设置好的,之前我已经设置好了quote和account启用。执行后应该可以立即看到效果,如果看不到登出账号重新登陆下当前账号。
var data = https://www.songbingjia.com/android/{"pdfsettingsjson": "{\\"quote\\":true,\\"account\\":true,\\"contact\\":true}" } Xrm.WebApi.updateRecord("pdfsetting", "3e5d32bb-3fd3-424e-81f0-7d4faf5aee94", data).then( function success(result) { Xrm.Navigation.openAlertDialog({"text":"更改生成PDF设置成功!"}); }, function (error) { Xrm.Navigation.openErrorDialog({message:error.message}); } );
【介绍Dynamics 365/Power Apps生成PDF的功能】如何制作Word 模板来生成PDF呢,可以参考官方文档 Use Word templates to create standardized documents ,我以前也有博文介绍过。
推荐阅读
- 物联网智能网关-12以网关为核心,互联网为基础构建物联网平台
- IPC之消息队列·即时通讯小程序
- 找工作总结
- Power Automate实用常见问题解答(FAQ)
- 基于树莓派(Raspberry Pi3)平台通过微信(WeChat模块)进行交互的智能家居实现
- IB《智能建筑与城市信息》2012布线发展趋势采访稿
- 汇总字段介绍以及在汇率变化后货币数据类型的汇总字段怎么变的实践研究
- 博客大赛蓝牙BLE详解
- 物联网中间件平台-05YFIOs策略开发指南