ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

介绍Dynamics 365/Power Apps生成PDF的功能

2021-03-19 19:51:36  阅读:331  来源: 互联网

标签:Power App Apps Sales 生成 PDF Dynamics 365


我是微软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=%7B"id"%3A"enhance_pdf_generation"%7D 这样的URL(appid参数的值请替换成Dynamics 365 Sales Enterprise App或者Sales Team Member App的Id)来打开设置页面如下:

image.png

默认只为报价单(quote)实体启用了PDF功能,为其他实体启用则很简单,将前面的复选框选中后点击Save按钮即可,我这里为客户启用下,并保存。这个会立即生效,打开某条客户记录,可以看到命令栏中增加了 Export to PDF 按钮,如下图。

image.png


点击按钮出现的窗口如下,应该是使用的第一个Word模板来生成了PDF预览,如果有多个Word模板则可以选择某个来生成预览。

image.png


点击窗口中的 Download 按钮就会将该PDF下载,文件名就是 Save as中设定的文件名。如果点击的是 Email 按钮则会创建一个Email记录,将该PDF添加到了该Email记录中,如果发送的话当然会作为邮件的附件发送,当然这个Email记录还自动关联了当前记录。

image.png


如果点击的是【Save to Dynamics】按钮,则会将生成的PDF作为附件存储到当前记录,并显示在Timeline中,如下图。

image.png


如果我要点击按钮直接生成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 =
    {
        "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});
    }
);


如何制作Word 模板来生成PDF呢,可以参考官方文档 Use Word templates to create standardized documents ,我以前也有博文介绍过。

标签:Power,App,Apps,Sales,生成,PDF,Dynamics,365
来源: https://blog.51cto.com/luoyong/2665804

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有