php rtf generator проблема с кодировкой

  • Автор темы Автор темы asash
  • Дата начала Дата начала

asash

Новичок
php rtf generator проблема с кодировкой

Нужно сгенерировать очет в формате rtf
используется следующий класс: http://www.phpclasses.org/browse/package/1805.html
Но при попытке отобраизить информацию вместо русского языка получаются крокозябры(пробовал скормить ему текст в разных кодировках)
в связи с этим два вопроса:
1)возможно ли заставить этот класс нормально отображать русский язык
2)если нет, то чем можно нормально генерировать отчеты которые нормально кушает msword, так чтобы с кодировками все было нормально.. через com генерировать не могу, т. к. на сервере Linux
 
asash, а кроме танцев с бубном (пробовал скормить ему текст в разных кодировках), разбираться в чем проблема пробовал?
просто как ты представляешь, все сейчас бросятся скачивать этот класс, ставить себе и разбираться что там к чему?
Кроме того что лично ты можешь некорретно данные отдавать классу.
 
Я не прошу никого скачать и разобраться как оно работает.
Вопрос(его первая половина) относится к тем потенциальным людям которые использовали этот же класс и наступали на те же грабли.
А вторая половина вопроса относится вообще ко всем, у кого вставала подобная задача.
Разбираться пробовал и до сих пор собственно пробую, пока к сожалению безрезултатно.
 
asash, а че, свой класс написать никак? ртф - открытый формат. да можно и просто, в конце концов, открыть файл, считать содержимое и заменить плэйсхолдеры на контент, к-й в той же кодировке, что и сам файл.

сам делал как описал и проблем не было.
 
хмм... Это конечно можно, но это прийдется вечер-два потратить на изучения внутренностей rtf...
iSlayter, если писал свой класс, мож выложишь где... Я вот всегда был против изобретения велосипеда, и если кто-то уже писал такой класс, то зачем мне тратить свое время на написание того же самого кода... Всегда думал что в этом и есть прелесть свободного ПО
 
asash
ИМХО с открытыми форматами, если задача касается ОДНОГО-ДВУХ файлов, проще написать свой шаблон + код который с ним работает, чем юзать, безусловно функциональные, но всё же слишком ширпотребные готовые классы.
 
asash
Если тебя не пугает использование шаблонизаторов :) и rtf не хочешь, да если еще клиенты будут смотреть отчеты в msword, то делай html с расширением .doc
word должен схавать...
 
fast2111, он не просто должен, он хавает так, что аж за ушами трещит, полюзуюсь этим во всю.
 
fast2111, спасибо, работает... еще бы разобраться чтобы страница в word такая открывалась в ражиме "разметка страницы" режиме "обычный", хотя это уже мелочи:)
 
dimagolov, поздравляю. откройте ЭТО в MS Office 2007. Вылезет сообщение о несекурности выполняемой операции (файл не соответствует заданному формату). Узерфрендли? Да ну, ниразу.

Самому поэтому и пришлось так-сяк трахаться с стр_реплейсом и куревом спецификации формата.
 
iSlayter, специально попробовал, никаких сообщений. отдаю так:
PHP:
header('Content-Type: application/msword');
header('Content-Disposition: attachment; filename="ClientReport.doc"');
header("Content-Transfer-Encoding: binary");

проверял как для хостов из локалки, так и из инета.

может подскажешь, как настроить ворд 2007 на такую параною, а то копаться в его настройках лень
 
asash попробуй сначала сделать отчет в ворде в том виде в каком он должен быть и сохрани как html... велика вероятность что нужный режим будет там указан.

dimagolov а вы как отдаете чисто html, без всяких там meta, JS, CSS, <![ IF IE6..] ?
Я к тому что возможно выстанавливаются особые "правила/флаги" для совместимости...

Старый оффис -> html от старой версии -> Новый оффис

По идеи такая схема должна работать без всяких проблем, хотя кто знает этот MS, проверить возможности нет
 
выложу все заголовки, которые которые отдаю формируя отчеты как html и отдавая их как doc, как http- шные так и сам html
PHP:
header("Pragma: public");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // some day in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header('Content-Type: application/msword');
header('Content-Disposition: attachment; filename="ClientReport.doc"');
header("Content-Transfer-Encoding: binary");
потом банально
<html>
<head>
<style>
....
</style>
</head>
<body>
....
</body>
</html>
Так как у меня приложение работает только через ИЕ, то и проверялось все это только в ИЕ, хотя http-шные заголовки вроде как прописаны для правильного кеширования универсально. Прикол в том, что в ИЕ запретить кешировать совсем нельзя, потому что временный файл должен сохраняться, чтобы тот же ворд его мог с диска открыть.
 
Сверху