![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Dima 2015 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 16.3.2008 Где: SPb Репутация: 2 Всего: 2 |
Добрый день коллеги!
У меня была достаточно обширная задача, опишу ее для начала: Пользователь загружает набор файлов - текстовые документы (txt, doc, rtf, odt и т.п.) и картинки (jpg, gif, bmp и др.). Сервер должен это все дело сконвертировать в пдф-документы заданного формата и склеить в один большой пдф-ник. Способа сделать это на чистом РНР мы не нашли, посему нами было выбрано следующее решение: Мы написали макрос для OpenOffice с использованием OpenOffice Basic API. Он выполняет всю основную работу - конвертирует текстовые документы в ПДФ-ы, вставляет в них картинки. Склейку пдф-ов мы решили делать простенькой утилитой pdftk. И то и другое прекрасно работает из командной строки (покамись речь о Windows). Макрос Опен Офиса вызывается из ком. строки примерно так: C:\PathToOpenOffice\soffice.exe "macro\\\MyModule.converter.Convert(params...)" При запуске макроса все происходит у тебя на глазах - открывается документ, по-бырому конвертируется, сохраняется.. все окей. Все это дело великолепно работает из ком. строки, и мы наивно рассчитывали, что потом запихнем это в exec() и вуаля... Однако, не тут-то было. При запуске exec-а скрипт просто повисает и все. Опен Офис появляется в процессах, но никакой макрос не запускается и конвертер не работает (если процесс убить то пхп-скрипт "отпускает"). Изучая этот вопрос, я понял что это и логично, ибо Апач работает в винде от пользователя SYSTEM, а вовсе не от меня - юзера, который тестил макрос из ком. строки. Например exec('calc'); тот же результат выдает. Некое продвижение дает установка флага "Разрешить взаимодействие с рабочим столом" в службах у Апача, но макросы все равно не запустились... Достаточно близкую тему нашел я на этом форуме: http://forum.vingrad.ru/topic-128182.html Но так до конца и не смог решить проблему, кто что может посоветовать? В принципе я буду рад даже альтернативным предложениям как организовать пдф-конвертер на РНР, но хотелось бы добить вариант с макросами Опен Офиса, ибо на их написание была затрачена уйма сил и времени... Это сообщение отредактировал(а) Dima 2015 - 30.1.2009, 01:16 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
речь, как я понял, про windows? вот тут пришла в голову конструкция:
мож, заработает? попробуй, будь добр. |
|||
|
||||
| Dima 2015 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 16.3.2008 Где: SPb Репутация: 2 Всего: 2 |
skyboy, мысль понятная, но не выходит, он пароль запрашивает всегда.
Добавлено через 13 минут и 41 секунду Моя научиться запускать опен-Офис от процесса SYSTEM через exec из ПХП. Как и ожидалось, в нем не оказалось написанных мною макросов, я занес их туда в ручную. Но запустить их все равно не получается, команда, которую надо вызвать выглядит так: "C:\Program Files\OpenOffice.org 3\program\soffice.exe" "macro///Standard.Module.Main" Т.е. я пишу:
Может тут с кавычками беда, он пытается макрос как 2ю команду воспринять? Может в винде какое то экранирование надо сделать.. хотя блин это уже не по пхп вопрос... |
|||
|
||||
| Dima 2015 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 287 Регистрация: 16.3.2008 Где: SPb Репутация: 2 Всего: 2 |
Эврика!
Работает. Кавычек еще одних не хватало вокруг всей команды, чтоб она считалась единым целым... как интерпретатор не путается убей бог не пойму... Добавлено через 30 секунд П.С. Об интерпретаторе ком. строки речь разумеется... |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |