開發 Web 應用程式
開發 Web 應用程式需要完成下列工作:
- 建立視覺化產生器應用程式。
- 建立新的 Web 應用程式。
- 包括外部資源庫。
- 建立使用者介面。
- 更新上傳的 PDF 文件。
- 建立新的 PDF 文件。
- 下載 PDF 檔案。
建立視覺化產生器應用程式
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
檔案中:
<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");
};