如何通过嵌入图像减小 RTF 的大小?

2022-09-03 13:26:30

我们有一些代码可以从RTF模板生成RTF文档。它基本上是在进行字符串搜索并替换RTF文件中的特殊标记。这可以通过网页访问。

通常,此操作的处理时间非常快。

但是,我们需要在模板中嵌入图像。我们一直在使用Word的“插入/图片/来自文件...”将这些图像嵌入为JPEG图像。功能性。但是我们发现,生成的 RTF 文件大小在很大程度上取决于图像。

例如,我插入了一个20k JPEG徽标(基本上是带有一些文本的纯色背景)。RTF 文件的大小从大约 390k(不含图像)增加到 510k(带图像)。

然后,我们插入了一个包含屏幕截图的JPEG,即图像包含文本,多种颜色等。JPEG大约是150k。使用此图像,RTF 文件的大小从 390k 增加到 3.5MB。

因此,Word 用于将图像存储到 RTF 中的编码不是线性执行的。我猜这取决于JPEG图像中的内容。

我需要将RTF模板的大小保持在最低限度,以尝试将文件处理时间保持在最低限度。

  • 有没有人对如何最小化嵌入图像的RTF文件的大小有任何想法?
  • 有没有办法控制Word使用的编码?我在任何地方都看不到任何选项。
  • 有谁知道Word / RTF使用哪种类型的二进制编码?

提前致谢。


答案 1

这是最好的解决方案

http://support.microsoft.com/kb/224663

摘录:

症状

将包含 EMF、PNG、GIF 或 JPEG 图形的 Microsoft Word 文档另存为其他文件格式(例如,Word 6.0/95 (.doc) 或 RTF 格式 (.rtf)))时,文档的文件大小可能会显著增加。

例如,包含另存为 Word 2000 文档的 JPEG 图形的 Microsoft Word 2000 文档的文件大小可能为 45,568 字节 (44.5KB)。但是,当您将此文件另存为 Word 6.0/95 (.doc) 或 RTF 格式 (.rtf) 时,文件大小可能会增长到 1,289,728 字节 (1.22MB)。

原因

此功能是 Microsoft Word 中的设计使然。如果将 EMF、PNG、GIF 或 JPEG 图形插入到 Word 文档中,则在保存文档时,将在文档中保存图形的两个副本。图形以适用的 EMF、PNG、GIF 或 JPEG 格式保存,并且还转换为 WMF(Windows 图元文件)格式。

分辨率

警告 如果注册表编辑器使用不当,可能会导致严重的问题,可能需要重新安装操作系统。Microsoft 无法保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。

若要防止 Word 在文档中保存图形的两个副本,并减小文档的文件大小,请将 ExportPictureWithMetafile=0 字符串值添加到 Microsoft Windows 注册表中。


答案 2

RTF 文件中的图像将存储为未压缩的 WMF。在mac上,它将是macpict。减小文件大小的最佳办法是将图像链接到文档,而不是在文档中插入副本。权衡是您必须将文件放在一起。

编辑压缩 RTF 是一种选择吗?使用zip /rar,您将获得文件大小,但首先必须解压缩。应该有一些工具可以进行rtf压缩,但我从未使用过它们。


推荐