Получение 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 не будет опубликован. Обязательные поля помечены *