在AEM Forms中使用組合器服務
最後更新: 2025年5月5日
- 適用對象:
- Experience Manager 6.4
- Experience Manager 6.5
- 主題:
- 組合器
建立對象:
- 經驗豐富
- 開發人員
本文提供的資產可讓您示範如何拖放多個PDF檔案至瀏覽器,以及將組合的pdf檔案儲存至您的檔案系統。 以下是servlet的程式碼,它會組合使用瀏覽器上傳的pdf檔案。
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) {
log.debug("In Assemble Uploaded Files");
Map<String, Object> mapOfDocuments = new HashMap<String, Object>();
final boolean isMultipart = org.apache.commons.fileupload.servlet.ServletFileUpload.isMultipartContent(request);
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = null;
try {
docBuilder = docFactory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
org.w3c.dom.Document ddx = docBuilder.newDocument();
Element rootElement = ddx.createElementNS("http://ns.adobe.com/DDX/1.0/", "DDX");
ddx.appendChild(rootElement);
Element pdfResult = ddx.createElement("PDF");
pdfResult.setAttribute("result", "GeneratedDocument.pdf");
rootElement.appendChild(pdfResult);
if (isMultipart) {
final java.util.Map<String, org.apache.sling.api.request.RequestParameter[]> params = request
.getRequestParameterMap();
for (final java.util.Map.Entry<String, org.apache.sling.api.request.RequestParameter[]> pairs : params
.entrySet()) {
final String k = pairs.getKey();
final org.apache.sling.api.request.RequestParameter[] pArr = pairs.getValue();
final org.apache.sling.api.request.RequestParameter param = pArr[0];
try {
if (!param.isFormField()) {
final InputStream stream = param.getInputStream();
log.debug("the file name is " + param.getFileName());
log.debug("Got input Stream inside my servlet####" + stream.available());
com.adobe.aemfd.docmanager.Document document = new Document(stream);
mapOfDocuments.put(param.getFileName(), document);
org.w3c.dom.Element pdfSourceElement = ddx.createElement("PDF");
pdfSourceElement.setAttribute("source", param.getFileName());
pdfSourceElement.setAttribute("bookmarkTitle", param.getFileName());
pdfResult.appendChild(pdfSourceElement);
log.debug("The map size is " + mapOfDocuments.size());
} else {
log.debug("The form field is" + param.getString());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
com.adobe.aemfd.docmanager.Document ddxDocument = documentServices.orgw3cDocumentToAEMFDDocument(ddx);
Document assembledDocument = documentServices.assembleDocuments(mapOfDocuments, ddxDocument);
String path = documentServices.saveDocumentInCrx("/content/ocrfiles", assembledDocument);
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("path", path);
response.setContentType("application/json");
response.setHeader("Cache-Control", "nocache");
response.setCharacterEncoding("utf-8");
PrintWriter out = null;
out = response.getWriter();
out.println(jsonObject.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
若要讓此功能在您的AEM伺服器上運作
- 將AssembleMultipleFiles.zip下載至您的本機系統。
- 使用封裝管理員上傳及安裝封裝
- 下載自訂檔案服務組合
- 下載使用服務使用者套件組合開發
- 使用felix Web主控台部署及啟動組合
- 將瀏覽器指向AssemblePdf.html
- 拖放多個PDF檔案
請確定您的AEM Forms安裝已完成。 您的所有套件組合都必須處於作用中狀態。
確定您已新增 — 開機委派RSA和BouncyCastle程式庫,如此安裝AEM Forms中所述
此示範的注意事項
-
程式碼不會處理以XFA為基礎的PDF檔案
-
請確定您只拖放PDF檔案
Experience Manager
- 概觀
- 應遵循的最佳實務
- 使用 AEM Author 設定 OKTA 驗證
- 建立您的第一個自適應表單
- 處理表單提交
- 實用整合
- 建立 OSGi 套件組合
- 自適應表單
- 在 Windows 上安裝 AEM Forms
- 在 Linux 上安裝 32 位元套件
- 自適應表單中的預填服務
- 使用查詢參數填入自適應表單內容
- AEM Forms 中的 QR 碼
- 自適應表單中的自訂提交
- 自適應表單中的驗證碼
- 規則編輯器中的自訂函數
- 在網頁中嵌入自適應表單
- 建立字串陣列
- AEM Forms 中的項目載入路徑
- 在 OSGI 工作流程中使用 XML 內的設定值
- 在 OSGI 工作流程中使用 JSON 內的設定值
- 在 AEM Forms 工作流程中傳送電子郵件元件
- 使用 API 產生 DocumentOfRecord
- 顯示內嵌影像
- 以內嵌方式顯示 DAM 影像
- 使用地理位置 API
- 使用交易報告
- AEM Forms 中的使用者輪廓資料整合
- Microsoft Dynamics 與 AEM Forms
- 規則編輯器增強功能
- 限制規則編輯器存取權
- 主題編輯器增強功能
- 表單編輯器增強功能
- 自適應表單的自動化測試
- 自適應表單的自動化測試
- 將 LDAP 與 AEM Forms 進行整合
- 在 AEM Forms 中運用服務使用者
- 在自適應表單提交時標記和儲存記錄文件
- 將表單資料模型服務叫用的結果填入表格
- 擷取工作流程註解
- 將已提交的表單資料儲存在資料庫中
- 在資料庫中插入表單附件
- 修改資料來源設定
- 覆寫表單資料模型屬性
- AEM 6.4 工作流程中的表單資料模型服務
- 處理表單資料模型服務步驟中的錯誤訊息
- AEM 6.5.1 工作流程中的表單資料模型服務
- 無資料來源的表單資料模型
- 經計算的表單資料模型元素
- 在 AEM Forms 中設定 JDBC 資料來源
- 以 JDBC 為基礎的表單資料模型
- 在表單資料模型中建立 2 個實體間的關聯
- 在規則編輯器中使用表單資料模型的叫用服務
- 使用表單資料模型將二進位資料發佈至 AEM DAM
- 建立可重複使用的工作流程模型
- 自訂程序步驟 AEM 工作流程
- 預填 HTML5 表單
- 表單資料模型與 Salesforce
- 在選擇元件中動態新增項目
- 使用聊天機器人填寫 PDF 表單
- 以核心元件為基礎的表單
- 選取及組裝 DAM 資料夾內容
- 使用表單資料模型預填自適應表單
- 使用者介面秘訣與技巧
- 自訂收件匣
- 電子郵件表單附件
- 使用資料及附件預填表單
- 儲存與擷取自適應表單
- 從 PDF 檔案匯入資料
- 以 CSV 格式匯出提交的資料
- HTML5 表單
- AEM Forms 與 Acrobat Sign
- 簽署多個表單
- 自訂工作流程步驟
- 自訂工作流程元件
- AEM 工作流程中的變數
- 檢閱表單資料
- 在 MySQL 資料庫中儲存與擷取表單資料
- 提交 PDF 表單時觸發 AEM 工作流程
- 提交行動表單時觸發 AEM 工作流程
- 查詢表單提交
- 在表單入口中列出自訂資產類型
- AEM Forms 與 Marketo
- AEM Forms 與 Adobe Campaign Standard
- 歡迎套件
- 無周邊表單 API
- React 應用程式與 Forms 和 Acrobat Sign
- 文件服務
- PDF 表單類型
- 在自適應表單內嵌入 PDF
- PDF 輪播元件
- 在 AEM Forms 中使用組裝服務
- 透過組裝服務進行 XDP 拼接
- 在 AEM Forms 中使用受監看的資料夾
- 在 AEM Forms 中使用條碼服務
- 在 AEM Forms 中使用 PDFG 服務
- 使用權限密碼加密 PDF
- 在 AEM Forms 中使用 Output 和 Forms 服務
- 在 Output 服務中使用 xdp 片段
- 使用 ECMA 指令碼產生含有片段的 PDF
- 從一個資料檔案產生多個 PDF
- 提交行動表單時產生 PDF
- 提交以核心元件為基礎的表單時產生 PDF
- 從行動表單產生互動式 PDF
- 從自適應表單產生互動式記錄文件
- 設定 Reader 延伸模組認證
- 進行 XDP 轉譯時將使用權套用至 PDF
- 將使用權套用至上傳的 PDF
- 認證文件
- 組裝表單附件
- 實用的公用程式服務
- Forms Designer
- AEM Forms Workbench
- 列印管道的互動式通訊
- 儲存及擷取信件草稿
- 互動式通訊
- Web 管道的互動式通訊
- 疑難排解
- 文件服務:針對 DDX 相關問題進行疑難排解的步驟
- 文件服務:針對 PDFA 轉換問題進行疑難排解的步驟
- 文件服務:如何針對 Forms 和 Output 服務的字型相關問題進行偵錯
- 文件服務:如何為 Forms 和 Output 服務嵌入字型
- 文件服務:如何啟用效能記錄以針對 Forms 和 Output 服務進行偵錯
- 文件服務:如何增加大型檔案轉換作業的 aries 交易逾時時間
- 文件服務:如何使用 FormsIVS 和 OutputIVS 執行負載測試
- 文件服務:如何在 FormsIVS 和 OutputIVS 中更新自訂的 XDP 和資料檔案
- 文件服務:啟用詳細 ORB 追蹤的步驟
- 文件服務:調整 XMLFormService 之 bmc 集區大小的步驟 (第 1 部分)
- 文件服務:調整 XMLFormService 之 bmc 集區大小的步驟 (第 2 部分)
- 文件服務:在 JMX 主控台上調整參數的步驟
- 讓大型 XML 資料檔案能夠與範本合併
- PDFG:如何變更 PDFG 中的交易逾時
- PDFG:如何更新 PDFG 中的 CORBA 逾時
- PDFG:如何更新 PDFG 中的逾時
- PDFG:在 Windows Server 2016 中新增 PDFG 使用者的步驟
- PDFG:查看與安裝 32 位元資料庫及其相依性的步驟
- PDFG:確認 Windows Server 2016 上資料夾權限的步驟
- PDFG:在 Unix 上啟用 Strace 的步驟
- PDFG:安裝必要之 32 位元 Microsoft Visual C++ 可轉散發套件的步驟
- PDFG:運作及解讀 System Readiness Tool 之輸出的步驟
- PDFG:針對 Acrobat 特定問題進行疑難排解的步驟
- PDFG:針對 Windows 上 HtmltoPDF 問題進行疑難排解的步驟
- PDFG:針對 Unix (PhantomJS) 上 HtmltoPDF 特定問題進行疑難排解的步驟
- PDFG:針對 Unix (WebKit 轉換) 上 HtmltoPDF 特定問題進行疑難排解的步驟
- PDFG:針對 Unix 上多使用者 PDFG 轉換進行疑難排解的步驟
- PDFG:針對 Windows 上多使用者 PDFG 轉換進行疑難排解的步驟
- PDFG:針對 Unix 上 OpenOffice 特定問題進行疑難排解的步驟
- PDFG:針對 Windows 上 OpenOffice 特定問題進行疑難排解的步驟
- 文件安全性:如何套用使用 Acrobat 的文件安全性模組所建立的原則
- 使用者管理:如何在 AEM Forms JEE 中新增使用者或群組
- 使用者管理:如何增加 UM 工作階段逾時時間
- Workbench:使用 https 連線至 Workbench
- Workbench:從說明選單收集 Workbench 記錄
- Workbench:如何啟用 Workbench 的偵錯輸出
- Workbench:如何調整 Workbench 記憶體參數
- Workbench:如何調整 Workbench 效能參數
- Designer:Designer 對於 C++ 可轉散發套件的相依性
- Designer:如何啟用 HTML 預覽
- Designer:如何啟用 PDF 預覽
- Designer:如何安裝 Designer 修補程式
- JEE Foundation:如何變更熵的值
- JEE Foundation:如何變更 AEM Forms JEE 中任何服務的交易逾時
- JEE Foundation:如何從作業管理員表格中清除流程記錄
- JEE Foundation:如何從命令列執行流程清除
- JEE Foundation:手動啟動的步驟
- JEE Foundation:擷取行動表單偵錯記錄的步驟
- JEE Foundation:減輕 ForcedDisconnectException 的步驟
- 一般:如何新增 JBoss Admin Console 的管理使用者
- 一般:如何擷取 HAR 記錄
- 一般:如何在 Unix 伺服器上擷取 JVM 的堆積傾印
- 一般:如何在 Windows 伺服器上擷取 JVM 的堆積傾印
- 一般:如何擷取網路記錄
- 一般:如何在 Unix 伺服器上擷取 JVM 的執行緒傾印
- 一般:如何在 Windows 伺服器上擷取 JVM 的執行緒傾印
- 一般:如何產生自我簽署憑證
- 一般:如何從 HTML5 表單進行網頁服務呼叫
- 一般:針對 AEM Forms OSGI 中任何類別啟用偵錯記錄的步驟
- 一般:針對 JBOSS 應用程式伺服器中任何類別啟用偵錯記錄的步驟
- 一般:針對 Websphere 應用程式伺服器中任何類別啟用偵錯記錄的步驟
- 一般:針對 AEM Forms OSGi 啟用 SSL 的步驟
- 一般:加密 keystore 密碼以在 lc_turnkey.xml 中使用的步驟
- 一般:在 AEM Forms JEE 中重設使用者預設密碼的步驟
- 一般:在 AEM Forms OSGI 中重設使用者預設密碼的步驟
- 一般:在叢集中設定 gemfire 定位器及執行相關設定的步驟