使用 CRM 2013/2015 插件/JavaScript 创建/生成 PDF
使用 Jscript / 插件从 CRM 2013/2015 在线/本地部署环境中创建 PDF。所有内容都在解决方案文件中,无需自定义页面或 Silverlight。
引言
我最近遇到一个客户的需求,他们希望从 CRM 2015 在线环境中发送 PDF 格式的发票。我做了一些研究,一种可行的方法是使用 JavaScript 下载 SSRS 报告的副本并保存为 PDF,但这是一种对报告查看器的修改,并且不受 Microsoft 支持。此外,客户希望在 PDF 中显示客户的签名。我发现另一种解决方案是使用工作流自定义代码活动将 SSRS 转换为 PDF,但它仅适用于本地部署的 CRM,不适用于 CRM 在线。客户使用的是 Microsoft CRM online 2015。解决方案需要在隔离的沙箱中运行。这有可能吗?
Using the Code
我继续研究,发现我可能可以使用插件将 HTML 转换为 PDF,并使用 PDF 工具。第一步是创建一个 pdfcreate
请求实体,并将所有创建 PDF 的逻辑封装到该实体预创建插件中。
这是一个示例解决方案,您可以使用 JScript、插件或工作流自定义活动创建 PDF。如果您不需要创建大量的 PDF,也可以免费使用。
使用此工具,我们需要先创建 HTML,但是,目前,不要期望 HTML 中花哨的样式可以转换为 PDF。此外,请确保所有标签都需要关闭或自闭合,例如 <H1>*****</H1>
、<br/>
、<img *****/>
。目前仅支持内联 CSS。请参阅下表以查看支持的 CSS 样式。
步骤 1
下载 zip 文件。
第二步
导入 crm 解决方案文件,您应该可以使用 PDF 请求实体创建 PDF。(设置->PDF 请求)。
步骤 3
在 Visual Studio 中打开示例源代码(目前仅为 C#),确保已安装 CRM 开发人员工具包。
tc_pdfrequest pdfrequest = new tc_pdfrequest();
pdfrequest.tc_Content = htmlcontent;
pdfrequest.tc_CreatePDF = true; //Create the PDF and attach to the pdf request record as a note
pdfrequest.tc_email = new EntityReference("email",_emailId); //attach the pdf to email
pdfrequest.tc_objecttype = account.LogicalName; // attach to the record type, if null,
// won't attach to a record
pdfrequest.tc_objectid = account.Id.ToString(); // attach to the record id, if null,
// won't attach to a record
pdfrequest.tc_Filename = "account_test_pdf.pdf"; // PDF file name
pdfrequest.tc_subject = "Account motification alert"; // subject of the email attachment or note
pdfrequest.tc_name = "Account motification alert"; //just a name for the request
localContext.Trace("Generate a pdf request 123...");
service.Create(pdfrequest);
步骤 4
部署示例源代码并运行。