我们有一些代码产生RTF文件从一个RTF模板。它基本上是这样做串的搜索和替代的特殊标签内RTF文件。这可通过一个网页。

通常,处理时间为这是真的快。

然而,我们需要嵌入图像的内的一个模板。我们已经嵌入这些JPEG图像,使用的词是"插入图片/从文件..."功能。但我们发现所得RTF文件大大取决于图像。

例如,我已经插入一个20k JPEG标(它基本上是一个坚实的背景有一些文本)。RTF文件的尺寸增大,从约390k(而不像)以510k(与图像)。

然后我们插入一个JPEG含截图,即图像中包含的文本,多种颜色,等等。JPEG约150万.使用这个图像,RTF文件的尺寸增大,从390k到3.5MB。

这样的编码一词用于储存的图像进RTF不执行线性。我猜测它是取决于什么是JPEG图像。

我需要保持大小RTF模板到最低限度的尝试,并保留我们的文件处理时间到最低限度。

  • 没有任何人有任何想法,如何最大限度减少尺寸的RTF文件嵌入图像的?
  • 是否有任何方式控制了编码使用这个词?我看不到任何选择的任何地方。
  • 任何人都不会知道什么类型的二进制编码的字/RTF用途?

在此先感谢。

有帮助吗?

解决方案

一种图像在RTF文件被储存作为一个维基媒体基金会、非压缩的.Mac,这将是macpict.你最好的选择保持的文件大小下来链路的图像文档,而不是插入一个复制的文件。贸易是,你必须保持该文件在一起。

编辑 是压缩RTF一个选择吗?使用邮rar,你会得到你的文件大小的回去,但你必须要解,首先很明显。那是应该的工具,将做rtf压缩,但我从来没有使用它们。

其他提示

这里是最好的解决方案

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

摘录:

症状

当保存一个微软Word文档中包含一个电磁场, PNG,GIF,JPEG或图形作不同的文件格式(例如, 字6.0/95(.doc)或Rich Text Format(.rtf)),文件大小 文件可能会大大增加。

例如,一个微软Word2000年文档中包含一个JPEG 图保存作为一个词2000年文件可具有的文件大小 45,568字节(44.5KB)。然而,在保存这一文件作为词6.0/95 (.doc)或作为丰富的文本格式(.rtf),该文件的大小可能增长到 1,289,728字节(1.22MB)。

这种功能是通过设计在Microsoft Word。如果一个 EMF,PNG,GIF,或JPEG图插入一个字的文件, 当文档保存,两个副本的图形是存在的 文件。图形的存在可适用的电磁场,PNG,GIF,JPEG或 格式和转换为维基媒体基金会(Windows元文件)的格式。

决议

警告如果你使用 注册编辑错误,可能造成严重问题,这些问题可能 需要重新安装操作系统。Microsoft不能 保证可以解决的问题,结果使用注册表 编辑错误。使用注册编辑在你自己的风险。

防止字从节省的两个副本中的图形的文件, 和减少文件的尺寸的文件,加 ExportPictureWithMetafile=0串值的Microsoft Windows 登记册。

我们已经做了一个类似的项目超过在工作。只有我们使用的不是那个"插入图片/从文件..."功能。我们的模板,具有标签名[的照片],因为我相信你自己不也。当我们处理的文件,我们更换标签的RTF码所需要的显示器的图像。我们把它们放在桌子上,我们正在显示两个图像,每一行,加上一个排在上面的标题。

所以,你可能会把一个标签[照片]在你的模板。然后你更换标签的RTF码。你可以找到一些很好的参考文献,这些代码在网。为。 在这里, .

现在,我的代码看起来是这样的:

\par{ tf1\ansi\deff0{ rowd\cellx8810{标题}\intbl\qc\cell ow}{ rowd\cellx4405\cellx8810{\pict\jpegblip\picwgoal4000\pichgoal3000\piccropl-50\piccropr-50\piccropt-50\piccropb-50\hex 你的形象为一系列的字节进制的 }\intbl\cell{\pict\jpegblip\picwgoal4000\pichgoal3000\piccropl-50\piccropr-50\piccropt-50\piccropb-50\hex 你其他的像 }\intbl\细胞\行}

如果你得到你的图像的到的一个字阵列,则可以使用BitConverter.ToString(array)让你进制代码。只有你会需要更换破折号"-"通过"";

我们的文件将小于1/10的空间一个"正常"RTF会。如果我们开放的doc的代码有记事本之类的编辑器++,我们可以看到RTF码,但是,如果我们打开文档和保存为RTF(更改其名称),将从1.5Mb到50mb!!我猜DaveParillo的答复证明:我只写的每一个图像的一次。

希望这有所帮助。干杯伙计

最初,请记住,每一个字存储使用2个字符的(两个字节),这意味着递增,至少是两倍大小的原始图片。

其他的事情你需要的是这个词和词垫插入不同(味或格式)的相同的图像及其他领域(即RTF可以显示没有他们)。

这里有一些脚本用于插入图片在RTF(https://joseluisbz.wordpress.com/2011/06/22/script-de-clases-rtf-para-jsp-y-php/),和一个实例使用(https://joseluisbz.wordpress.com/2011/07/16/subiendo-imagenes-png-y-jpg-y-archivos-a-mysql-con-php-y-jsp-y-mostrarlos-en-rtf-usando-clases/)

现在,也许你会需要的替代原图像另一个(http://joseluisbz.wordpress.com/2013/07/26/exploring-a-wmf-file-0x000900/).

该Swartbees答案的工作完全适用于我。我第一次减小的图像质量"0"用G.I.M.P.保存jpeg的功能。后microsoft解决方案的建议Swartbees上我重新插入图片的文件和大小的增加是可以忽略不计229k到279k(相对于29000kb).

谢谢你的建议,伙计们。

是的,通过消除冗余的字符。而要做到这一点,则必须插入他们回到你流。例如,如果你已经超过f第二十字在一个线上,然后你可以替换f[20]在你的流。它是一个开始。

-最好的运气。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top