Есть ли способ в PHP для доступа к сжатым RTF и выходным RTF-кодам
Есть ли способ в PHP для доступа к сжатому RTF и вывести RTF-код в браузер?
У меня есть текстовый столбец в SQL, и я хотел бы извлечь из него RTF - мне удалось вывести данные как 0x1F8B
Я считаю, что эти данные сжаты RTF - http://www.freeutils.net/source/jtnef/rtfcompressed.jsp
Использование [MS-OXRTFCP]: алгоритм сжатия Rich Text Format (RTF) http://msdn.microsoft.com/en-us/library/cc463890%28v=exchg.80%29
Пример данных:
0x1F8B0800000000000000654E316EC3300CEC5CA07FE0D6AD909D1628E0A1C8D01F74E422CB94CD46A11C4A6E5018F97B6967EC72381EC9BB5B516B6CD04BE11DC23C36ED5B8B03C5E8364C5EC6C61D0E2BC62CB5F6C988C358AE5C0AC6592F2DC630792D541D1C957DEA6E76D260144EFF57B7A7C715434E59CD0A3A541A1C8E4A240EFBB490EBEC027F98AE2796E11597D0E0EC75C013D1BC8360F1EF0EC316B115695BF89A08CE390B70816ABC571EA74AA542EEBF295460D975642B069F5EEBF45C6CB27707E5F4FBB14558EC1D83D9EEEC28D9BE142E8B59719697BB6C051FFE00D09796A337010000
И это выглядит так, как я хочу, но его в VB http://www.vbforums.com/attachment.php?attachmentid=87371&d=1326754610
Ответы
Ответ 1
Ваш образец данных - это данные gzipped, используйте gzdecode
для его декодирования. Вам нужно будет передать двоичную строку, а не шестнадцатеричную строку (используйте hex2bin
или pack
для преобразования)
if (!function_exists(hex2bin)){
function hex2bin($hexStr){
return pack('H*', $hexStr);
}
}
$rtf = gzdecode(hex2bin('1F8B0800000000000000654E316EC3300CEC5CA07FE0D6AD909D1628E0A1C8D01F74E422CB94CD46A11C4A6E5018F97B6967EC72381EC9BB5B516B6CD04BE11DC23C36ED5B8B03C5E8364C5EC6C61D0E2BC62CB5F6C988C358AE5C0AC6592F2DC630792D541D1C957DEA6E76D260144EFF57B7A7C715434E59CD0A3A541A1C8E4A240EFBB490EBEC027F98AE2796E11597D0E0EC75C013D1BC8360F1EF0EC316B115695BF89A08CE390B70816ABC571EA74AA542EEBF295460D975642B069F5EEBF45C6CB27707E5F4FBB14558EC1D83D9EEEC28D9BE142E8B59719697BB6C051FFE00D09796A337010000'));
Вот исходные данные.
{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\fnil\fcharset0 Arial;}}
{\colortbl ;\red0\green0\blue0;}
\viewkind4\uc1\pard\keep\keepn\sa80\cf1\f0\fs22 The moon is the brightest object in the \i\f1 Earth \i0\f0 sky?\par
\par
\cf0\par
Another question.\par
}
И это визуализированный текст.
Луна - самый яркий объект на небе Земли?
Другой вопрос.
Я не уверен, если вы хотите только raw rtf или rendered, посмотрите Бесплатный (желательно) PHP RTF в HTML-конвертер?, если вы хотите, чтобы rtf в html.
Ответ 2
Я не могу сказать вам, если
0x1F8B0800000000000000654E316EC3300CEC5CA07FE0D6AD909D1628E0A1C8D01F74E422CB94CD46A11C4A6E5018F97B6967EC72381EC9BB5B516B6CD04BE11DC23C36ED5B8B03C5E8364C5EC6C61D0E2BC62CB5F6C988C358AE5C0AC6592F2DC630792D541D1C957DEA6E76D260144EFF57B7A7C715434E59CD0A3A541A1C8E4A240EFBB490EBEC027F98AE2796E11597D0E0EC75C013D1BC8360F1EF0EC316B115695BF89A08CE390B70816ABC571EA74AA542EEBF295460D975642B069F5EEBF45C6CB27707E5F4FBB14558EC1D83D9EEEC28D9BE142E8B59719697BB6C051FFE00D09796A337010000
- это фактически сжатые данные RTF. Но если это так, Zarafa PHP MAPI Extension предлагает функцию для ее распаковки: mapi_decompressrtf()
.