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

Помогите пожалуйста в решении такой задачи - средствами пхп надо сохранить поток данных в 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
01.10.2013, 16:27
    #38413318
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
...
Рейтинг: 0 / 0
01.10.2013, 16:45
    #38413351
kattka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
хм... в целом подходит. только я уже начинаю тупить - а как прочитать так поток с указанного урла???
...
Рейтинг: 0 / 0
01.10.2013, 16:51
    #38413359
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
kattka,

Вы отдали заголовки с ценными указаниями браузеру, отдали контент, а что дальше с этим добром делать - тут браузеру виднее
...
Рейтинг: 0 / 0
01.10.2013, 17:15
    #38413390
kattka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
в том-то и дело, что контент не отдается
Код: 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
01.10.2013, 17:27
    #38413405
kattka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
Код: 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
01.10.2013, 18:34
    #38413471
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
А что, дллка сама не умеет отдавать заголовки?
...
Рейтинг: 0 / 0
01.10.2013, 18:51
    #38413498
kattka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
dll-ка умеет, я не умела =)) спасибо. вопрос закрыт. все работает.
Код: php
1.
Response.SetCustomHeader

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

Вот же ж, и PHP не понадобился )
...
Рейтинг: 0 / 0
02.10.2013, 13:15
    #38414199
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
я уже на форуме советовал кумута есть на PHP библиотечки специальные ExelPHP и WordPHP в данном случае последнее самое то.
...
Рейтинг: 0 / 0
02.10.2013, 13:33
    #38414223
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
Areostarесть на PHP библиотечки специальные ExelPHP и WordPHP в данном случае последнее самое то.Расскажите, как оно поможет в данной конкретной ситуации.
...
Рейтинг: 0 / 0
02.10.2013, 21:38
    #38414877
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
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
02.10.2013, 21:43
    #38414880
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
лог ошибок говорит syntax error, unexpected T_VARIABLE, expecting ',' or ';'
на строку $word->Visible = false;
...
Рейтинг: 0 / 0
02.10.2013, 23:48
    #38414930
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
катастрофа,

Вам сюда
...
Рейтинг: 0 / 0
03.10.2013, 04:15
    #38414967
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
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
03.10.2013, 23:33
    #38416218
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
катастрофа,

А теперь сюда . Вам что каждый раз тыкать пальцем? Все это гуглится за 2 минуты
...
Рейтинг: 0 / 0
06.10.2013, 17:14
    #38418128
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
понял, что надо запускать на хостинге под Виндувсом, нашёл такой загрузил туда код, получил на странице
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
06.10.2013, 17:16
    #38418129
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
в принципе понял, щас свяжусь с тех поддержкой
...
Рейтинг: 0 / 0
06.10.2013, 20:26
    #38418235
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
катастрофапонял, что надо запускать на хостинге под ВиндувсомНе только с Виндой, но еще и с установленным Вордом. Или, хотя бы, с его библиотеками объектов (вопрос легитимности библиотек без Ворда - отдельная тема).
...
Рейтинг: 0 / 0
07.10.2013, 21:30
    #38419482
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
vkle,
кто нибудь знает такой хост? дайте пжл ссылку
...
Рейтинг: 0 / 0
07.10.2013, 21:33
    #38419484
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP сохранить поток в doc
катастрофа,

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


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