无法使用 PHP 将 RTF 位图转换为 HTML 图像

问题描述 投票:0回答:1

通过 REST API 调用,我获得 RTF 格式的描述文本。作为测试,我仅向该描述添加了一个小位图图像(红色的 2x3 像素)。这将返回以下 RTF 格式字符串:

{\rtf1\fbidis\ansi\ansicpg0\uc1\deff0\deflang0\deflangfe0{\fonttbl{\f0\fnil Arial;}}{\colortbl;} \pard\fi0\li0\ql\ri0\sb0\sa0\itap0 {\pict\picwgoal30\pichgoal45\dibitmap0\wbmwidthbytes8\picw2\pich3 28000000020000000300000001002000000000001800000000000000000000000000000000000000241CED00241CED00241CED00241CED00241CED00241CED00}\par}

如果将此字符串放入 ascii 文件中并将扩展名设置为 *.rtf 并在写字板中打开它,我会得到预期的结果,一个只有红色小图像的文档。

我希望能够使用 PHP 将此 RTF 字符串转换为 HTML。我尝试过 roundcube/rtf-html-php 包(ExtractImage() 和 PrintImage()),甚至修改了它,但没有成功。 RTF 文件字符串似乎不包含完整的位图文件,可能缺少标头。因为如果我在十六进制编辑器中打开位图文件,与 RTF 文件字符串中的数据相比,我可以在开头看到额外的 14 个字节:

我看过 imagecreatefromstring() 但它还需要完整的图像文件作为输入。

我该如何解决这个问题?

php html rtf
1个回答
0
投票

来自 RTF 规范:

\dibitmapN - 图片源是 Windows 设备无关位图。然后 参数标识位图类型(必须等于 0)。

但是位图不包含 BMP 标头。提取原始图片数据后,必须添加标题才能查看图像。

但是,BMP 不是适合网络的图片格式。因此,PHP应用程序必须首先将其转换为合适的格式。

© www.soinside.com 2019 - 2024. All rights reserved.