(PHP) чтение файла DOC на PHP

Николай_
Дата: 27.09.2006 15:50:21
Известно, что файлы формата DOC в формате UTF.
Как ни пробовал, мне не удается прочитать и вывести на экран содержимое файла. Вообще это возможно ?
Black
Дата: 27.09.2006 16:22:44
Николай_
что файлы формата DOC в формате UTF.

где Вы такую глупость прочитали?
Есть утилиты, которые позволяют конвертировать из формата doc в rtf
Николай_
Дата: 28.09.2006 17:35:07
NT Man
Дата: 10.06.2009 07:02:48
Не люблю вот так просто брать и копипастить чужие скрипты тем более когда не понимаю их логики.

<?php

function readOLEsection($item)
{
  global $doc;    
  echo $item->Name;
  echo '<br>';
  if ($item->Name=='WordDocument')
  {
    $s = $doc->getData($item->No,0,$doc->getDataLength($item->No));
    print_r(unpack('S1sign/S1ver/L1txt_start/L1txt_end/L1txt_size1/L1txt_size2',$s));
    echo '<br>';
  }
  $childrens = $item->children;
  foreach ($childrens as $child) readOLEsection($child);
}

include('ole.php');
$doc = new OLE();
$doc->read('___.doc');
readOLEsection($doc->root);
?>

вот написал свой код чтения Word (doc) файлов основываясь на познании что doc это OLE2 контейнер.

Как видно дошел до самого интересного момента, прочитал внутренний заголовок потока "WordDocument". А вот дальше не знаю, что с этим всем делать.
sign судя документации http://www.uinc.ru/articles/39 говорит, что и вправду имеем дело с WordDocument, но значения txt_start, txt_end, txt_size1 и txt_size2 показывают какую то ерунду. txt_start явно не смещение в потоке для текста. Прошу помочь дальше разобраться. В документацию на странице http://www.microsoft.com/interop/docs/OfficeBinaryFormats.mspx просьба не тыкать. Там для Word-а 210 страниц буржуйского текста. А учитывая, что надо читать вчитываясь в запутанный смысл, я это до конца жизни не прочту, вот если найдется переведенный на русский вариант этого чтива было бы супер.
*
Дата: 10.06.2009 12:44:18
Вы уж определитесь, или Вы не любите брать чужой код и вчитываетесь в документацию, или Вы берёте чужой код и забиваете на документацию.
NT Man
Дата: 10.06.2009 13:03:34
Guest, предпочитаю вчитываться в документацию, но только на своем родном языке.

А по поводу чтения документов Word, я всетаки победил!!!

<?php

function readOLEsection($item)
{
	 global $doc;    
//	echo $item->Name;
//	echo '<br>';
	if ($item->Name=='WordDocument')
	{
		$s = $doc->getData($item->No,0,80);
		$h = unpack('S1sign/S1ver/x20res1/L1txt_start/L1txt_end/x20res2/L1txt_size1/x20res3/L1txt_size2',$s);
		$s = $doc->getData($item->No,$h['txt_start'], $h['txt_size2']);
		$s = iconv ( 'UTF-16LE', 'UTF-8', $s);
		echo $s;
	}
	$childrens = $item->children;
	foreach ($childrens as $child)	readOLEsection($child);
}

include('OLE.php');
$doc = new OLE();
$doc->read('___.doc');
readOLEsection($doc->root);
?>

Не правда ли красиво получилось? ;)
Sidmal
Дата: 10.06.2009 14:11:29
NT Man

	 global $doc;    


Не правда ли красиво получилось? ;)


не правда =)
NT Man
Дата: 07.05.2011 20:28:01
Поаккуратнее с выражениями

http://pear.php.net/package/OLE/redirected
myjoin
Дата: 28.07.2011 09:29:56
Уважаемый NT Man. Подскажите пожалуйста, как сделать чтобы Ваш код, также читал кирилицу. А то она у меня совершенно не отображается.
Сервер
Дата: 26.02.2012 17:31:50
Не подскажите что хранится в файле OLE.php??? Спасибо!