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

Andrey Gerzhov (kittle@freeland.kiev.ua)
Mon, 25 Oct 1999 23:16:48 +0300 (EEST)

-- forwarded message --
Path: freeland.kiev.ua!news.alexradio.kiev.ua!not-for-mail
Date: Mon, 25 Oct 1999 13:48:23 +0400 (MSD)
From: Victor Wagner <vitus@ice.ru>
To: apache-talk@lists.lexa.ru
Subject: [apache-talk] =?koi8-r?Q?Upload_rtf_=28=D7=C1=D2=C9=C1=CE=D4_=D2=C5=DB=C5=CE=C9?=
Message-ID: <Pine.LNX.4.10L0.9910251333430.23514-100000@zinc.fe.msk.ru>
Newsgroups: alex.gated.apache.talk
Lines: 49
Xref: freeland.kiev.ua alex.gated.apache.talk:1775

Насколько я помню, проблема загрузки на сервер и показа в виде 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 =

-- end of forwarded message --

-- 
С тем, что не помешает никогда,
                                               Kittle