翻譯|行業(yè)資訊|編輯:吉煒煒|2025-08-25 14:07:01.953|閱讀 41 次
概述:在 C# 開發(fā)中,處理 PDF 的字節(jié)數(shù)組是一種常見需求。本文將通過 Spire.PDF for .NET 演示具體實現(xiàn)步驟。你將學習如何將字節(jié)數(shù)組轉(zhuǎn)換為 PDF,如何將 PDF 轉(zhuǎn)換為字節(jié)數(shù)組,以及如何直接在內(nèi)存中使用 C# 代碼編輯 PDF。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在 C# 開發(fā)中,處理 PDF 的字節(jié)數(shù)組是一種常見需求。開發(fā)者常常需要將 PDF 文檔存儲到數(shù)據(jù)庫、通過 API 傳輸,或者完全在內(nèi)存中進行處理而不依賴文件系統(tǒng)。在這些場景下,在 C# 中實現(xiàn) PDF 與字節(jié)數(shù)組的互轉(zhuǎn) 就顯得尤為重要。
E-iceblue旗下Spire系列產(chǎn)品,是文檔開發(fā)組件領(lǐng)域的佼佼者,支持國產(chǎn)化信創(chuàng)。本文將通過 Spire.PDF for .NET 演示具體實現(xiàn)步驟。你將學習如何將字節(jié)數(shù)組轉(zhuǎn)換為 PDF,如何將 PDF 轉(zhuǎn)換為字節(jié)數(shù)組,以及如何直接在內(nèi)存中使用 C# 代碼編輯 PDF。
加入Spire技術(shù)交流QQ群(125237868),與更多開發(fā)者一起提升文檔開發(fā)技能。
使用 byte[] 作為傳輸格式,可以避免生成臨時文件,使代碼更適配云環(huán)境和容器環(huán)境。
準備工作: 在運行示例前,請先在項目中安裝 Spire.PDF for .NET 的 NuGet 包。
Install-Package Spire.PDF
安裝完成后,即可通過 byte[] 或 Stream 加載 PDF,編輯頁面,并將結(jié)果寫回內(nèi)存或磁盤,無需額外轉(zhuǎn)換器。
當上游服務(wù)(如 API 或消息隊列)傳遞一個代表 PDF 的 byte[] 時,通常需要將其還原為文檔,便于進一步處理或保存到磁盤。使用 Spire.PDF for .NET,這個過程可以直接在內(nèi)存中完成,無需中間臨時文件。
應(yīng)用場景與方法: 從數(shù)據(jù)庫或 API 獲取一個 byte[],在內(nèi)存中構(gòu)建 PdfDocument,可選地驗證一些基礎(chǔ)信息,然后保存為 PDF。
using Spire.Pdf; using System.IO; class Program { static void Main() { // 示例來源:從數(shù)據(jù)庫或 API 獲取的字節(jié)數(shù)組 byte[] pdfBytes = File.ReadAllBytes("Sample.pdf"); // 請?zhí)鎿Q為實際數(shù)據(jù)來源 // 1) 從字節(jié)數(shù)組加載 PDF(內(nèi)存中完成) PdfDocument doc = new PdfDocument(); doc.LoadFromBytes(pdfBytes); // 2) (可選)在保存或處理前查看文檔信息 // int pageCount = doc.Pages.Count; // 3) 保存為文件 doc.SaveToFile("Output.pdf"); doc.Close(); } }下圖展示了字節(jié)數(shù)組到 PDF 的轉(zhuǎn)換流程:
代碼解析:
反向轉(zhuǎn)換時,將 PDF 轉(zhuǎn)換為 byte[] 便于寫入數(shù)據(jù)庫、緩存,或通過 HTTP 響應(yīng)返回文件。Spire.PDF for .NET 支持將 PDF 保存到 MemoryStream,再通過 ToArray() 轉(zhuǎn)換為字節(jié)數(shù)組。
應(yīng)用場景與方法: 加載現(xiàn)有 PDF,將其保存到 MemoryStream,再提取 byte[]。這種方式特別適用于 API 返回 PDF 或持久化存儲。
using Spire.Pdf; using System.IO; class Program { static void Main() { // 1) 從磁盤、網(wǎng)絡(luò)或資源文件加載 PDF PdfDocument doc = new PdfDocument(); doc.LoadFromFile("Input.pdf"); // 2) 保存到內(nèi)存流,避免生成臨時文件 byte[] pdfBytes; using (var ms = new MemoryStream()) { doc.SaveToStream(ms); pdfBytes = ms.ToArray(); } doc.Close(); // pdfBytes 現(xiàn)在包含完整文檔(可直接寫入數(shù)據(jù)庫或 API 返回) // 示例:return File(pdfBytes, "application/pdf"); } }下圖展示了 PDF 轉(zhuǎn)換為字節(jié)數(shù)組的流程:
關(guān)鍵點總結(jié):
更強大的場景是直接在內(nèi)存中編輯 PDF。你可以從 byte[] 加載 PDF,添加文字或圖片、加水印、填寫表單,再將結(jié)果保存為新的 byte[]。這種無文件管道非常適合微服務(wù)。
應(yīng)用場景與方法: 從字節(jié)數(shù)組加載 PDF,在第一頁添加文字標記,最后輸出新的字節(jié)數(shù)組。
using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing; using System.IO; class Program { static void Main() { // 來源可以是數(shù)據(jù)庫、API 或文件,這里用 byte[] 表示 byte[] inputBytes = File.ReadAllBytes("Input.pdf"); // 1) 內(nèi)存加載 PDF var doc = new PdfDocument(); doc.LoadFromBytes(inputBytes); // 2) 編輯:在第一頁寫入一個小標記 PdfPageBase page = doc.Pages[0]; page.Canvas.DrawString( "編輯后的PDF文檔", new PdfTrueTypeFont(new Font("HarmonyOS Sans SC", 26f), true), PdfBrushes.DarkBlue, new PointF(100, page.Size.Height - 100) ); // 3) 保存為新的字節(jié)數(shù)組 byte[] editedBytes; using (var ms = new MemoryStream()) { doc.SaveToStream(ms); editedBytes = ms.ToArray(); } doc.Close(); // editedBytes 可持久化存儲或由 API 返回 } }下圖展示了編輯后的 PDF 頁面:
要點說明:
下表總結(jié)了該 API 在字節(jié)數(shù)組處理中的優(yōu)勢:
需求點 | Spire.PDF for .NET 的優(yōu)勢 |
---|---|
I/O 靈活性 | 同一個 PdfDocument API 支持從文件路徑、Stream 或 byte[] 加載與保存 |
內(nèi)存編輯 | 可繪制文本/圖片、管理批注/表單、添加水印等,無需臨時文件 |
服務(wù)友好 | 輕松集成到 ASP.NET 接口和后臺任務(wù) |
處理真實文檔 | 支持多頁 PDF,可通過流控制內(nèi)存消耗 |
代碼簡潔 | 避免手動字節(jié)操作和復雜互操作,簡化實現(xiàn) |
本文演示了如何在 C# 中 將字節(jié)數(shù)組轉(zhuǎn)換為 PDF、如何 將 PDF 轉(zhuǎn)換為字節(jié)數(shù)組,以及如何 直接在內(nèi)存中編輯 PDF。通過流和字節(jié)數(shù)組操作,可以讓 API 設(shè)計更簡潔、響應(yīng)更高效,同時兼顧數(shù)據(jù)庫和云環(huán)境的適配性。Spire.PDF for .NET 提供了一套一致的無文件化工作流,既適合快速轉(zhuǎn)換,也能擴展為完整的內(nèi)存文檔處理。
可以。使用 LoadFromBytes 從 byte[] 加載 PDF,然后保存到 MemoryStream 或直接在 API 中返回,無需落盤。
使用 PdfDocument.SaveToStream 方法,并調(diào)用 MemoryStream.ToArray() 獲取字節(jié)數(shù)組,再存儲為 BLOB 或傳遞給其他服務(wù)。
完全可以。先通過字節(jié)數(shù)組加載 PDF,再進行文字、圖片、水印、批注或表單填寫等編輯,最后保存為新的 byte[]。
及時釋放流、在合適的場景重用緩沖區(qū)、每個操作/線程單獨創(chuàng)建 PdfDocument。對于大文件,建議使用流式 I/O 控制內(nèi)存使用,保證可預(yù)測性。
如需體驗 Spire.PDF for .NET 的完整功能(無評估限制),你可以免費 30 天試用授權(quán)。
————————————————————————————————————————
關(guān)于慧都科技:
慧都科技是一家行業(yè)數(shù)字化解決方案公司,長期專注于軟件、油氣與制造行業(yè)。公司基于深入的業(yè)務(wù)理解與管理洞察,以系統(tǒng)化的業(yè)務(wù)建模驅(qū)動技術(shù)落地,幫助企業(yè)實現(xiàn)智能化運營與長期競爭優(yōu)勢。在軟件工程領(lǐng)域,我們提供開發(fā)控件、研發(fā)管理、代碼開發(fā)、部署運維等軟件開發(fā)全鏈路所需的產(chǎn)品,提供正版授權(quán)采購、技術(shù)選型、個性化維保等服務(wù),幫助客戶實現(xiàn)技術(shù)合規(guī)、降本增效與風險可控。慧都科技E-iceblue的官方授權(quán)代理商,提供E-iceblue系列產(chǎn)品免費試用,咨詢,正版銷售等于一體的專業(yè)化服務(wù)。E-iceblue旗下Spire系列產(chǎn)品是國產(chǎn)文檔處理領(lǐng)域的優(yōu)秀產(chǎn)品,支持國產(chǎn)化,幫助企業(yè)高效構(gòu)建文檔處理的應(yīng)用程序。
歡迎下載|體驗更多E-iceblue產(chǎn)品
獲取更多信息請咨詢 ;技術(shù)交流Q群(125237868)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)