Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конвертер в PDF с использованием макросов OpenOffi, запуск приложения в консоли от SYSTEM 
:(
    Опции темы
Dima 2015
Дата 30.1.2009, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL ICQ   Вверх
skyboy
Дата 30.1.2009, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



речь, как я понял, про windows? вот тут пришла в голову конструкция: 
Код

echo user-pass | runas /u:user-name "command-line"

мож, заработает? попробуй, будь добр.
PM MAIL   Вверх
Dima 2015
Дата 30.1.2009, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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"

Т.е. я пишу:
Код

exec('"C:\Program Files\OpenOffice.org 3\program\soffice.exe" "macro///Standard.Module.Main"');


Может тут с кавычками беда, он пытается макрос как 2ю команду воспринять? Может в винде какое то экранирование надо сделать.. хотя блин это уже не по пхп вопрос...
PM MAIL ICQ   Вверх
Dima 2015
Дата 30.1.2009, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 16.3.2008
Где: SPb

Репутация: 2
Всего: 2



Эврика!

Код

exec('""C:\Program Files\OpenOffice.org 3\program\soffice.exe" "macro:///Standard.Module1.Main""');



Работает. Кавычек еще одних не хватало вокруг всей команды, чтоб она считалась единым целым... как интерпретатор не путается убей бог не пойму...

Добавлено через 30 секунд
П.С. Об интерпретаторе ком. строки речь разумеется...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.