开发 Web 应用程序
开发 Web 应用程序需要完成以下任务:
- 创建 Visual Builder 应用程序。
- 创建新 Web 应用程序。
- 包括外部图书馆。
- 创建用户界面。
- 更新上载的 PDF 文档。
- 创建新的 PDF 文档。
- 下载 PDF 文件。
创建 Visual Builder 应用程序
Visual Builder 应用程序是用于开发 Web 和移动应用程序的资源集合。Visual Builder 应用程序在描述数据源和业务对象的 JSON 文件中包括元数据。它还包括 Web 和移动应用程序的 HTML 和 JavaScript 文件。
- :在“可视化应用程序”主页上,单击新建。
- 在“Create Application(创建应用程序)”对话框中,键入应用程序名称。系统会根据您提供的应用程序名称自动填充应用程序 ID 字段。
- 如有必要,可以修改应用程序 ID,但 ID 在身份域中必须唯一。
- 保留空应用程序的默认选择不变。此模板不创建任何构件、应用程序或其他资源。
- 单击完成。
新的 Visual Builder 应用程序将在您创建后自动打开并显示“欢迎”屏幕。新应用程序将不包含任何构件,但向导默认情况下会创建应用程序的文件结构以及您将需要的一些资源和文件。
创建新 Web 应用程序
Visual Builder 应用程序中的 Web 应用程序相互独立,但它们都可以使用应用程序中定义的数据源。
包括外部库
要生成、修改和下载 PDF 文档(如“开始之前”中所述),您需要包括两个外部库:pdf-lib
和 downloadj
。
pdf-lib
,管理 PDF 文档。downloadj
,下载已生成的 PDF 文档。
index.html
文件中插入两个 librarie 的源:
<script src="https://unpkg.com/pdf-lib@1.4.0"></script>
<script src="https://unpkg.com/downloadjs@1.4.7"></script>
创建用户界面
现在,您可以创建一个用户界面。此界面应包含容器、标头、按钮、文本字段、JavaScript 代码和 HTML 代码等组件,并允许用户执行以下操作:
- 上载文件。
- 输入将显示在 PDF 文档中的字段文本。
- 单击按钮以使用已上载的 PDF 文档输入的文本更新这些文档。
- 单击按钮可创建包含所输入文本的新 PDF 文档。
- 单击按钮可下载已准备文档。
将上载的 PDF 文件显示到主页屏幕
在主页的源 HTML 中,使用先前分配的页变量 fileURL
添加对象及其源。将 fileURL
对象添加到主 HTML 页。在此阶段,应用程序可以上载和显示 PDF 文件。
将 addPDFDocument 函数的输出分配给页变量 fileURL 和 holdFile
将返回的 addPDFDocument
函数属性 URL 和数据分别分配给页变量 fileURL
和 holdFile
。
创建 addPDFDocument 函数
addPDFDocument
。应用程序将收到一个输入参数。该函数将根据输入文件参数实例化 URL 变量,然后读取上载的文档并将其转换为 base64 字符串。您可以使用此代码示例定义函数:
PageModule.prototype.addPDFDocument = function(arg1) {
return new Promise(
resolve=>{
const blobURL = URL.createObjectURL(arg1);
const reader = new FileReader();
reader.addEventListener("load", function () {
// convert image file to base64 string
resolve({ data: reader.result, url: blobURL });
}, false);
if (arg1) {
reader.readAsDataURL(arg1);
}
}
);
};
更新上载的 PDF 文档
从组件调色板拖放到页面设计器中,将“文本字段”组件拖放到此组件下方,新按钮。
- 创建页面变量
textIncludedIntoPDF
以存储文本字段的内容。此变量将插入内容并使用它更新 PDF 文档。 - 将此变量指定给“输入文本”组件。
更新和显示 PDF
update_display_pdf
的新操作链。
创建 UpdatePDF 函数
接下来,创建 JavaScript 函数 createUpdatePDF
。这是一个具有两个输入参数(上载的 PDF 文档和用户以前在主页上输入的文本)的异步函数。它返回一个字节数组。
显示更新的 PDF 文档
UpdatePDF
函数的结果将分配给临时页面变量 tmpPDFBytes
。在此赋值之后,JavaScript 函数将接收 base64 字节数组,并将从此字节数组实例化新的 blob 实体。最后,该函数将创建并返回与此 PDF 文档对应的 URL。
PageModule.prototype.displayPDFDocument = function (arg1) {
const bytes = new Uint8Array( arg1 );
// create a new blobfrom the byte array with type of application: pdf
const blob = new Blob( [ bytes ], { type: "application/pdf" } );
// create the url of the generated blob entity
const newdocURL = URL.createObjectURL(blob);
// return the updated pdf's url
return newdocURL;
};
此函数的输出将分配给页面变量 fileURL
,该变量将用于在页面中显示更新的 PDF 文档。
此时,应用程序已准备好上载 PDF 文档,使用用户在屏幕文本字段中输入的文本对其进行修改,然后在屏幕上显示更新的 PDF 文档。
创建新 PDF 文档
下载 PDF 文件
通过拖放按钮组件,从组件调色板中包括到页面设计器中。
下载文档
为下载 PDF 按钮创建新事件操作。此事件将创建一个标记为 downloadPDF
的新操作链。新操作链将使用 JavaScript 函数下载 PDF 文件(包含用户在文本字段中输入的文本)。
下载 PDF 文件
downloadPDFfile
将 PDF 文档的字节数组作为其一个输入参数进行上载和修改或创建,并使用预定义名称 pdf-lib_modification_example.pdf
和 application/pdf
类型下载文档。
download()
函数(从最初隐藏的库 downloadj
中,然后导入到应用程序中)。download()
的输入参数可以是以下任何数据类型:
- URL
- 字符串
- 球型图
- 键入的数组
dataURL
将文件的数据表示为 base64 或 URL 编码字符串,即放置在浏览器下载目录中的新文件的名称和类型。
PageModule.prototype.downloadPDFFile = function (arg1) {
download(arg1, "pdf-lib_modification_example.pdf", "application/pdf");
};