数字化带来了挑战。 如今,大多数组织都有多种类型
法律合同
他们必须创建、编辑、批准协议并由各方签名。 这些法律合同通常需要独特的定制和品牌化。 组织还可能需要在签名后以受保护的格式保存这些文档,以确保其安全。 要进行所有这些操作,他们需要强健的文档生成和管理解决方案。
许多解决方案都提供一些文档生成,但无法自定义数据输入和条件逻辑,例如仅应用于特定场景的子句。 随着文档越来越广泛,手动更新公司的法律模板不仅困难重重,而且容易出错。 实现这些过程自动化是相当大的。
您可以学到的内容
在本实际操作教程中,探索以下各项功能
Adobe Acrobat Services API
生成文档中的自定义输入字段。 此外,探索如何轻松地将这些生成的文档转换为受保护的便携文档格式(PDF),以防止数据操作。
本教程涉及在探索将合同转换为PDF时进行一些编程。 为了有效地跟进,
Microsoft Word
和
Node.js
应该安装在你的电脑上。 对Node.js和
ES6语法
也建议使用该选项。
相关的API和资源
创建模板文档
您可以使用Microsoft Word应用程序或通过下载Adobe的
示例Word模板
. 但是,如果不使用某些辅助工具(如
AdobeDocument Generation Tagger加载项
用于Microsoft Word。
Document Generation Tagger是一款Microsoft Word插件,可使用标签无缝自定义文档。 它允许在使用JSON数据动态填充的文档模板中创建动态字段。
要说明如何使用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文件
然后选择您刚刚创建的JSON文件。 导入完成后,单击
生成标记
生成标签。
导入并生成标签后,您可以将这些标签添加到文档中。 若要添加标签,请将光标放在希望显示标签的确切位置。 然后从Document Generation API中选择一个标签并单击
插入文本
. 下面的屏幕截图概述了此过程。
对于计算,选择算术或聚合,然后根据可用的模板标签包括相关的第一条记录、运算符和第二条要使用的记录。 然后单击
插入计算
.
另外,法律合同通常要求当事各方签字。 您可以使用“数值计算”部分正下方的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
"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:
注册过程完成后,代码示例将自动下载到您的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.
###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 };
这些函数将转换后的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">
<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 -->
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>
<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">
class="card-title">{{documentName}}</h5>
href="/downloadPDF/{{_id}}" class="btn btn-primary"><i class="fa
fa-download" aria-hidden="true"></i> Download</a>
href="/previewPDF/{{_id}}" class="btn btn-info"><i class="fa fa-eye"
aria-hidden="true"></i> Preview</a>
{{/each}}
<!-- copyright -->
<div class="copy-right">
<p>(c) 2021 Vitalis</p>
<!-- //copyright -->
</section>
</body>
</html>
###views/preview.hbs
<!DOCTYPE html>
<html lang="en">
<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>
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 };
在本实际操作教程中,您使用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