MSWord批量重新采样图像
我有几千个单词文件,我的一些同事已经放在一起。他们不是非常技术性的人,他们刚刚拍摄了他们的1000万像素摄像头并将几张照片直接嵌入到word文件中而无需重新采样。通常情况下,图像在页面上缩小到非常小,比如大约3英寸乘2英寸。
我需要编写一些工具来顺序浏览这些工具,每个~300MB,word文件并对图像进行下采样,然后保存word文件。
我们主要处理的是.doc文件,而不是.docx。可能还有一些powerpoint文件。
我有几个选择。我可以用C#编写一个程序,它为用户提供了一个很好的界面,允许他们在保存时指定DPI和JPEG质量。或者,我可以使用VBA宏来执行此操作,但是我可能需要编写DLL或使用第三方来调整图像大小。
我已经完成了从.xls和.xlsx文件到C#的一些Excel导入,这是一件轻而易举的事情,但我怀疑将下采样图像写回.doc文件的方式使得格式看起来不变可能会很棘手。
我可以获得一些输入:是否有一些免费的库(免费用于商业用途)来访问.doc文件哪些可以做我需要他们做的事情?如果我要用VBA写它,除了下采样问题 - 我还会遇到其他障碍吗?最后,您是否有其他建议如何解决这个问题?
没有找到相关结果
已邀请:
1 个回复
舞备联
中使用命令行界面从.doc文件中提取“WordDocument”。 然后,我将逐字节地读取WordDocument直到找到JPEG SOI标记:0xFF 0xD8,并读取直到EOI标记:0xFF 0xD9。我会把WordDocument的那一部分作为一个流读入
,并在那里调整大小。然后,我会以较小的分辨率/较小的质量将图像保存回WordDocument流。我可以确认正确读取了图像,并且正确地将它们插入到WordDocument中。我们最终得到的文件比我们开始时要小得多。不幸的是,7-Zip允许您从.doc文件中提取这些组件,但它似乎不允许您重新插入它。因此,所有这些工作基本上都是无用的。我可能错了,但我的版本(目前最新版本)不允许我将文件添加到.doc包中。 接下来,我重新编写了该函数,以便它使用MS Office互操作库。我打开一个
和一个
,运行
然后将其保存为.docx文件。很多时候这已经足够了,但有时候我们最终会得到一个稍微小一点的文件。在检查.docx文件的GZip内容后,似乎该文档的创建者使用了Microsoft Photo Editor 3,它以某种方式向docx添加了大约几十MB的OLE信息。 所以这就是我要去的地方。我已经概述了我尝试过的两种方法。 第一种是原始的.doc编辑技术,只有在你能找到一种方法将WordDocument重新打包到.doc中时才会起作用 - 我还没有用PowerPoint文件测试它,但我认为这个过程是类似的。第二种方法的优点是提供.docx和.pptx文件,可以使用兼容zip的打包库打开,并且可以非常轻松地编辑/删除资源。不幸的是,这意味着Office需要安装在计算机上,如果您没有相对较新版本的办公室,那么
方法将抛出异常。 我希望这有助于任何人阅读此内容。