原創|行業資訊|編輯:胡濤|2022-04-19 14:48:43.677|閱讀 206 次
概述:本文主要分享了Charity Auction Organizer 使用 Aspose.Words 開發自定義郵件合并引擎,歡迎查閱!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
CharityAuctionOrganizer.com 提供了一個平臺,允許非營利組織進行籌款拍賣。這包括生成大量支持現場活動的文件,包括拍賣目錄、投標人聲明、捐贈者收據和郵寄標簽。
以前,這些文檔生成為基于固定模板的 PDF。用戶希望能夠自定義這些表單的外觀,并且隨著時間的推移添加大量特定選項以設置字體、顏色和更改對齊方式以及包含的內容。
然而,組合的數量是無窮無盡的,簡單地添加越來越多的選項永遠不會為用戶提供他們想要的所有靈活性。
需要的是一種讓非技術用戶使用他們已經熟悉的工具設計文檔的方法,該工具提供豐富的格式和布局選項。然后可以將這些文檔作為模板上傳,這些模板填充了我們數據庫中托管的內容。
最強大和最常用的選項是 Microsoft Word。我們需要一種方法來獲取用戶提供的 Word 文檔并在服務器端執行合并,生成文件供用戶下載。
Aspose.Words提供了用于訪問和生成 Word 文檔的靈活 API,并支持針對自定義數據源調用本機 Word 郵件合并功能。
我們的第一個原型實現了 IMailMergeDataSource 接口,以將數據庫中的數據輸入郵件合并過程。這種技術運行良好,并且針對Aspose.Words API的代碼非常少。
但是,它有一個主要缺點:它要求用戶使用 Microsoft Word 郵件合并字段來實現模板。雖然郵件合并字段適用于郵件標簽等簡單文檔,但對于更復雜的結構,它們很快就會變得不可用。
例如,一個簡單的條件塊如下所示:
這種語法對于我們的客戶來說太復雜了,無法維護,而且很容易出現格式錯誤。
此外,Word 郵件合并支持并通過 IMailMergeDataSource 公開的數據模型也不容易支持分層數據。我們有很多嵌套數據結構的案例,它們不容易映射到 Word 的郵件合并區域概念。
相反,我們需要一個更靈活的解決方案。Aspose Words 生成的郵件合并語法已經支持一些擴展:使用 mustache 模板語法處理簡單字段值的能力。我們需要擴展這個概念來處理更高級的流控制原語。
因此,我們沒有使用內置的郵件合并功能,而是通過 Aspose API 實現了一個自定義合并引擎,該引擎使用在文檔的正常流程中作為文本編寫的控制原語。
使用新語法的等效條件塊很簡單:
所有文本都只需輸入,根本不需要插入合并字段。
除了使用 mustache 模板語法評估表達式之外,還實現了幾個控制塊:
特別是,{% row %} 原語可以很容易地生成目錄,其中每一行都由數據源中的不同記錄填充。這是許多類型文檔的非常常見的要求。
將這些概念放在一起會產生如下所示的模板:
并產生如下輸出:
Aspose Words API 使得迭代文檔結構和操作樹節點變得非常容易。
甚至像在文檔中插入圖像這樣的操作也需要很少的代碼來實現。
合并引擎的第一遍需要將文檔結構轉換為規范形式,其中分布在多個“運行”節點上的控制節點被折疊成單個運行。
模板的第二遍通過克隆規范模板然后查找控制塊運行來工作。然后使用數據模型中的記錄對這些進行評估。
對于重復控制塊,這需要克隆文檔的任意部分,遞歸地評估其中的任何控制塊,并將最終內容插入回文檔中。
Aspose.Words 可以非常直接地對文檔執行這些轉換,并在模板中找到的各種類型的內容之間提供一致的導航模型。
歡迎下載|體驗更多Aspose產品
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn