В очередной раз стала актуальной задача с подготовкой бланков. Однако, способ с бланком в формате 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 | Нет комментариев »
Имеем несколько элементов input типа radio (знакомые с формами Windows иногда кличут их radiobutton). Требуется получить значение value “выбранного” элемента.
<input type="radio" value="value" />
<input type="radio" value="value2" />
<script type="text/javascript" language="javascript">
input = document.getElementsByTagName('input');
for(i=0;i<(input).length;i++){
if(input[i].getAttribute('type')=='radio'&&input[i].checked){
alert(input[i].getAttribute('value'));
}
}
</script>
Без перебора элементов совсем не обойтись. Однако, можно сократить количество элементов для перебора в пределах формы:
<script language="JavaScript" type="text/javascript">
function showStatus(f) {
var s = "";
for (var i=0; i<f.elements["radiobutton"].length; i++) {
var btn = f.elements["radiobutton"][i];s += btn.value + ": " + btn.checked + "\n";
}
window.alert(s);
}
</script>
<form>
<input type="radio" name="radiobutton" value="First" />1
<input type="radio" name="radiobutton" value="Second" />2
<input type="radio" name="radiobutton" value="Third" />3
<input type="button" value="Show status" onclick="showStatus(this.form);" />
</form>
Опубликовано Июль 17, 2008 | автор: levik | Комментарий (1) »
Загрузка изображений при помощи javascript - часто используется для смены картинок, чтобы после загрузки основной части страницы не “расстраивать” пользователя временнОй задержкой, требующейся для загрузки картинки.
<script type="text/javascript" language="javascript">
//загрузка изображений (preload images)
var pictures = new Array('pic1.jpg','pic2.jpg','pic3.jpg');
for (i=1;i<pictures.length; i++) {
t = new Image();
t.src = pictures[i];
}
</script>
Опубликовано Июнь 13, 2008 | автор: levik | Нет комментариев »
Ссылки вида mailto: становятся объектом поиска компаний, занимающихся массовых рассылок. Естественно, ищут они не вручную, а при помощи программ или скриптов. Чаще всего алгоритм поиска прост - ищем подстроку вида mailto:__EMAIL__ и выделяем из неё часть после двоеточия.
Способы обхода: Читать целиком »
Опубликовано Октябрь 10, 2007 | автор: levik | Комментарии (3) »