翻譯|使用教程|編輯:吉煒煒|2024-10-31 15:40:27.690|閱讀 96 次
概述:本文介紹了 TX Text Control 真正的 WYSIWYG(所見即所得)模板系統所帶來的獨特優勢,與傳統的 PDF 生成系統(如 HTML 到 PDF 轉換器或需要自定義編程的 PDF 庫)相比,模板是可視化設計的,類似于 Microsoft Word。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
TX Text Control 是一款功能類似于 MS Word 的文字處理控件,包括文檔創建、編輯、打印、郵件合并、格式轉換、拆分合并、導入導出、批量生成等功能。廣泛應用于企業文檔管理,網站內容發布,電子病歷中病案模板創建、病歷書寫、修改歷史、連續打印、病案歸檔等功能的實現。
在文檔處理應用程序中比較文檔的策略有很多。最常見的方法之一是逐字比較文檔的文本。這是一種簡單有效的文檔比較方法,但它確實有一些局限性。
當您在應用程序開發中接到創建 PDF 文檔的任務時,您會進行研究并找到許多不同的工具來幫助您完成這項工作。當然,您可以嘗試自己創建 PDF,方法是研究最新的 PDF 2.0 規范(ISO 32000:2:2020)的約 1000 頁,其中包含有關 PDF 文件格式、渲染、加密和其他功能的所有技術細節。但讓我們面對現實:這是一項巨大的時間投入,有整個公司都在處理此事(例如我們 - Text Control)。
第一步是確定要創建哪種類型的 PDF 文檔,最重要的是要確定要創建多少個。當涉及到 PDF 創建過程所需的靈活性時,這一決定至關重要。決策過程中還應考慮許多其他方面。
僅這三個問題就可以開啟一個完整的思考過程,即文檔生成過程應該如何模塊化和易于維護。
HTML 到 PDF 的轉換
開發人員的一個非常普遍的想法是使用工具將 HTML 轉換為 PDF。理由聽起來很正確,因為作為開發人員,我們知道如何編寫 HTML,并且對 HTML 和 CSS 樣式充滿信心。因此,此過程的基本思想是開發人員使用 CSS 創建 HTML,轉換器根據該輸入創建 PDF。流行的庫包括 wkhtmltopdf、Puppeteer 和 Headless Chrome。
優點:
缺點:
對于簡單文檔或需要從網頁創建 PDF 時,HTML 到 PDF 的轉換是一個不錯的選擇。但是對于發票、報告或合同等復雜文檔,HTML 到 PDF 轉換器有其局限性。
程序化 PDF 生成
了解了 HTML 方法的局限性之后,使用一種能夠更精確地定位元素的方法似乎是顯而易見的。
程序化 PDF 創建是使用編程接口創建 PDF 文檔的過程。這種方法更加靈活,允許您創建具有精確布局和樣式的復雜文檔。在您的代碼中,您基本上將某些元素定位在頁面上的 x 和 y 坐標上。
優點:
缺點:
對于需要精確布局和樣式的復雜文檔,程序化 PDF 生成是一個不錯的選擇。但是,它可能非常耗時,并且需要編程技能來創建和維護模板。
以下代碼片段使用 QuestPDF,這是一個用于創建 PDF 文檔的開源 .NET 庫。該代碼基本上將文本添加到標題中,您已經可以看到這提供了一種靈活的方式,但所有元素都必須以編程方式定位,并且靜態文本也嵌入到代碼中。
void ComposeHeader(IContainer container) { var titleStyle = TextStyle.Default.FontSize(20).SemiBold().FontColor(Colors.Blue.Medium); container.Row(row => { row.RelativeItem().Column(column => { column.Item().Text($"Invoice #{Model.InvoiceNumber}").Style(titleStyle); column.Item().Text(text => { text.Span("Issue date: ").SemiBold(); text.Span($"{Model.IssueDate:d}"); }); column.Item().Text(text => { text.Span("Due date: ").SemiBold(); text.Span($"{Model.DueDate:d}"); }); }); row.ConstantItem(100).Height(50).Placeholder(); }); }
更高的維護和技術債務
由于程序化 PDF 中的布局邏輯嵌入在代碼中,因此任何模板調整都需要更改代碼,即使是微小的調整也是如此。這會導致:
基于模板的 PDF 生成
基于模板的系統允許用戶直觀地設計 PDF 模板,通常使用與文字處理器非常相似的拖放界面。此設置允許 WYSIWYG(所見即所得)設計,其中模板看起來與最終輸出完全相同。
TX Text Control 不僅可用于從頭開始編寫 PDF(如第二種方法中所述),還可用于使用 WYSIWYG 模板的最靈活方法。TX Text Control 附帶一個功能齊全、可自定義且可編程的文檔編輯器,可集成到 Web 應用程序中,讓非技術用戶創建像素完美的模板。SDK 還提供了一個非 UI 引擎,可完全嵌入到采用此模板并將來自各種數據源的數據合并到模板中的應用程序中。
這個概念不僅讓您能夠為用戶提供一個非常易于使用的模板創建界面,而且還為您在合并過程中提供充分的靈活性。
優點:
缺點:
TX Text Control 將強大的動態文檔生成功能(如合并字段、重復和條件合并塊)與易于使用的模板設計相結合。
以下代碼使用 TX Text Control 加載預先設計的模板并將 JSON 數據合并到其中以創建像素完美的 PDF。
using TXTextControl.DocumentServer.Fields; using (TXTextControl.ServerTextControl tx = new TXTextControl.ServerTextControl()) { tx.Create(); TXTextControl.LoadSettings ls = new TXTextControl.LoadSettings() { ApplicationFieldFormat = TXTextControl.ApplicationFieldFormat.MSWord, LoadSubTextParts = true }; tx.Load("template.docx", TXTextControl.StreamType.WordprocessingML, ls); using (TXTextControl.DocumentServer.MailMerge mailMerge = new TXTextControl.DocumentServer.MailMerge()) { var jsonData = System.IO.File.ReadAllText("data.json"); mailMerge.TextComponent = tx; mailMerge.MergeJsonData(jsonData); } tx.Save("output.pdf", TXTextControl.StreamType.AdobePDF); }
結論
每種方法都有不同的用途,選擇方法通常取決于文檔類型、布局復雜程度和可用的技術專長。TX Text Control 等解決方案具有所見即所得的設計和靈活的數據合并功能,提供了理想的折中方案,將模板設計的視覺簡潔性與強大的 PDF 生成功能相結合。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網