Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[apache-talk] Upload rtf (вариант решени я)



Насколько я помню, проблема загрузки на сервер и показа в виде 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@xxxxxx
Programmer			Office:7-(095)-203-51-19
Institute for Commerce 		Home: 7-(095)-135-46-61
Engineering                     http://www.ice.ru/~vitus

=============================================================================
=               Apache-Talk@xxxxxxxxxxxxx mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =






Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"Russian Apache" includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) See Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C) 1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.