В очередной раз стала актуальной задача с подготовкой бланков. Однако, способ с бланком в формате 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 в “Разрешено”.)
А в Надежные узлы следует добавить “Наш” сайт - где формируются бланки.
Опубликовано Март 18, 2009 | автор: levik | Нет комментариев »
Довольно часто для обеспечения удобства работы с интернет магазином требуется решить задачу оформления различных шаблонных документов - всевозможные бланки почтовых отправлений, квитанций на оплату, накладных… При этом, неплохо иметь возможность “на всякий случай” отредактировать получившийся документ.
Один из вариантов решения - подготовка шаблонов документов в формате RTF (в программе MS WORD). При подготовке шаблона туда, где должны располагаться подставляемые данные, например, сумма заказа, помещаем “оригинальную” последовательность символов, например, %SUM%.
Внимание! При подготовке шаблона аккуратнее со сменой языков. При работе в программе ворд следует выделить последовательность символов (%SUM%), выбрать пункт меню Сервис-Язык-Выбрать язык. Я выбирал Русский 
Шаблон сохраняем на сервер (например, с именем template.rtf в каталог со скриптом)
В скрипте, при работе с шаблоном, просто заменяем последовательность символов:$file = file_get_contents('template.rtf');
$file = str_replace("%SUM%", ' '.$sum, $file);
header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename=nakladnaya.rtf');
Где брать бланки документов? В интернете.. Все более-менее актуальные есть в “свободном” доступе. В крайнем случае, можно заплатить.
Опубликовано Апрель 12, 2008 | автор: levik | Нет комментариев »
В настоящее время написано много шаблонизаторов. Многие php-программисты, думаю, слышали о SMARTY, FastTemplate и иже с ними. У каждого из шаблонизаторов свои особенности, но все они созданы для решения задачи “разделения контента и дизйна“.
Сущность шаблонизатора: дизайн “размещается” в отдельных файлах. В тексте файлов-шаблонов встречаются оформленные по определенным правилам последовательности символов, вместо которых должны подставляться данные. Некоторые “продвинутые” шаблонизаторы позволяют использовать циклы, условные конструкции и вставки кода на PHP.
Возникает вопрос, “А зачем?”. И, думаю, не безосновательно. Ведь PHP позволяет делать всё это. Парадокс? Авторы шаблонизаторов пытаются при помощи интерпретатора PHP создать свой интерпретатор, и считают, что это необходимо, хорошо, ну или просто… неплохо. Проделана огромная работа, потрачены часы, дни, месяцы.. Неужели, всё это зря!?
Попытаемся оправдать применение шаблонизатора. Читать целиком »
Опубликовано Октябрь 26, 2007 | автор: levik | Комментарий (1) »