Получение 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

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

18 Comments

  1. Арчибальд

    Ощутил прелести премодерации?

    Ссылка хороша…

    Reply ↓
  2. Трактор

    (1) Ощутил 🙂

    Я так понимаю что это Alraune быстро отработала. Буквально в 15 минут. Однако на это публикацию я ушатал почти весь день. При том что все скрипты рабочие и отлажены.

    Reply ↓
  3. CaSH_2004

    Сам не пользуюсь Линуксом, но ведь ОпенОфис на нем работает. Уточните, получается при этом не работает конфертация в PDF?

    Reply ↓
  4. Трактор

    (4) CaSH_2004, опен офис работает, только вызвать его из 1С до недавнего времени было непросто. Нужна была внешняя компонента. Эта публикация показывает как без внешних компонент обратиться к опену офису.

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

    Меня расстраивала ограниченность вебклиента. Разобрать экселёвый файл на нём невозможно. На сервере под линуксом тоже ничего не получалось сделать. Puno brige даёт возможность импортировать экселёвские файлы.

    Хорошая тема новой разработки «Универасльный разбор экселёвых файлов на виндовом и линуксовом сервере«. Может быть выполнена как обработка с набором методов, не зависящих от ОС и офисного пакета и позволяющих читать и писАть экселёвые и опен офисные файлы.

    Reply ↓
  5. Ish_2

    Я в PDF и прочих линуксах ничего не понимаю.

    Кургиняна по ссылке не читал. Но осуждаю.

    И тебя : ссылка здесь ни к селу , ни к городу.

    И Кургиняна : популярен и неглубок.

    Reply ↓
  6. yandextesting

    http://downloads.v8.1c.ru/content/Platform/8_2_15_273/V8Update.htm

    …

    Версия 8.2.15

    …

    Новые возможности и изменения

    …

    Реализована возможность сохранения табличного документа в файл формата PDF.

    …

    Изменения, влияющие на поведение системы


    …

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

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

    Reply ↓
  7. yandextesting

    там еще и толстого клиента в файловом режиме работы в Linux добавили

    Reply ↓
  8. Alav

    (7) Что-то дистрибутив не наблюдаю

    Reply ↓
  9. Трактор

    (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

    Reply ↓
  10. Alav

    (10) Это я в курсе, речь именно

    yandextesting пишет:

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

    А вот дистрибутив толстого клиента где лежит?

    Reply ↓
  11. Трактор

    (11) в 8 написано что «лишнее, удалить бы»

    Reply ↓
  12. АлексейН
    yandextesting пишет:

    Версия 8.2.15

    …

    Новые возможности и изменения

    …

    Реализована возможность сохранения табличного документа в файл формата PDF.

    А это очень интересно, не надо лишних заморочек, будем ждать официального релиза.

    Reply ↓
  13. Трактор

    (1) (3) А вот теперь ощутил по полной. Halaha спамит меня, а я отписаться не могу. Раньше мог.

    Reply ↓
  14. Alraune

    (34) Это другое. Комментарии закрыты были сразу, вместе с их автором, поэтому по ним не ответить ничего. Могу открыть, но оно Вам надо?

    Reply ↓
  15. Трактор

    (35) Благодарю за оперативность.

    Reply ↓
  16. cyberozz

    На самом деле связка openoffice и python достаточно кривоватая и требует каких-то открытых портов и запущенных инстансов. Гораздо проще использовать ssconvert из пакета gnumeric.

    Reply ↓
  17. viptextil

    Статья давняя, понимаю. Почему для конвертации документа под Linux нельзя использовать печать документа на CUPS-PDF принтер?

    Reply ↓
  18. Трактор

    (38) можно, наверное, но интересовали не только возможности получения pdf, а и заделы для обработки табличных документов под линуксом. Развивать эту разработку в данном направлении не стал.

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *