如何在流中修改文档且不改动原文件,仅将变更保存为PDF?
问题原因与解决方案
你的问题出在保存PDF时错误覆盖了原DOCX文件路径:代码里dstStream指向的是原文档Document.docx的路径,并且用了写入模式"wb",哪怕指定了PDF保存格式,最终也会把这个路径下的原文件覆盖成PDF内容,导致原DOCX被改动。
要实现只输出修改后的PDF、不改动原文档,只需要给PDF指定一个全新的输出路径即可,甚至可以不用手动创建流,Aspose.Words支持直接传入文件路径字符串保存,更简洁:
修正后的代码示例
import aspose.words as aw # 加载原DOCX文档 doc = aw.Document(docs_base.my_dir + "Document.docx") # ... 执行你的文档修改操作 ... # 保存为PDF到新路径,完全不触碰原DOCX doc.save(docs_base.my_dir + "Document_Modified.pdf", aw.SaveFormat.PDF)
如果一定要用流的方式,也要确保流指向的是新的PDF文件路径:
import io import aspose.words as aw # 只读模式加载原文档 stream = io.FileIO(docs_base.my_dir + "Document.docx") doc = aw.Document(stream) stream.close() # ... 执行你的文档修改操作 ... # 新建PDF输出流,路径是全新的PDF文件 dstStream = io.FileIO(docs_base.my_dir + "Document_Modified.pdf", "wb") doc.save(dstStream, aw.SaveFormat.PDF) dstStream.close()
核心就是:输出PDF的路径必须和原DOCX路径不同,避免覆盖原文件。
内容的提问来源于stack exchange,提问作者alias51
相关产品推荐
相关产品推荐

