пятница, 27 января 2012 г.

PHP - создание и чтение doc (docx) файлов

Если взглянуть на внутренности doc файла, то становится ясно, что не все тут так просто, а если взглянуть docx, то совсем непросто. И это неслучайно, ведь doc - это проприетарный формат Microsoft. И без напильника казалось бы тут не обойтись, но все не так страшно, на помощь придет COM.

Для этого нам понадобится php и установленный Microsoft Word под Windows.
$word = new COM("word.application") or die ("Невозможно создать COM объект");
$word->visible = 1;
$word->Documents->Add();
$word->Selection->TypeText("Hello world!");
$word->Documents[1]->SaveAs(dirname(__FILE__)."/hw.doc");
$word->Quit();
 В результате имеем, doc файл с текстом "Hello world!"

Теперь попробуем открыть файл и сохранить в другом формате:
$word = new COM("word.application") or die ("Невозможно создать COM объект");
$word->visible = 1;
$word->Documents->Open( dirname(__FILE__)."/hw.doc" );
$word->Documents[1]->SaveAs(dirname(__FILE__)."/hw.txt", 2); //2 - формат txt
$word->Quit();
Как вы уже догадались, всю работы выполняет сам Word и как это ни печально, но данный способ будет работать только в Windows.
Работа с docx осуществляется аналогично.

Для выполнения более сложных действий (вставка картинок, таблиц), читайте документацию по COM для MS Word.