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

asash

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

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

dimagolov

Новичок
asash, а кроме танцев с бубном (пробовал скормить ему текст в разных кодировках), разбираться в чем проблема пробовал?
просто как ты представляешь, все сейчас бросятся скачивать этот класс, ставить себе и разбираться что там к чему?
Кроме того что лично ты можешь некорретно данные отдавать классу.
 

asash

Новичок
Я не прошу никого скачать и разобраться как оно работает.
Вопрос(его первая половина) относится к тем потенциальным людям которые использовали этот же класс и наступали на те же грабли.
А вторая половина вопроса относится вообще ко всем, у кого вставала подобная задача.
Разбираться пробовал и до сих пор собственно пробую, пока к сожалению безрезултатно.
 

iSlayter

Новичок
asash, а че, свой класс написать никак? ртф - открытый формат. да можно и просто, в конце концов, открыть файл, считать содержимое и заменить плэйсхолдеры на контент, к-й в той же кодировке, что и сам файл.

сам делал как описал и проблем не было.
 

asash

Новичок
хмм... Это конечно можно, но это прийдется вечер-два потратить на изучения внутренностей rtf...
iSlayter, если писал свой класс, мож выложишь где... Я вот всегда был против изобретения велосипеда, и если кто-то уже писал такой класс, то зачем мне тратить свое время на написание того же самого кода... Всегда думал что в этом и есть прелесть свободного ПО
 

TutanXamoN

Новичок
asash
ИМХО с открытыми форматами, если задача касается ОДНОГО-ДВУХ файлов, проще написать свой шаблон + код который с ним работает, чем юзать, безусловно функциональные, но всё же слишком ширпотребные готовые классы.
 

fast2111

Новичок
asash
Если тебя не пугает использование шаблонизаторов :) и rtf не хочешь, да если еще клиенты будут смотреть отчеты в msword, то делай html с расширением .doc
word должен схавать...
 

dimagolov

Новичок
fast2111, он не просто должен, он хавает так, что аж за ушами трещит, полюзуюсь этим во всю.
 

asash

Новичок
fast2111, спасибо, работает... еще бы разобраться чтобы страница в word такая открывалась в ражиме "разметка страницы" режиме "обычный", хотя это уже мелочи:)
 

iSlayter

Новичок
dimagolov, поздравляю. откройте ЭТО в MS Office 2007. Вылезет сообщение о несекурности выполняемой операции (файл не соответствует заданному формату). Узерфрендли? Да ну, ниразу.

Самому поэтому и пришлось так-сяк трахаться с стр_реплейсом и куревом спецификации формата.
 

dimagolov

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

может подскажешь, как настроить ворд 2007 на такую параною, а то копаться в его настройках лень
 

fast2111

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

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

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

По идеи такая схема должна работать без всяких проблем, хотя кто знает этот MS, проверить возможности нет
 

dimagolov

Новичок
выложу все заголовки, которые которые отдаю формируя отчеты как 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-шные заголовки вроде как прописаны для правильного кеширования универсально. Прикол в том, что в ИЕ запретить кешировать совсем нельзя, потому что временный файл должен сохраняться, чтобы тот же ворд его мог с диска открыть.
 
Сверху