PHP: <?php $word = new COM("word.application"); $word->Visible = 0; $word->Documents->Add(); $word->Selection->PageSetup->LeftMargin = '2"'; $word->Selection->PageSetup->RightMargin = '2"'; //Setup the font $word->Selection->Font->Name = 'Verdana'; $word->Selection->Font->Size = 8; //Write some text $word->Selection->TypeText("This is a test document"); //Save the document as DOC file $word->Documents[1]->SaveAs("c:\\docs\\test1.doc"); //quit and release COM resources $word->quit(); $word->Release(); $word = null; ?> операция создаёт докумен в соотв. разделе жёсткого диска. Переменная в php попадает в сгенерированный файл .doc! Как ни пробовал - сохраняет собака только на жёсткий диск. А как сохранить на сервер - не понимаю. Кто-нибудь знакет как сделать это? Если кому надо узнать какие ф-ии используются для форматов - http://66.102.9.104/search?q=cache:...s+a+test+document");&hl=ru&ct=clnk&cd=1&gl=ru Пока только это сам изучаю. Если у кого есть какая инфа по этой теме, линкните в топик plz.
не понял. это что значит, что всё равно у меня неа жёстком диске он будет вначале? не. надо чтобы сразу на серваке сохранялся. это что нереально?
хотя логично представить что тут зависит уже не от php а от ворда. (или?) скажите, а с pdf такой фигни нет?
Mark32, вот ты попробуй из ворда документ сохранить сразу на удаленном фтп-сервере. как сможешь - пробуй его научить этому через com-соединение
лажа. да, никак не получиться. а pdf насколько я знаю можно генерить и сэйвить на серваке и всё by php
PHP: //Write some text $word->Selection->TypeText("This is a test document"); Открывается простой текст. А надо с форматированием разным. Насколько понимаю теги html не действуют здесь. Как бы реализовать в php вордовское форматирование? Подкиньте линк где можно почитать команды этого форматирования типа PHP: $word->Selection->PageSetup->LeftMargin = '2"'; $word->Selection->PageSetup->RightMargin = '2"'; $word->Selection->Font->Name = 'Verdana'; $word->Selection->Font->Size = 8; типа как сделать с новой строчки, абзаца, жирным, курсивом... без догадок.. Спасибо!
Документ Word - это архив, с описанием форматирования xml-ем, и файликом с данными, собственно. Поэтому теги html и не будут работать.
Во первых, архив, с описанием форматирования xml-ем, и файликом с данными, собственно - это docx Во вторых, HTML в doc работает. В третьих, очевидно, в описании Microsoft Office COM Automation. Найти что либо вменяемое почти без шансов. Можешь просто взять учебник по VBA
Mark32 млин.. что тебе мешает скопить средствами php файл по ftp и удалить его с локальной тачки после копирования (скриптом(!)) ?
да не. надо чтобы именно в php прописаны были все переменные, ибо переменные в doc не вставить... "Во вторых, HTML в doc работает. " Олег, можешь на примере показать что нужно прописать в php чтобы например вставился жирный текст а внизу него стояла картинка?
в php надо только послать заголовок PHP: <? header('Content-type: application/x-ms-word'); а потом выдать ему обычный HTML. That's all, folks!
???? Может не правильно тебя понял... PHP: header('Content-type: application/x-ms-word'); $word = new COM("word.application"); $word->Visible = 0; $word->Documents->Add(); $word->Selection->PageSetup->LeftMargin = '2"'; $word->Selection->PageSetup->RightMargin = '2"'; //Setup the font $word->Selection->Font->Name = 'Verdana'; $word->Selection->Font->Size = 8; //Write some text $word->Selection->TypeText("<b>Фоукс</b> привет"); //Save the document as DOC file $word->Documents[1]->SaveAs("c:\\test1.doc"); //quit and release COM resources $word->quit(); $word->Release(); $word = null; Итог - Cannot modify header information - headers already sent by А в документе текст вместе с тегами - Код (Text): <b>Фоукс</b> привет
PHP: <?php $str = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title></title> </head> <body style="margin-left: 2px; margin-right: 2px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt"> <b>Фокус</b> привет </body> </html>'; header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Cache-Control: public'); header('Content-Description: File Transfer'); header('Content-type: application/x-ms-word'); header('Content-Disposition: attachment; filename="myfile.doc"'); header('Content-Length: "'.strlen($str).'"'); echo $str; ?> http://phpfaq.ru/header
с указанием имени ресурса на который оно будет копироваться. По имени через wins либо по ИП, а не через вебсервер. Так же указывается место куда копируется (имя шары). Для того, чтобы скопировать средсвтами скрипта нужно иметь доступ к целевому компьютеру, а именно - заранее провести авторизацию с компьютера, с которого будет копирование. Естесственно на целевом компьютере нужно иметь учетку пользователя (естесственно она должна позволять записать файл в нужую папку). Скорее всего проще будет подмапить диском папку с целевого компьютера и держать сессию авторизации (ну я обычно опрашиваю наличие файла-флага на удаленном компе раз в минуту), тогда и прокатит такой финт с копированием "на диск" - G:\www\ ЗЫ надеюсь я не ошибусь - компьютер целевой и "создающий" с Windows? Если на той стороне линух - наверное было бы проще курлом отправить мультипарт, либо написать скрипт приема и отдать постом в base64, оба варианта решаемы как на уповне ПХП, так и пригладной тулзой.
Luge очень интересный вариант предложил. На сервер мне уже не обязательно - мараться... удалённая машина юникс, рабочая виндовоз.... не интересно... В скрипте что я приводил есть строка $word->Documents[1]->SaveAs("c:\\test1.doc"); А что никак нельзя сделать эту строку в скрипт Luge'а? Меня впролне устроило бы вызвать скрипт и он сохранит вордовский документ с добротным форматированием на локальный диск.
не нужна нам чужая слава господи, да мозгами подумай! Твой перый вариант — только для сервака на винде. И положит он файл не на твой диск C, а на диск C сервака (если бы он на виннде работал). Я тебе показал как отдать на скачку .doc. Ну, не посылай заголовки, а сохрани этот html как мой_файл.doc . Вот и всё.
справидливость востаржествавала! 8) Я вариант предложил, а ты — готовое решение. Вот и отдувайся дальше сам. %)