管理法律合同

用例主横幅

数字化带来了挑战。 如今,大多数组织都有多种类型 法律合同 他们必须创建、编辑、批准协议并由各方签名。 这些法律合同通常需要独特的定制和品牌化。 组织还可能需要在签名后以受保护的格式保存这些文档,以确保其安全。 要进行所有这些操作,他们需要强健的文档生成和管理解决方案。

许多解决方案都提供一些文档生成,但无法自定义数据输入和条件逻辑,例如仅应用于特定场景的子句。 随着文档越来越广泛,手动更新公司的法律模板不仅困难重重,而且容易出错。 实现这些过程自动化是相当大的。

您可以学到的内容

在本实际操作教程中,探索以下各项功能 Adobe Acrobat Services API 生成文档中的自定义输入字段。 此外,探索如何轻松地将这些生成的文档转换为受保护的便携文档格式(PDF),以防止数据操作。

本教程涉及在探索将合同转换为PDF时进行一些编程。 为了有效地跟进, Microsoft WordNode.js 应该安装在你的电脑上。 对Node.js和 ES6语法 也建议使用该选项。

相关的API和资源

创建模板文档

您可以使用Microsoft Word应用程序或通过下载Adobe的 示例Word模板. 但是,如果不使用某些辅助工具(如 AdobeDocument Generation Tagger加载项 用于Microsoft Word。

Document Generation Tagger是一款Microsoft Word插件,可使用标签无缝自定义文档。 它允许在使用JSON数据动态填充的文档模板中创建动态字段。

如何在Word中添加Adobe Document Generation Tagger的屏幕截图

要说明如何使用Document Generation Tagger,请安装此插件,然后创建一个JSON数据模型,该模型用于标记简单法律合同文档。

通过在Word中单击 插入 选项卡,然后在“插件”组中,单击 我的加载项. 在Office加载项菜单上,搜索“AdobeDocument Generation”,然后单击 添加 然后按照流程操作。 您可以在上面的屏幕捕捉中看到这些步骤。

安装适用于Word的Document Generation Tagger插件后,请创建一个简单的JSON数据模型来标记法律文档。

要继续,请打开您选择的任何编辑器,创建一个名为Agreement.json的文件,然后将下面的代码片段粘贴到您创建的JSON文件中。

{
"Agreement": {
"Date": "1/24/2021",
"Prime Contractor Name": "Ogbonna Vitalis Corp",
"Prime State": "Lagos",
"Address": "Maryland Ave, Lagos State, Ng",
"Sub Contractor Name": "Vivvaa Soln",
"Sub Contractor State": "California",
"Sub Contractor Address": "Molusi Avenue, Dallas Texas, CA",
"Agreement Date": "1/24/2021",
"Length": 5
}
}

保存此JSON文档后,将其导入到Document Generation Tagger加载项。 通过单击导入文档 Document Generation 在Word屏幕右上角的Adobe组中,如下面的屏幕截图所示。

Word中的AdobeDocument Generation Tagger插件的屏幕截图

此时会显示引导您的视频。 您可以观看它,或通过单击直接进入标记域 开始使用. 单击之后 开始使用,此时会显示上传表单。 点击 上传JSON文件 然后选择您刚刚创建的JSON文件。 导入完成后,单击 生成标记 生成标签。

导入并生成标签后,您可以将这些标签添加到文档中。 若要添加标签,请将光标放在希望显示标签的确切位置。 然后从Document Generation API中选择一个标签并单击 插入文本. 下面的屏幕截图概述了此过程。

向文档添加标签的屏幕截图

除了使用导入的JSON数据模型创建的基本标签之外,您还可以使用高级功能获得更多选项,例如图像、条件逻辑、计算、重复元素和条件短语。 您可以通过单击 高级 在“Document Generation Tagger”面板中。 您可以在下面的屏幕截图中看到这一点。

AdobeDocument Generation Tagger“高级”选项卡的屏幕截图

这些高级功能与基本标签并无区别。 要包含条件逻辑,请选择要填充的文档部分。 然后,配置确定标签插入的规则。

为了进一步说明,例如在协议中,您只想无条件地包括一个部分。 在“选择内容类型”字段中,选择 部分。 在“选择记录”字段中,选择用于确定是否显示条件节的选项。 选择所需的条件运算符,并在“值”字段中设置要测试的值。 然后单击 插入条件。 以下屏幕截图说明了此过程。

插入条件内容的屏幕截图

对于计算,选择算术或聚合,然后根据可用的模板标签包括相关的第一条记录、运算符和第二条要使用的记录。 然后单击 插入计算.

另外,法律合同通常要求当事各方签字。 您可以使用“数值计算”部分正下方的Adobe Sign文本标记插入电子签名。 要包含电子签名,您必须指定收件人的数量,请选择 签名者,并从下拉列表中选取字段类型。 完成后,单击 插入Adobe Sign文本标记 以完成该过程。

为确保数据的完整性,请以受保护的格式保存法律文档。 与 Acrobat Services 在API中,您可以将文档快速转换为PDF格式。 您可以构建一个简单的express Node.js应用程序,将Document Generation API集成到该应用程序中,并使用这个简单的应用程序将已标记文档从Word转换为PDF格式。

项目设置

首先,设置Node.js应用程序的文件夹结构。 在本例中,将此简单应用程序命名为AdobeLegalContractAPI。 您可以检索源代码 此处.

目录结构

创建一个名为AdobeLegalContractAPI的文件夹,然后在您选择的编辑器中打开它。 使用创建基本Node.js应用程序 npm init 命令使用以下文件夹结构:

###Directory Structure
AdobeLegalContractAPI
-----config
----------default.json
-----controllers
----------createPDFController.js
----------previewController.js
-----models
----------document.js
-----routes
----------web.js
-----services
-----------upload.js
-----uploads
-----views
-----index.js

以上是应用程序的一个简单的Node.js应用程序结构。 现在继续安装必需的npm程序包。

包安装

使用npm install命令安装所需的程序包,如下面的代码片段所示:

npm install express body-parser morgan multer hbs path config mongoose

安装包后,确保package.json文件的内容与以下代码片段相同:

###package.json
{
"name": "adobelegalcontractapi",
"version": "1.0.0",
"description": "",
"main": "index.js",
"directories": {
"test": "test"
},
"dependencies": {
"body-parser": "^1.19.0",
"config": "^3.3.6",
"express": "^4.17.1",
"hbs": "^4.1.1",
"mongoose": "^5.12.1",
"morgan": "^1.10.0",
"multer": "^1.4.2",
"path": "^0.12.7"
},
"devDependencies": {},
"scripts": {
"start": "node index.js"
},
"repository": {
"type": "git",
"url": "https://github.com/agavitalis/adobe_legal_contracts.git"
},
"author": "Ogbonna Vitalis",
"license": "ISC",
"bugs": {
"url": "https://github.com/agavitalis/adobe_legal_contracts/issues"
},
"homepage": "https://github.com/agavitalis/adobe_legal_contracts#readme"
}

在这些代码片段中,安装了应用程序依赖项,包括视图的手柄模板引擎。

本教程的主要重点是使用 Acrobat Services API 将文档转换为PDF。 因此,对于如何构建此Node.js应用程序,没有分步过程。 但是,您可以在以下位置检索完整的工作Node.js应用程序代码 GitHub.

集成 Adobe Acrobat Services Node.js应用程序中的API

Adobe Acrobat Services API是基于云的可靠服务,旨在实现文档的无缝操作。 它提供三个API:

  • Adobe PDF Services API

  • Adobe PDF Embed API

  • Document Generation APIAdobe

您需要凭据才能使用 Acrobat Services API(与您的PDFEmbed API凭据不同)。 如果您没有有效的凭据, 注册 并完成如下面的屏幕截图所示的工作流程。 尽情享受 免费试用6个月,然后按需付费,每个文档交易只需$0.05。

创建新凭据的屏幕截图

注册过程完成后,代码示例将自动下载到您的PC以帮助您启动。 您可以提取此代码示例并按照说明操作。 不要忘记将解压缩的代码示例中的pdftools-api-credentials.json和private.key文件复制到Node.js项目的根目录中。 您需要凭据才能访问 Acrobat Services API端点。 您还可以下载包含个性化凭据的SDK示例,这样您就不必更新示例代码中的密钥。

Adobe PDF现在,通过运行 npm install \--save @adobe/documentservices-pdftools-node-sdk 命令使用应用程序根目录中的终端。 成功安装后,您可以使用 Acrobat Services 用于在应用程序中处理文档的API。

创建PDF文档

Acrobat Services API支持从Microsoft OfficePDF(Word、Excel和PowerPoint)及其他文档创建文档 支持的文件格式 例如,.txt、.rtf、.bmp、.jpeg、gif、.tiff和.png。 使用Acrobat Service API,您可以轻松地将法律合同从任何其他文件格式转换为PDF。

利用AdobeDocument Generation API,可以转换为Word文件或PDF。 例如,您可以使用Word模板生成合同,包括为文本添加红线以标记编辑后的文本。 然后,将其转换为PDF,并使用PDF服务API使用密码保护文档,发送以请求签名等。

为了从可用的受支持文件格式实现PDF文档的创建,提供了一个表单来上传要转换的文档 Acrobat Services.

设计好的上传表单显示在下面的屏幕捕获中,您可以在以下位置访问HTML和CSS文件: GitHub.

表单上传的屏幕截图

现在,将以下代码片段添加到控制器/createPDFController.js文件中。 此代码检索已上传的文档并将其转换为PDF。 Acrobat Services 将原始上传的文件和转换后的文件保存在不同的文件夹中。

###controllers/createPDFController.js
const PDFToolsSdk = require('@adobe/documentservices-pdftools-node-sdk');
const Document = require('../models/document');
/*
* GET / route to show the createPDF form.
*/
function createPDF(req, res) {
//catch any response on the url
let response = req.query.response
res.render('index', { response })
}
/*
* POST /createPDF to create a new PDF File.
*/
function createPDFPost(req, res) {
let filePath = req.file.path;
let fileName = req.file.filename;
try {
// Initial setup, create credentials instance.
const credentials = PDFToolsSdk.Credentials
.serviceAccountCredentialsBuilder()
.fromFile("pdftools-api-credentials.json")
.build();
// Create an ExecutionContext using credentials and create a new operation instance.
const executionContext = PDFToolsSdk.ExecutionContext.create(credentials),
createPdfOperation = PDFToolsSdk.CreatePDF.Operation.createNew();
// Set operation input from a source file.
const input = PDFToolsSdk.FileRef.createFromLocalFile(filePath);
createPdfOperation.setInput(input);
// Execute the operation and Save the result to the specified location.
createPdfOperation.execute(executionContext)
.then(async(result) => {
let newFileName = `createPDFFromDOCX-${Math.random() * 171}.pdf`
let newFilePath = require('path').resolve('./') + `\\output\\${newFileName}`
await result.saveAsFile(`views/output/${newFileName}`)
//Creates a new document
let newDocument = new Document({
documentName: newFileName,
url: newFilePath
});
//Save it into the DB.
newDocument.save((err, docs) => {
if (err) {
res.send(err);
}
else {
res.redirect('/?response=PDF Successfully created')
}
});
})
.catch(err => {
if (err instanceof PDFToolsSdk.Error.ServiceApiError
|| err instanceof PDFToolsSdk.Error.ServiceUsageError) {
console.log('Exception encountered while executing operation', err);
} else {
console.log('Exception encountered while executing operation', err);
}
});
} catch (err) {
console.log('Exception encountered while executing operation', err);
}
}
//export all the functions
module.exports = { createPDF, createPDFPost };

上述代码片段需要文档模型和 Acrobat Services 之前安装的节点SDK。 有两个功能:

  • createPDF显示上传文档表单。

  • createPDFPost将上传的文档转换为PDF。

这些函数将转换后的PDF文档保存在views/output目录中,您可以在其中将这些文档下载到PC。

您也可以使用免费的PDFEmbed API预览经过转换的PDF文件。 使用PDFEmbed API,您可以生成Adobe凭据 此处 (不同于您的 Acrobat Services 凭据)和注册允许的域以访问API。 按照以下过程并为您的应用程序生成PDF的嵌入API凭据。 您还可以查看演示 此处,从中可轻松生成代码以快速入门。

返回到应用程序,在应用程序的view文件夹中创建list.hbs和preview.hbs文件,并将下面的代码片段分别粘贴到list.hbs和preview.hbs文件中。

###views/list.hbs
<!DOCTYPE html>
<html lang="en">
<head>
<title>Adobe Legal Contract</title>
<!-- Meta tags -->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<!-- //Meta tags -->
<link
href=".min.css" rel="stylesheet" integrity="sha384-eOJMYsd53ii+scO/
bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6" crossorigin="anonymous">
<link rel="stylesheet" href="css/style.css" type="text/css"
media="all" /><!-- Style-CSS -->
<link href="css/font-awesome.css" rel="stylesheet" /><!--
font-awesome-icons -->
</head>
<body>
<section>
<div class="form-36-mian section-gap">
<div class="wrapper">
<div class="container">
<div class="row">
{{#each documents}}
<div class="col-md-4 mb-2">
<div class="card" style="width:
18rem;">
<img class="card-img-top"
src="./images/pdf.png"
alt="Card image cap">
<div class="card-body">
<h5
class="card-title">{{documentName}}</h5>
<a
href="/downloadPDF/{{_id}}" class="btn btn-primary"><i class="fa
fa-download" aria-hidden="true"></i> Download</a>
<a
href="/previewPDF/{{_id}}" class="btn btn-info"><i class="fa fa-eye"
aria-hidden="true"></i> Preview</a>
</div>
</div>
</div>
{{/each}}
</div>
</div>
<!-- copyright -->
<div class="copy-right">
<p>(c) 2021 Vitalis</p>
</div>
<!-- //copyright -->
</div>
</div>
</section>
</body>
</html>
###views/preview.hbs
<!DOCTYPE html>
<html lang="en">
<head>
<title>Adobe Acrobat Services PDF Embed API</title>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta id="viewport" name="viewport" content="width=device-width,
initial-scale=1" />
</head>
<body style="margin: 0px">
<input type="hidden" id="pdfDocumentName"
value={{document.documentName}} />
<input type="hidden" id="pdfDocumentUrl" value={{document.url}} />
<div id="adobe-dc-view"></div>
<script
src="https://documentcloud.adobe.com/view-sdk/main.js"></script>
<script type="text/javascript">
let pdfDocumentName =
document.getElementById("pdfDocumentName").value;
let pdfDocumentUrl =
document.getElementById("pdfDocumentUrl").value;
document.addEventListener("adobe_dc_view_sdk.ready", function
() {
var adobeDCView = new AdobeDC.View({ clientId:
"XXXXXXXXXXXXXXXX", divId: "adobe-dc-view" });
adobeDCView.previewFile({
content: { location: { url:
`http://localhost:5000/output/${pdfDocumentName}` } },
metaData: { fileName: pdfDocumentName }
}, {});
});
</script>
</body>
</html>

此外,创建一个controller/previewController.js文件并将下面的代码片段粘贴到该文件中。

const Document = require('../models/document');
/*
* GET /listFiles route to show PDF file lists.
*/
async function listFiles(req, res) {
let documents = await Document.find({});
res.render('lists', { documents })
}
/*
* GET /previewPDF route to show PDF file in AdobeEmbedAPI.
*/
async function previewPDF(req, res) {
//catch any response on the url
let documentId = req.params.documentId
let document = await Document.findOne({_id:documentId});
res.render('preview', { document })
}
/*
* GET /downloadPDF To Download PDF Documents.
*/
async function downloadPDF(req, res) {
let documentId = req.params.documentId
let document = await Document.findOne({_id:documentId});
res.download(document.url);
}
//export all the functions
module.exports = {listFiles, previewPDF, downloadPDF };

在上述控制器文件中,有三个功能:listFiles、previewPDF和downloadPDF。 listFiles函数列出到目前为止生成的所有PDF文件,使用 Acrobat Services API。 previewPDF函数允许您使用PDFEmbed API预览PDF文件,而downloadPDF函数允许您将生成的PDF文件下载到您的电脑。 以下屏幕截图显示了使用PDFEmbed API的PDF预览示例。

PDF预览的屏幕快照

摘要

在本实际操作教程中,您使用Document Generation Tagger Microsoft Word插件为文档添加了标签。 然后,集成 Acrobat Services 将API转换为Node.js应用程序,并将标记文档转换为可下载的PDF格式,但您也可以直接为PDF创建法律合同。 最后,您使用Adobe PDF Embed API预览生成的PDF以供验证和签名。

借助已完成的应用程序,可以更轻松地添加标签 法律合同模板 使用动态字段,将它们转换为PDF,进行预览并使用对它们进行签名 Acrobat Services API。 您的团队可以自动将正确的合同发送给每个客户,而不是花时间创建独特的合同,然后花更多时间发展您的业务。

组织使用 Adobe Acrobat Services API的完整性和易用性。 最棒的是,您可以享受 免费试用6个月,然后按需付费. 您只需为使用的内容付费。 此外,PDFEmbed API始终免费。

是否准备好通过改进文档流提高工作效率? 开始使用 今天。

recommendation-more-help
61c3404d-2baf-407c-beb9-87b95f86ccab