powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP сохранить поток в doc
23 сообщений из 23, страница 1 из 1
PHP сохранить поток в doc
    #38413308
kattka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Помогите пожалуйста в решении такой задачи - средствами пхп надо сохранить поток данных в doc формате. Или другими словами - есть такой код, который выводит поток в пдф на страницу
Код: php
1.
<object data=\"http://xxxx/dll/transit.dll".$url_param."\" type=\"text/html\" width=\"100%\" height=\"100%\" id=\"report\" align=\"middle\">  </object>


в самой длл я могу экспортировать в разные форматы. как вывести такой поток в doc или rtf. Хотелось бы, чтоб появлялось окно типа открыть в ворде или сохранить на комп...
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38413318
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38413351
kattka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм... в целом подходит. только я уже начинаю тупить - а как прочитать так поток с указанного урла???
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38413359
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kattka,

Вы отдали заголовки с ценными указаниями браузеру, отдали контент, а что дальше с этим добром делать - тут браузеру виднее
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38413390
kattka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в том-то и дело, что контент не отдается
Код: php
1.
2.
3.
4.
5.
6.
<?php
header('Content-type: application/msword');
header('Content-Disposition: attachment; filename="downloaded.doc"');
fopen('URL с параметрами','w');

?>


и пустой документ. Хотя если открыть урл в браузере все ок
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38413405
kattka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
4.
5.
<?php
header('Content-type: application/msword');
header('Content-Disposition: attachment; filename="downloaded.doc"');
header("Location: url");
?>


вот так работает. только название файла не downloaded.doc, а название отработанной dll
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38413471
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, дллка сама не умеет отдавать заголовки?
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38413498
kattka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dll-ка умеет, я не умела =)) спасибо. вопрос закрыт. все работает.
Код: php
1.
Response.SetCustomHeader

в длл прописать и все ок =)
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38413551
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kattka,

Вот же ж, и PHP не понадобился )
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38414199
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я уже на форуме советовал кумута есть на PHP библиотечки специальные ExelPHP и WordPHP в данном случае последнее самое то.
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38414223
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Areostarесть на PHP библиотечки специальные ExelPHP и WordPHP в данном случае последнее самое то.Расскажите, как оно поможет в данной конкретной ситуации.
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38414877
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Areostarя уже на форуме советовал кумута есть на PHP библиотечки специальные ExelPHP и WordPHP в данном случае последнее самое то.
решил опробовать

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
<!DOCTYPE html>
<!--html5-->

<html>
 
<head>
 
<meta http-equiv="content-type" content="text/html; charset=utf-8">
 
<title>ПХП ВОРД</title>

</head>
 
<body>
 
<?php 
//создаём новый объект COM – word.application 
$word = new COM("word.application") or die("Cannot create Word object"); 
echo "1"
$word->Visible = false; 
echo "1"
$word->DisplayAlerts = false; 
echo "12"
// переменная $empty нужна для подстановки 
// неопределенных переменных в методы VBA 
$empty = new VARIANT(); 
echo "13"
// Открытие сущуствующей проформы 
$template_file = "C:/doc3.doc"; 
echo "14"
$word->Documents->Open($template_file); 
echo "15"
// Пишем в закладку 'test' 
// естественно в шаблоне такая закладка в нужном 
// месте должна быть подготовлена 
$current_date = date("m/d/Y"); 
echo "16"
$bookmarkname = "test";
echo "17" 
$objBookmark = $word->ActiveDocument->Bookmarks($bookmarkname); 
echo "18"
$range = $objBookmark->Range; 
echo "19"
$range->Text = $current_date; 
// Пишем в ячейку таблицы 
echo "10"
$objTable = $word->ActiveDocument->Tables(1); 
echo "11"
$objCell = $objTable->Cell(1,1); 
echo "112"
$range = $objCell->Range; 
echo "113"
$range->Text = "cell(1.1)"; 
// Рисуем линию ячейки 
echo "114"
$mySelect = $objCell->Select(); 
echo "115"
$myBorder = $word->Selection->Borders(-1); 
echo "116"
$myBorder->LineStyle = 1; 
// Оговорка - не используйте Borders(wdBorderTop) 
// Для распознавания Виндовых имен типа wdBorderTop 
// необходимо подгружать библиотеку 
//com_load_typelib('Word.Application'); 
// что в свою очередь инициирует на сервере еще один процесс MS Word 
// который потом закончить нельзя 
// числовые эквиваленты таких имен как wdBorderTop 
// легко найти в справке по VBA в самом Ворде 
// Добавляем строки к таблице 
echo "117"
$word->Selection->GoTo('2',$empty,'2',$empty); 
echo "118"
$word->Selection->InsertRowsBelow(1); 
// Самое интересное 
// Объединяем ячейки 
echo "119"
$myTable = $word->ActiveDocument->Tables(2); 
echo "120"
$rangeStart = $myTable->Cell(1,4); 
echo "121"
$myRangeStart = $rangeStart->Range->Start(); 
echo "122"
$rangeEnd = $myTable->Cell(2,4); 
echo "123"
$myRangeEnd = $rangeEnd->Range->End(); 
echo "124"
$myRange = $word->ActiveDocument->Range($myRangeStart,$myRangeEnd); 
echo "125"
$myRange->Cells->Merge(); 
// Сохраняем документ под новым именем 
echo "126"
$new_file = "C:/temp/new3.doc"; 
echo "127"
$word->Documents[1]->SaveAs($new_file); 
// Всё - уходим 
echo "128"
$word->Quit(); 
echo "129"
$word = null; 
echo "130"
unset($word); 
?> 
 
</body>
 
</html>


получил На веб-сайте произошла ошибка
как этот пример опробовать?
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38414880
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лог ошибок говорит syntax error, unexpected T_VARIABLE, expecting ',' or ';'
на строку $word->Visible = false;
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38414930
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,

Вам сюда
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38414967
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikkiMouse, спасибо
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
<!DOCTYPE html>
<!--html5-->

<html>
 
<head>
 
<meta http-equiv="content-type" content="text/html; charset=utf-8">
 
<title>ПХП ВОРД</title>

</head>
 
<body>
 
<?php 
//создаём новый объект COM – word.application 
$word = new COM("word.application") or die("Cannot create Word object"); 
echo "0";
$word->Visible = false; 
echo "1";
$word->DisplayAlerts = false; 
echo "2";
// переменная $empty нужна для подстановки 
// неопределенных переменных в методы VBA 
$empty = new VARIANT(); 
echo "3";
// Открытие сущуствующей проформы 
$template_file = "C:/doc3.doc"; 
echo "4";
$word->Documents->Open($template_file); 
echo "5";
// Пишем в закладку 'test' 
// естественно в шаблоне такая закладка в нужном 
// месте должна быть подготовлена 
$current_date = date("m/d/Y"); 
echo "6";
$bookmarkname = "test";
echo "7"; 
$objBookmark = $word->ActiveDocument->Bookmarks($bookmarkname); 
echo "8";
$range = $objBookmark->Range; 
echo "9";
$range->Text = $current_date; 
// Пишем в ячейку таблицы 
echo "10";
$objTable = $word->ActiveDocument->Tables(1); 
echo "11";
$objCell = $objTable->Cell(1,1); 
echo "12";
$range = $objCell->Range; 
echo "13";
$range->Text = "cell(1.1)"; 
// Рисуем линию ячейки 
echo "14";
$mySelect = $objCell->Select(); 
echo "15";
$myBorder = $word->Selection->Borders(-1); 
echo "16";
$myBorder->LineStyle = 1; 
// Оговорка - не используйте Borders(wdBorderTop) 
// Для распознавания Виндовых имен типа wdBorderTop 
// необходимо подгружать библиотеку 
//com_load_typelib('Word.Application'); 
// что в свою очередь инициирует на сервере еще один процесс MS Word 
// который потом закончить нельзя 
// числовые эквиваленты таких имен как wdBorderTop 
// легко найти в справке по VBA в самом Ворде 
// Добавляем строки к таблице 
echo "17";
$word->Selection->GoTo('2',$empty,'2',$empty); 
echo "18";
$word->Selection->InsertRowsBelow(1); 
// Самое интересное 
// Объединяем ячейки 
echo "19";
$myTable = $word->ActiveDocument->Tables(2); 
echo "20";
$rangeStart = $myTable->Cell(1,4); 
echo "21";
$myRangeStart = $rangeStart->Range->Start(); 
echo "22";
$rangeEnd = $myTable->Cell(2,4); 
echo "23";
$myRangeEnd = $rangeEnd->Range->End(); 
echo "24";
$myRange = $word->ActiveDocument->Range($myRangeStart,$myRangeEnd); 
echo "25";
$myRange->Cells->Merge(); 
// Сохраняем документ под новым именем 
echo "26";
$new_file = "C:/temp/new3.doc"; 
echo "27";
$word->Documents[1]->SaveAs($new_file); 
// Всё - уходим 
echo "28";
$word->Quit(); 
echo "29";
$word = null; 
echo "30";
unset($word); 
?> 
 
</body>
 
</html>



и теперь имеем ругань Class 'COM' not found in на строку
Код: php
1.
$word = new COM("word.application") or die("Cannot create Word object"); 


что теперь не так?
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38416218
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,

А теперь сюда . Вам что каждый раз тыкать пальцем? Все это гуглится за 2 минуты
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38418128
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понял, что надо запускать на хостинге под Виндувсом, нашёл такой загрузил туда код, получил на странице
Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `word.application': Invalid syntax ' in D:\vhosts⥥394.win.hc.ru\httpdocs\index.php:18 Stack trace: #0 D:\vhosts⥥394.win.hc.ru\httpdocs\index.php(18): com->com('word.applicatio...') #1 {main} thrown in D:\vhosts⥥394.win.hc.ru\httpdocs\index.php on line 18

Что сиё значит?
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38418129
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в принципе понял, щас свяжусь с тех поддержкой
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38418235
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофапонял, что надо запускать на хостинге под ВиндувсомНе только с Виндой, но еще и с установленным Вордом. Или, хотя бы, с его библиотеками объектов (вопрос легитимности библиотек без Ворда - отдельная тема).
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38419482
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,
кто нибудь знает такой хост? дайте пжл ссылку
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38419484
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,

localhost
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38422030
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, Вы про это: localhost (так называемый, «локальный хост», по смыслу — этот компьютер)?
так это ж только для меня, а я спрашиваю, чтобы всем кому нужно пахал, что это большая проблема для хост держателей установить Офис?
...
Рейтинг: 0 / 0
PHP сохранить поток в doc
    #38422104
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофаvkle, Вы про это: localhost (так называемый, «локальный хост», по смыслу — этот компьютер)?Да. Установить нужное ПО на домашний комп, поиграться и забыть.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP сохранить поток в doc
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]