gifts2017

Получение PDF на сервере под linux'ом и windows'ом

Опубликовал Трактор Трактор (Трактор) в раздел Администрирование - Системное

До сих пор мне не удавалось сконвертить табличный документ в PDF под linux'ом. В версии 8.2.13 появилась возможность использовать команду ЗапуститьПриложение на сервере 1С. Жить стало легче. Python OpenDocument Converter позволяет преобразовывать с помощью OpenOffice документы xls в разные форматы.
Данная обработка демонстрирует лишь одну возможность, но благодаря Python-UNO bridge можно, например, организовать web сервис для работы с xls документами.

Демонстрационная обработка по конвертации табличного документа в PDF

Краткий алгоритм работы:

Табличный документ созраняется во временный xls файл.
Опен офис открывает этот файл и сохраняет в виде PDF.
1С возвращает полученный PDF пользователю.

Конвертация выполняется на сервере 1С с помощью OpenOffice. Для конывертации табличного документа достаточно передать ТабличныйДокумент функции ПреобразоватьТабличныйДокументВPDF. Функция вернёт ссылку во временном хранилище, по которой можно получить PDF файл. Данная обработка работает на всех клиентах и серверах и под виндовсом и под линуксом.

Windows
При работе под виндовсом используется COM соединение с OpenOffice.
Если опен офис установлен и не работает, значит он открывает мастер регистрации и ждёт что пользователь понажимает кнопки. Для того чтобы победить это нужно 1С запускать с системной учётной записью,  в свойствах процесса поставить галку "Разрешить взаимодействие с рабочим столом", один раз исполнить этот код и прощёлкать диалог опена офиса. Кривое решение, но как решить прямо не знаю.

 

Linux
При работе под линуксом используется Python OpenDocument Converter. При этом на сервере дожен быть установлен Опен офис и Питон. Опен офис работает в качестве сервера, слушает порт 8100.

Назначение файлов
start_soffice_server.sh - скрипт запуска OpenOffice в режиме сервера
DocumentConverter.py - собственно преобразователь (конвертор), который передаёт Опену офису имена входного и выходного файлов
convetr2pdf.sh - скрипт запуска преобразователя (конвертора).

Для настройки под линуксом необходимо
1. В скрипте start_soffice_server.sh прописать путь к папке установки Опена офиса.
2. Скрипт start_soffice_server.sh поставить в автозагрузку ОС для того чтобы сервер Опена офиса запускался сразу.
3. В скрипте convetr2pdf.sh прописать путь к опену офису, питону и скрипту DocumentConverter.py
4. В модуле обработки поправить путь к скрипту convetr2pdf.sh. По умолчанию путь /home/usr1cv82/converter2pdf

Политолог Сергей Кургинян – о варианте интеграции.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
converter2pdf.rar
.rar 32,64Kb
28.10.11
18
.rar 32,64Kb 18 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Рытов (Арчибальд) 28.10.11 17:04
Ощутил прелести премодерации?
Ссылка хороша...
2. Трактор Трактор (Трактор) 28.10.11 23:27
(1) Ощутил :-)
Я так понимаю что это Alraune быстро отработала. Буквально в 15 минут. Однако на это публикацию я ушатал почти весь день. При том что все скрипты рабочие и отлажены.
4. Олег Шалимов (CaSH_2004) 29.10.11 13:33
Сам не пользуюсь Линуксом, но ведь ОпенОфис на нем работает. Уточните, получается при этом не работает конфертация в PDF?
5. Трактор Трактор (Трактор) 29.10.11 14:40
(4) CaSH_2004, опен офис работает, только вызвать его из 1С до недавнего времени было непросто. Нужна была внешняя компонента. Эта публикация показывает как без внешних компонент обратиться к опену офису.

В принципе можно обойтись без Питона. Написать скрипт на языке опена офиса и вызывать его из 1С. Но Питон даёт гораздо больше возможностей. Он позволяет использовать другим приложениям сервер опена офиса. Можешь сказать серверу "открой этот файл", "дай содержимое этой ячейки", "сюда впиши то-то", "сохрани в другом формате".

Меня расстраивала ограниченность вебклиента. Разобрать экселёвый файл на нём невозможно. На сервере под линуксом тоже ничего не получалось сделать. Puno brige даёт возможность импортировать экселёвские файлы.
Хорошая тема новой разработки "Универасльный разбор экселёвых файлов на виндовом и линуксовом сервере". Может быть выполнена как обработка с набором методов, не зависящих от ОС и офисного пакета и позволяющих читать и писАть экселёвые и опен офисные файлы.
6. Игорь Исхаков (Ish_2) 29.10.11 15:11
Я в PDF и прочих линуксах ничего не понимаю.
Кургиняна по ссылке не читал. Но осуждаю.
И тебя : ссылка здесь ни к селу , ни к городу.
И Кургиняна : популярен и неглубок.
7. Максим Полянский (yandextesting) 13.12.11 00:14
http://downloads.v8.1c.ru/content/Platform/8_2_15_273/V8Update.htm

...
Версия 8.2.15
...
Новые возможности и изменения
...
Реализована возможность сохранения табличного документа в файл формата PDF.
...
Изменения, влияющие на поведение системы

...
Реализована возможность выполнять печать табличных документов в веб-клиенте с помощью документов формата PDF. Реализована настройка "Способ печати" в диалоге настройки параметров веб-клиента.

Кстати, там еще и толстого клиента в файловом режиме работы в Linux добавили.
8. Максим Полянский (yandextesting) 13.12.11 00:19
там еще и толстого клиента в файловом режиме работы в Linux добавили
9. Алексей (Alav) 13.12.11 04:25
(7) Что-то дистрибутив не наблюдаю
10. Трактор Трактор (Трактор) 13.12.11 10:05
(7)
yandextesting пишет:
Версия 8.2.15
Кстати, там еще и толстого клиента в файловом режиме работы в Linux добавили.

И это радует :-)

Python-UNO bridge может быть полезен не только для получения PDF, а, ещё, например, для разбора МСофисных или Опен офисных документов.

(9) Версия 8.2.15 ознакомительная, вышла 9 декабря. http://users.v8.1c.ru/version.jsp?id=Platform82&ver=8.2.15.273
11. Алексей (Alav) 13.12.11 10:23
(10) Это я в курсе, речь именно

yandextesting пишет:
Кстати, там еще и толстого клиента в файловом режиме работы в Linux добавили


А вот дистрибутив толстого клиента где лежит?
12. Трактор Трактор (Трактор) 13.12.11 10:27
(11) в 8 написано что "лишнее, удалить бы"
13. Алексей (АлексейН) 21.12.11 09:04
yandextesting пишет:
Версия 8.2.15
...
Новые возможности и изменения
...
Реализована возможность сохранения табличного документа в файл формата PDF.

А это очень интересно, не надо лишних заморочек, будем ждать официального релиза.
34. Трактор Трактор (Трактор) 13.01.12 23:11
(1) (3) А вот теперь ощутил по полной. Halaha спамит меня, а я отписаться не могу. Раньше мог.
35. Ирина Пятакова (Alraune) 13.01.12 23:24
(34) Это другое. Комментарии закрыты были сразу, вместе с их автором, поэтому по ним не ответить ничего. Могу открыть, но оно Вам надо?
36. Трактор Трактор (Трактор) 13.01.12 23:26
(35) Благодарю за оперативность.
37. Евгений Коротков (cyberozz) 24.07.13 15:48
На самом деле связка openoffice и python достаточно кривоватая и требует каких-то открытых портов и запущенных инстансов. Гораздо проще использовать ssconvert из пакета gnumeric.
38. viptextil.ru (viptextil) 11.03.16 11:20
Статья давняя, понимаю. Почему для конвертации документа под Linux нельзя использовать печать документа на CUPS-PDF принтер?
39. Трактор Трактор (Трактор) 14.03.16 10:31
(38) можно, наверное, но интересовали не только возможности получения pdf, а и заделы для обработки табличных документов под линуксом. Развивать эту разработку в данном направлении не стал.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа