Насколько я помню, проблема загрузки на сервер и показа в виде html
документов ms-office возникала у многих подписчиков данного списка.
Сегодня мне удалось состряпать более-менее работающий вариант, чем и спешу
поделиться.
1. Пользователям внушается что документы надо сохранять в формате rtf
(по-моему, это реально)
2. rtf аплоадится на сервер через web-формочку с <input type=file>
То что апач русский, не роляет. rtf, слава богу, семибитный.
3. rtf конвертится в html посредством rtf2html имени Мити Потапова
и Чака Шоттона (взять можно у меня на страничке в разделе catdoc)
4. При этом возникают множественные пустые параграфы, не в том порядке
закрытые тэги и т.п. Моей задачей было обеспечить последующее
редактирование получившегося html в web-формочке, за которой сидит злобный
weblint и подобные вещи не пропускает.
Проблему удалось в значительной степени решить посредством следующего
набора глобальных замен:
5.
$text =~ s/<html>(.*?)(<head>.*?<body[^>]*>)/<html>$2$1/is;
$text =~ s/<([biu])>((\s+|<p>)*)<\/\1>/$2/igs;
$text =~ s/<\/([biu])>((\s+|<p>)*)<\1>/$2/igs;
$text =~ s/(<p>\s*)+/<p>\n/igs;
$text =~ s/(<body[^>]*>)\s*<p>/$1\n/is;
$text =~ s/<p>\s*<\/body>/<\/body>/is;
$text =~ s/<p>\s*<\/([(biu)])>/<\/$1><p>\n/igs;
Да, rtf2html не самый лучший конвертер из имеющихся. Есть еще
полукоммерческий rtftohtml, который умеет картинки и таблицы.
Но уж больно он proprietary. Например, обучать его возиться с кодировками
- замаешься.
Есть еще перловый модуль
RTF::Parser, который был мной проигнорирован по причине любви
к представлению 8-битных символов посредством &#число
и слабой документированности, мешающей оную любовь оторвать.
--------------------------------------------------
Victor Wagner vitus@ice.ru
Programmer Office:7-(095)-203-51-19
Institute for Commerce Home: 7-(095)-135-46-61
Engineering http://www.ice.ru/~vitus
=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =