И снова бланки - работа с word средствами javascript и php
В очередной раз стала актуальной задача с подготовкой бланков. Однако, способ с бланком в формате rtf не подходит - файл .doc весит ~2 Мб, файл же rtf ~ 34 Мб. Видимо, зависит от хранения рисунков…
Работать с COM-объектом Word можно непосредственно из PHP:
// Код PHP
$word=new COM("Word.application") or die("Couldn't start Word!");
//после создания объект невидимый
//сделаем его видимым и активизируем (разумеется, для работы на сервере это необязательно)
$word->visible =1;
$word->Activate();
//Создать документ по шаблону:
$word->Documents->Add("c:\\template.dot");
// действия - найти-заменить и т.д. Описаны в документации по VisualBasic for Application - в справке MS Word (по умолчанию не устанавливается)
$word->ActiveDocument->SaveAs("C:\\".$fname);
$word->Quit();
Однако, подобный способ подходит только для Windows-серверов.
Еще один вариант - работа с COM-объектом на стороне клиента через Active-X при помощи JavaScript:
><script language="javascript">
// Создание объекта MS Word:
word = new ActiveXObject ("Word.Application");
// Создание документа и установка параметров страницы:
with (word) {
Documents.Open('c:\\0.doc');
ActiveDocument.Label1.Caption = < ?=$sum?>;
ActiveDocument.SaveAs ('c:\\1.doc');
Quit (); // завершает работу MS Word
}
</script>
Предварительно следует сохранить документ-шаблон на диск C:\ с именем 0.doc.
В шаблоне - создать “Label”-ы и расположить их в соответствии с нужным расположением текста.
С учетом специфики задачи - получаем еще один небольшой выйгрыш - “основной” файл не качается с сервера.
Технология, думаю, понятна. Вариации - насколько фантазии хватит.
ps. Не забудьте поставить разрешения в свойствах обозревателя.
( Свойства обозревателя - безопасность - Выбираем “Надежные узлы”. После чего, нажимаем “Другой..” - и устанавливаем все переключатели, где упоминается ActiveX в “Разрешено”.)
А в Надежные узлы следует добавить “Наш” сайт - где формируются бланки.
2disembark…
…