首页 > 其他分享 >在Dynamics 365用Power Automate根据模板生成PDF

在Dynamics 365用Power Automate根据模板生成PDF

时间:2023-04-05 23:46:20浏览次数:33  
标签:控件 Automate Power -- SharePoint 选择 合同 PDF 模板

  在Dynamics 365的项目中经常遇到需要把CRM的表单根据模板生成PDF以便打印的需求,本文以合同表单根据合同模板生成PDF文件为例,介绍通过Power Automate的云端流实现该需求的方法。

  先看最终效果:

     

  下面是详细的步骤

  step1 环境需求

  我在Power Automate中用的是SharePoint连接器来获取和生成文件,因此组织中需要有SharePoint应用和权限,CRM是online版本,如果是OP版本还需要创建OP的连接器。

  step2 创建Word模板

  1、Word模板中需要用到“纯文本内容控件”和“重复分区内容控件”,它们位于“开发工具”菜单栏。

  

   如果看不到“开发工具”栏,按以下步骤打开它

  · 点击“文件”--“选项”

  · 在“Word选项”窗口点击“自定义功能区”,将左侧选项栏中的“开发工具”添加到右侧,点击确定。

  

 

  2、准备好合同模板的word文档,注意文档不能有任何修订和批注内容,不然SharePoint无法将它作为模板进行内容填充。

  

 

  3、在需要替换单个文本的位置点击并插入“纯文本内容控件”,在控件内输入变量名,这里我插入了contractnum、accountname、contactname、address、phone、email几个纯文本控件,这些控件的内容将在填充模板时根据合同和客户上的字段进行动态替换。

  

 

  4、如果合同中需要展示多行动态表格,例如和合同明细、产品明细等,则需要用到“重复分区内容控件”,选中模板中的表格行,点击“重复分区内容控件”。

  

  5、插入控件后点击属性,给控件的标题和标记命名,我这里给两个都命名“productsection”

  

 

   6、在表格行的单元格内再插入“纯文本内容控件”,并给纯文本内容控件的属性标题和标记命名,后面填充内容时需要用到这些变量名。

   

 

   step3 将Word模板上传到SharePoint

  1、在SharePoint中新建一个文档库,这里我已经创建了一个合同模板文档库

  

 

   2、在合同模板文档库内创建一个Template Files文件夹,用于存放临时文件,将前面准备好的Word模板上传到合同模板文档库内。

  

 

  step4 创建Power Automate云端流

  1、在Power Automate首页,选择创建“即时云端流”,触发方式选择“当收到HTTP请求时”

  

 

 

 

 

  2、给云端流创建步骤,以下是整个流所有步骤的总览,下面会介绍每个步骤的细节。

 

  

 

 

 

  step5 当收到HTTP请求步骤

 

  

  1、method选择POST

  2、请求正文JSON架构为

{
    "type": "object",
    "properties": {
        "recordid": {
            "type": "string"
        },
        "productlist": {
            "type": "string"
        }
    }
}

  下面是请求传参的示例,recordid为合同的id,在Power Automate中根据id获取合同数据,productlist为合同明细的JSON格式字符串,注意productlist中的属性名要和step2第6点纯文本内容控件属性的标题一致,在后续步骤解析这个字符串用来填充模板中的动态表格。

{
  "recordid": "1489C313-0993-ED11-AAD1-000D3A856701",
  "productlist": "[{\"prdno\":\"01\",\"prdname\":\"商品A\",\"prdtype\":\"商品A\",\"prdcount\":\"20\",\"price\":\"400\",\"pricenotax\":\"8000\",\"totalprice\":\"8000\"},{\"prdno\":\"11\",\"prdname\":\"商品A\",\"prdtype\":\"商品A\",\"prdcount\":\"20\",\"price\":\"400\",\"pricenotax\":\"8000\",\"totalprice\":\"8000\"}]"
}

 

  step6 分析产品列表JSON

  1、在“当收到HTTP请求时”步骤下点击“+新步骤”,命名“分析产品列表JSON”,选择“数据操作”,在操作栏选择“分析JSON”

  

 

 

 

  2、步骤内容选择动态内容--收到HTTP请求时--productlist。

 

  

 

 

 

 

  3、架构内容为以下json代码,也可以点击“从示例生成”,输入入参示例中productlist的json值(注意要去掉"\"),Power Automate会自动生成架构。

 

 

{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "prdno": {
                "type": "string"
            },
            "prdname": {
                "type": "string"
            },
            "prdtype": {
                "type": "string"
            },
            "prdcount": {
                "type": "string"
            },
            "price": {
                "type": "string"
            },
            "pricenotax": {
                "type": "string"
            },
            "totalprice": {
                "type": "string"
            }
        },
        "required": [
            "prdno",
            "prdname",
            "prdtype",
            "prdcount",
            "price",
            "pricenotax",
            "totalprice"
        ]
    }
}

 

 

  step7 按ID获取合同

  1、在上面的步骤下继续添加步骤,命名“按ID获取合同”,选择Microsoft Dataverse,操作选择按ID获取行。

  

 

 

 

   2、表名称选择合同(Dataverse中的合同表),行ID选择动态内容--当收到HTTP请求时--recordid。

  

 

 

 

   step8 获取合同客户

  新增步骤,命名“获取合同客户”,跟上面一样选择Microsoft Dataverse,按ID获取行,表名称选择客户,行ID选择动态内容--按ID获取合同--合同相对方(值),这个字段是合同上关联客户的字段,这样就可以获取到合同上关联客户的电话邮箱地址等信息。

  

 

 

   

  step9 获取合同模板

  1、新增步骤,命名“获取合同模板”,选择SharePoint,操作选择“获取文件内容”。

  

 

  2、站点地址选择组织内绑定的SharePoint站点,在文件标识符栏点击右侧的文件夹图标,选择DocLib/销售合同模板.docx。

  

 

 

   

  step10 填充合同Word模板

  1、新增步骤,命名“填充合同Word模板”,选择“Word Online”,操作选择“填充Microsoft Word模板”

  

 

  2、位置选择“SharePoint Site - Communication site”,文档库选择“合同模板”,文件选择“销售合同模板.docx”

 

   

 

  3、在选择文件后,步骤会自动弹出我们之前在合同模板文档中插入的纯文本内容控件字段,我们给这些字段填入step7和step8获取到的动态内容字段。

  

 

  4、虚线框内为重复分区内容控件,可以看到里面的字段对应step2第6点内我们插入的控件属性名,这里不要单独给这些字段填充值,点击右侧的图标按钮,切换到输入整个数组

  

 

  5、在重复分区内容控件收起后,给productsection字段填入“分析产品列表JSON”--正文

  

 

 

   

  step11 创建合同Word文件

  1、新增步骤,命名“创建合同Word文件”,选择SharePoint,操作选择“创建文件”

  

 

 

 

  2、站点地址选择组织内的SharePoint站点,文件夹路径选择“/DocLib/Temp Files”,文件名为 Contra_pdf_@{guid()}.docx(注意文件名后面一定要带.docx后缀,SharePoint根据后缀名确认生成的文件类型),可以根据需求定义文件名格式,文件名中带使用表达式生成的guid可以避免重名,文件内容选择动态内容--填充合同Word模板--Microsoft Word 文档。

  

 

 

   

  step12 将合同Word文档转换为 PDF

  1、新增步骤,命名“将合同Word文档转换为 PDF”,选择“Word Onlie”,操作选择“将Word文档转换为PDF”。

  

 

 

 

 

   2、位置选择SharePoint Site - Communication site,文档库选择合同模板,文件选择 /Temp Files/+“动态内容--创建合同word文件--Name”

  

 

 

   step13 创建合同pdf文件

  1、新增步骤,命名“创建合同pdf文件”,选择SharePoint,操作选择“创建文件”

  

 

  2、站点地址选择组织内的SharePoint站点,文件夹路径选择“/DocLib/Temp Files”,文件名为 Contra_pdf_@{guid()}.pdf(注意文件名后面一定要带.pdf后缀,SharePoint根据后缀名确认生成的文件类型),可以根据需求定义文件名格式,文件名中带使用表达式生成的guid可以避免重名,文件内容选择动态内容--将合同word文档转换为PDF--PDF文档。

  

 

 

   step14 获取合同pdf文件内容

  1、新增步骤,命名“获取合同pdf文件内容”,选择SharePoint,操作选择“获取文件内容”。

   2、站点地址选择组织内绑定的SharePoint站点,在文件标识选择“动态内容--创建合同pdf文件--Id”。

  

 

  step15 响应

  1、新增步骤,选择“请求”,操作选择“响应”

  

 

 

  2、正文选择“动态内容--创建合同pdf文件--Path”。

 

  

 

 

 

 

  3、点击保存,至此整个云端流创建完成了。

 

 

 

  step16 测试效果

 

  1、把“当收到HTTP请求时”步骤的HTTP POST URL放到Postman测试,云端流成功返回了生成pdf文件的路径。

 

  

 

 

  2、进入SharePoint站点--合同模板--Temp Files查看,可以看到postman返回路径下对应的文件

 

  

 

  3、在Dynamics 365的自定义按钮执行的js中调用这个云端流,将返回的路径前面拼接SharePoint的站点域名,把拼接到的完整url在浏览器的新窗口中打开,就实现了最开始动态图中的效果,具体操作就不赘述了。当然打开这个路径url需要用户默认登录了SharePoint,因为D365当前登录账号和SharePoint账号是一体的,可以直接打开,否则需要登录SharePoint,基于此我们也可以直接返回pdf文件的base64字符串,这样请求方就能直接下载这个文件。Power Automate还有很多强大的功能,我这里也只是一个简单的尝试,愿大家一起探索更多玩法,多多交流!

  

 

 

 

参考:https://dynamicsbackpage.wordpress.com/2019/11/24/generating-dynamic-word-documents-for-dynamics-365-using-power-automate/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   

 

标签:控件,Automate,Power,--,SharePoint,选择,合同,PDF,模板
From: https://www.cnblogs.com/fieldty/p/17288302.html

相关文章

  • pdf提取excel表格-财务报表
    方式一、本来是pdf可以直接用acrobatpdf,如果不行就粘贴到word然后粘贴到excel然后分列。一般第二种的格式会好很多。方式二、https://www.adobe.com/acrobat/online/pdf-to-excel.html方式三、[Tabula:从PDF中提取表格](https://tabula.technology/) ......
  • 使用PowerShell 连接Exchange及Lync/Skype服务器
    需求背景在运维Exchange/Lync/Skype时,我们经常会遇到需要创建很多自动化任务来代替我们完成重复的工作,就需要能够使用脚本连接至对应应用服务器进行自动化处理。此时我们可以使用PowerShell的方式来完成。那么我们应该如何连接到对应服务器呢?操作步骤创建PowerShell.ps1脚本:$UserC......
  • Java:如何在PowerPoint幻灯片中创建散点图
    散点图是通过两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。散点图将序列显示为一组点,值由点在图表中的位置表示,类别由图表中的不同标记表示,通常用于比较跨类别的聚合数据。本文将为您介如何通过Java代码在PowerPoint幻灯片中创建......
  • pdf页转图片
    pdf转图片依赖<dependency><groupId>org.apache.pdfbox</groupId><artifactId>fontbox</artifactId><version>2.0.24</version></dependency><dependency><groupId>org.apache.pdfbox</g......
  • java使用浏览器请求下载pdf文件
    java使用浏览器请求下载pdf文件代码/***下载pdf文件**@parampdfFileUrl文件地址*@paramfileName文件名称*/publicstaticvoiddownloadPdf(StringpdfFileUrl,StringfileName){ServletRequestAttributesrequestAttributes=(ServletRequestAttr......
  • Cadence应用笔记:原理图导PDF
    设置1.打开菜单栏选择打印2.勾选黑白3.选择一个虚拟打印机......
  • 添加pdf水印
    添加pdf水印依赖<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.3</version></dependency>代码/***添加水印**@paramsrcPdfPath文件路径*@paramt......
  • pdf 一键生成书签目录
    1、书签原始数据获得一般有许多软件可以通过提供章节序号章节标题章节页码的格式来生成目录第1章基础A111.1Scala解释器11.2声明值和变量31.3常用类型41.4算术和操作符重载51.5调用函数和方法71.6apply方法81.7Scaladoc9对于该格式,可以网上搜......
  • PowerShell
    WindowsPowerShell是微软发布的一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NETFramework的强大功能。它引入了许多非常有用的新概念,从而进一步扩展了您在Windows 命令提示符和WindowsScriptHost环境中获得的知识和创建的脚本。Windows PowerShe......
  • 在 Adobe Acrobat 中 修改 增大或缩小 PDF 页面大小
    有时下载了一些扫描的PDF资料,原始PDF的页面大小不正常,例如有一个PDF的页面尺寸是「46cm*71cm」,导入到笔记软件中后,0.5mm的手写笔记在页面上就会显得非常小。这时就需要将PDF整体缩放到指定大小。找了下网上的方法,多数是推荐用「打印到PDF」的方法,或者用在线服务。......