Войти

Показать полную графическую версию : [решено] Снять защиту с doc файла средствами php


Hector
17-05-2012, 13:58
Есть файл (см. вложение) он лежит на сервере и содержит замены в расписании. Я пытаюсь представить его в виде html этим способом (http://coding-stories.net/%D0%B8%D0%B7-doc-%D0%B2-html-%D0%BD%D0%B0-php-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D1%8F-api-google-docs/)

Проблема в том, что файл открывается в режиме защищенного просмотра, а google отказывается работать с такими файлами.
Если открыть файл и Ctrl+A, Ctrl+C, Ctrl+V то полученный новый файл обрабатывается нормально

Вопрос: как средствами php привести файл к божескому виду (чтобы он нормально обрабатывался google)?

ferget
17-05-2012, 15:09
то как открывается файл зависит от настроек ОС, смените настройки

Hector
17-05-2012, 15:18
ferget, на сервере под linux открывается нормально, но скрипт с ним все равно не срабатывает, а все работает если банально создать новый файл скопировав содержимое.

сам файл создается какой-то самописной программой, для генерации расписания

Hector
17-05-2012, 18:50
проблема решилось таким скриптом

<?php

header ('Content-type: text/html; charset=utf-8');

/**
* Чтение из не совсем русского файлика DOC
*
*/

// Отрубаем нах сообщения по ошибкам
error_reporting(0);

// Рабочий файлец
$file_name = 'changes.doc';

// Проверяем наличие
if (file_exists($file_name)) {

// Пробуем открыть
$handle = @fopen($file_name, 'r');

// Если открылось
if ($handle) {

// Ключ вывода активной строки
$key = FALSE;

// Читаем построчно
while (($buffer = fgets($handle, 1024)) !== false) {

// Найден конец вывода
if (stripos($buffer, chr(0)) !== false) {
if ($key) $key = FALSE;
}

// Найдено начало текста - ПОД ЧЕРТОЙ
if (stripos($buffer, 'ПОД ЧЕРТОЙ') !== false) {
$key = TRUE;
$buffer = substr($buffer, strrpos($buffer, 'ПОД ЧЕРТОЙ'));
}

// Найдено начало текста - НАД ЧЕРТОЙ
if (stripos($buffer, 'НАД ЧЕРТОЙ') !== false) {
$key = TRUE;
$buffer = substr($buffer, strrpos($buffer, 'НАД ЧЕРТОЙ'));
}

// Вывод активной строки
if ($key) {

// Имитация таблицы
$buffer = str_replace(chr(13).chr(13), '<table><tr><td>', $buffer);
$buffer = str_replace(chr(07).chr(07), '</td></tr><tr><td>', $buffer);
$buffer = str_replace(chr(07), '</td><td>', $buffer);

// Вырезаем левые символы
$buffer = str_replace(chr(32), ' ', $buffer); // пробел
$buffer = str_replace(chr(07), '', $buffer); // звонок
$buffer = str_replace(chr(09), ' ', $buffer); // табуляция
$buffer = str_replace(chr(13), '<br />', $buffer); // перевод строки

$buffer = iconv("windows-1251", "UTF-8", $buffer);

echo $buffer . '<br />';

}

}

// Закрываем
fclose($handle);

}

} else exit('WTF?');

Sham
18-05-2012, 04:59
По ссылке работает только с simplexml-форматом, а приаттаченый файл вроде бинарный, и указанный скрипт парсит бинарный doc.
емнип simplexml - это "сохранить как - XML-документ" с нужным расширением.




© OSzone.net 2001-2012