翻譯|使用教程|編輯:吉煒煒|2024-10-31 15:40:27.690|閱讀 96 次
概述:本文介紹了 TX Text Control 真正的 WYSIWYG(所見即所得)模板系統(tǒng)所帶來的獨(dú)特優(yōu)勢,與傳統(tǒng)的 PDF 生成系統(tǒng)(如 HTML 到 PDF 轉(zhuǎn)換器或需要自定義編程的 PDF 庫)相比,模板是可視化設(shè)計(jì)的,類似于 Microsoft Word。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
TX Text Control 是一款功能類似于 MS Word 的文字處理控件,包括文檔創(chuàng)建、編輯、打印、郵件合并、格式轉(zhuǎn)換、拆分合并、導(dǎo)入導(dǎo)出、批量生成等功能。廣泛應(yīng)用于企業(yè)文檔管理,網(wǎng)站內(nèi)容發(fā)布,電子病歷中病案模板創(chuàng)建、病歷書寫、修改歷史、連續(xù)打印、病案歸檔等功能的實(shí)現(xiàn)。
在文檔處理應(yīng)用程序中比較文檔的策略有很多。最常見的方法之一是逐字比較文檔的文本。這是一種簡單有效的文檔比較方法,但它確實(shí)有一些局限性。
當(dāng)您在應(yīng)用程序開發(fā)中接到創(chuàng)建 PDF 文檔的任務(wù)時(shí),您會進(jìn)行研究并找到許多不同的工具來幫助您完成這項(xiàng)工作。當(dāng)然,您可以嘗試自己創(chuàng)建 PDF,方法是研究最新的 PDF 2.0 規(guī)范(ISO 32000:2:2020)的約 1000 頁,其中包含有關(guān) PDF 文件格式、渲染、加密和其他功能的所有技術(shù)細(xì)節(jié)。但讓我們面對現(xiàn)實(shí):這是一項(xiàng)巨大的時(shí)間投入,有整個公司都在處理此事(例如我們 - Text Control)。
第一步是確定要創(chuàng)建哪種類型的 PDF 文檔,最重要的是要確定要創(chuàng)建多少個。當(dāng)涉及到 PDF 創(chuàng)建過程所需的靈活性時(shí),這一決定至關(guān)重要。決策過程中還應(yīng)考慮許多其他方面。
僅這三個問題就可以開啟一個完整的思考過程,即文檔生成過程應(yīng)該如何模塊化和易于維護(hù)。
HTML 到 PDF 的轉(zhuǎn)換
開發(fā)人員的一個非常普遍的想法是使用工具將 HTML 轉(zhuǎn)換為 PDF。理由聽起來很正確,因?yàn)樽鳛殚_發(fā)人員,我們知道如何編寫 HTML,并且對 HTML 和 CSS 樣式充滿信心。因此,此過程的基本思想是開發(fā)人員使用 CSS 創(chuàng)建 HTML,轉(zhuǎn)換器根據(jù)該輸入創(chuàng)建 PDF。流行的庫包括 wkhtmltopdf、Puppeteer 和 Headless Chrome。
優(yōu)點(diǎn):
缺點(diǎn):
對于簡單文檔或需要從網(wǎng)頁創(chuàng)建 PDF 時(shí),HTML 到 PDF 的轉(zhuǎn)換是一個不錯的選擇。但是對于發(fā)票、報(bào)告或合同等復(fù)雜文檔,HTML 到 PDF 轉(zhuǎn)換器有其局限性。
程序化 PDF 生成
了解了 HTML 方法的局限性之后,使用一種能夠更精確地定位元素的方法似乎是顯而易見的。
程序化 PDF 創(chuàng)建是使用編程接口創(chuàng)建 PDF 文檔的過程。這種方法更加靈活,允許您創(chuàng)建具有精確布局和樣式的復(fù)雜文檔。在您的代碼中,您基本上將某些元素定位在頁面上的 x 和 y 坐標(biāo)上。
優(yōu)點(diǎn):
缺點(diǎn):
對于需要精確布局和樣式的復(fù)雜文檔,程序化 PDF 生成是一個不錯的選擇。但是,它可能非常耗時(shí),并且需要編程技能來創(chuàng)建和維護(hù)模板。
以下代碼片段使用 QuestPDF,這是一個用于創(chuàng)建 PDF 文檔的開源 .NET 庫。該代碼基本上將文本添加到標(biāo)題中,您已經(jīng)可以看到這提供了一種靈活的方式,但所有元素都必須以編程方式定位,并且靜態(tài)文本也嵌入到代碼中。
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(); }); }
更高的維護(hù)和技術(shù)債務(wù)
由于程序化 PDF 中的布局邏輯嵌入在代碼中,因此任何模板調(diào)整都需要更改代碼,即使是微小的調(diào)整也是如此。這會導(dǎo)致:
基于模板的 PDF 生成
基于模板的系統(tǒng)允許用戶直觀地設(shè)計(jì) PDF 模板,通常使用與文字處理器非常相似的拖放界面。此設(shè)置允許 WYSIWYG(所見即所得)設(shè)計(jì),其中模板看起來與最終輸出完全相同。
TX Text Control 不僅可用于從頭開始編寫 PDF(如第二種方法中所述),還可用于使用 WYSIWYG 模板的最靈活方法。TX Text Control 附帶一個功能齊全、可自定義且可編程的文檔編輯器,可集成到 Web 應(yīng)用程序中,讓非技術(shù)用戶創(chuàng)建像素完美的模板。SDK 還提供了一個非 UI 引擎,可完全嵌入到采用此模板并將來自各種數(shù)據(jù)源的數(shù)據(jù)合并到模板中的應(yīng)用程序中。
這個概念不僅讓您能夠?yàn)橛脩籼峁┮?個非常易于使用的模板創(chuàng)建界面,而且還為您在合并過程中提供充分的靈活性。
優(yōu)點(diǎn):
缺點(diǎn):
TX Text Control 將強(qiáng)大的動態(tài)文檔生成功能(如合并字段、重復(fù)和條件合并塊)與易于使用的模板設(shè)計(jì)相結(jié)合。
以下代碼使用 TX Text Control 加載預(yù)先設(shè)計(jì)的模板并將 JSON 數(shù)據(jù)合并到其中以創(chuàng)建像素完美的 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); }
結(jié)論
每種方法都有不同的用途,選擇方法通常取決于文檔類型、布局復(fù)雜程度和可用的技術(shù)專長。TX Text Control 等解決方案具有所見即所得的設(shè)計(jì)和靈活的數(shù)據(jù)合并功能,提供了理想的折中方案,將模板設(shè)計(jì)的視覺簡潔性與強(qiáng)大的 PDF 生成功能相結(jié)合。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)