[C#] 无需使用存储如何将DOC或DOCX字节数组转换为PDF
关于Word字节数组内存转PDF的方案说明
原生Office Interop的局限性
你当前使用的Office Interop组件本身不支持完全脱离磁盘的转换操作:
Documents.Open()方法仅接受实体磁盘文件的路径作为入参,无法直接读取内存中的字节数组或内存流ExportAsFixedFormat()方法同样仅支持输出到指定磁盘路径,无法直接将转换后的PDF内容输出到内存
因此仅靠原生Interop无法满足你不使用磁盘存储的需求。
可行的纯内存转换方案
建议替换为支持内存流操作的纯托管文档处理库,无需依赖Office安装,全程可在内存中完成转换,参考实现如下:
示例实现(基于Spire.Doc)
先安装对应NuGet包,示例代码:
using Spire.Doc; using System.IO; public byte[] DocToPdfInMemory(byte[] sourceDocBytes) { // 将源文件字节数组加载到内存流 using (var inputMs = new MemoryStream(sourceDocBytes)) { Document wordDoc = new Document(); // 直接从内存流读取文档,无磁盘操作 wordDoc.LoadFromStream(inputMs, FileFormat.Auto); using (var outputMs = new MemoryStream()) { // 导出PDF直接写入内存流 wordDoc.SaveToStream(outputMs, FileFormat.PDF); // 返回PDF字节数组 return outputMs.ToArray(); } } }
说明:Spire.Doc免费版仅支持处理10页以内的文档,大型文档可考虑Aspose.Words等商业库,均支持相同的纯内存操作逻辑。
内容的提问来源于stack exchange,提问作者Akbar Badhusha
相关产品推荐
相关产品推荐

