среда, 22 марта 2017 г.

Пакетный экспорт документов в формат PDF, используя LibreOffice

Все действия выполнялись в ОС Windows. Наверняка для Linux есть какой-нибудь хороший способ, но мне на работе никто конфигурировать под корпоративные стандарты Linux не будет, поэтому в этой статье всё про Windows. 
Потребовалось мне по работе проводить экспорт кучи файлов в формате XSLX в формат PDF. Реально по 25 - 30 файлов за присест. И делать это надо было крайне в сжатые сроки. Пробовать всякие программулины было некогда и пришлось делать это вручную из MS Excel, благо 2010 версия это умеет. Хорошего в таком положении вещей мало, в будущем предвидится точно такие же авралы и я задумался, а какие вообще существуют способы.
Нашел я софт, который включал в себя LibreOffice, и вроде бы пакетный экспорт в PDF умел, однако он в бесплатной редакции ставит огромный рекламный блок себя на КАЖДОМ листе документа. Это не наш вариант.
Есть еще несколько подобных софтин, уже без всякого участия LibreOffice, однако либо они некорректно сам экспорт делали, то есть итоговый файл был кривой, либо пакетный экспорт был декларирован, но не работал.
Наверное можно (и нужно в будущем так и сделать) спросить у знающих Эксель товарищей, может быть есть возможность настроить пакетный экспорт, юзая сам MS Excel.
Ну, а я попросил помощи на нашем форуме http://forumooo.ru и Миша Каганский подсказал мне строку кода для консоли, которая вызывая LibreOffice в скрытом режиме выполняет искомый пакетный экспорт. Ну и в дальнейшем эта строка была оформлена в bat-файл и сам файл был переписан Мишей для того, чтобы можно было задать путь до исходных файлов и их тип, а также была прописана проверка наличия установленного в системе LibreOffice.
Вот собственно код:
@echo off

rem -------------------------------------------
rem in this file uses codepage cp866
rem -------------------------------------------
rem в этом файле используется кодировка cp866
rem -------------------------------------------

set /p "fileMask=Введите путь и маску для экспорта: "

rem ключ реестра для извлечения пути установки
rem HKEY_LOCAL_MACHINE\SOFTWARE\LibreOffice\UNO\InstallPath

setlocal ENABLEEXTENSIONS

call :QueryRegistry "HKEY_LOCAL_MACHINE\SOFTWARE\LibreOffice\UNO\InstallPath" ""

if not defined Value (
    call :QueryRegistry "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\LibreOffice\UNO\InstallPath" ""
)

echo Идет экспорт файлов в PDF, ждите
for %%f in ("%fileMask%") do start "dummyTitle" /wait "%Value%\soffice.exe" --convert-to pdf --outdir "." "%%f"
chcp 866 > nul
msg * Экспорт завершен

exit /B %ERRORLEVEL%

:: A function for querying registry value; return is in %Value%
:QueryRegistry
:: chcp 1252 makes REG QUERY to print its output in English. This makes the string look like:
::     (Default)    REG_SZ    C:\Program Files\LibreOffice 5\program
:: Without this, the string may (e.g. for Russian locale) look like:
::     (По умолчанию)    REG_SZ    C:\Program Files\LibreOffice 5\program
:: Notice the space in the (По умолчанию). This space makes additional token, and thus
:: the batch becomes non-portable.
set Value=
chcp 1252 > nul
for /F "usebackq tokens=2,*" %%A in (`REG QUERY %1 /v %2 2^>nul`) do (
    set Value=%%B
)
Вставьте его в текстовый файл, сохраните с расширением bat. Обратите внимание, что сохранить его необходимо в кодировке Cp866, иначе надписи на русском языке превратятся в крякозябры.
И ещё: файлы в формате PDF будут сохранены в то место, откуда был запущен bat-файл. Это настраивается в тексте "программы".
В конце экспорта будет показано отдельное окошко с текстом "Экспорт завершен" и кнопкой ОК. Я это сделал, чтобы видно было, что работа завершена.
Сам экспорт достаточно быстрый, однако очень сильно зависит от количества и размера файлов.
Также преимущество LibreOffice перед MS Office в данном случае в том, что LibreOffice намного всеяднее в плане поддержки кучи различных форматов файлов, а недостаток тот, что LibreOffice не совсем точно открывает файлы вражеского формата, особенно это видно, если страниц в документе много. Я увидел разницу 50 vs. 65 страниц - это бывает просто неприемлемо =(

суббота, 18 марта 2017 г.

LibreOffice 5.4. Развитие Риббона

В вики проекта увидел интересную штуку:
1. В реализацию ленточного интерфейса в LibreOffice добавили возможность добавлять свои значки на отдельную микропанельку, вот так это выглядит:
2. Добавлена поддержка тем оформления для риббона:
Заметьте, что это новшества для разных вариаций ленточного интерфейса в LibreOffice. Первая - это пародия на риббон из MS Office, причем достаточно явная, вторая - это видение разработчиков LibreOffice под названием Muffin. Темы доступны именно для Маффина и не работают для пародии на риббон.
Ещё хочу сказать, что первое впечатления от этой пары скриншотов - ещё ближе к внешнему виду MSO 2007 и более поздних. И как бы маркетологи TDF не отбрехивались, говоря, что у Либры свой путь, мое ИМХО такое: то, что делается в реализации нового видения ГУИ в Либре - это тупейшее копирование лент из стана MS Office. Я видео несколько довольно проработанных мокапов интерфейса Либры и с упрощением панелей инструментов и с развитием Боковой панели, которые реально изменили бы внешний вид Либры и повысили удобство работы, однако разработчики думают иначе.

четверг, 16 марта 2017 г.

Выпуск LibreOffice 5.3.1

Организация The Document Foundation представила первый корректирующий выпуск офисного пакета LibreOffice 5.3.1. Сборки подготовлены для различных дистрибутивов GNU/Linux, Windows и macOS.
Выпуск содержит только исправления ошибок и правки локализаций. Всем, кто использует LibreOffice версии 5.3 рекомендуется обновиться.
Списки исправлений:
https://wiki.documentfoundation.org/Releases/5.3.1/RC1
https://wiki.documentfoundation.org/Releases/5.3.1/RC2
Скачать дистрибутив для всех платформ можно вот тут: http://www.libreoffice.org/download/download/

среда, 15 марта 2017 г.

LibreOffice 5.4. Сводные диаграммы

Один из разработчиков LibreOffice, Tomaž Vajngerl, опубликовал в своем блоге пост о своей работе над созданием сводных диаграмм, которые визуализируют данные сводных таблиц. Причём при изменении данных в сводной таблице диаграмма автоматически обновляется. По ссылке https://www.youtube.com/watch?v=xRulORXWhP8 можно посмотреть, как это выглядит уже сейчас. На мой взгляд вполне завершённо и красиво. Обещано включение этой фичи в релиз LibreOffice 5.4.

четверг, 2 марта 2017 г.

Странности с рендерингом изображений в текстовых документах LibreOffice

В последнее время обратил внимание, что втсавленные в текстовый документ картинки как-то странно выглядят, как будто им специально ухудшили качество. (Все картинки из статьи нужно смотреть щелкая по ним, чтобы было видно, о чем я говорю).
Вот пример:
Обратите внимание на текст внутри скриншота, вставленного в текст. Нет сглаживания и сам шрифт как будто пообкусывали.
Та же самая картинка, но уже после экспорта в пдф:
Разница есть, согласитесь. И еще это говорит о том, что это не картинка сама плохого качества, а что отображается она во Writer в плохом качестве. Зачем - это вопрос.
Вот увеличенная картинка:
Сразу оговорюсь, может эти многочисленные скриншоты со скриншотов и не передают всю глубину проблемы...
Вчера я внезапно обнаружил, что у меня включен OpenGL в портативной версии LibreOffice, в которой я работаю, и я его отключил. Картинки стали гладкие и прекрасные! На виндовс. Я порадовался, так как к багам со стороны OpenGL отношусь, как к неизбежному злу. Хорошего в них ничего нет, однако и сделать я ничего не могу (и разработчики тоже судя по всему, хотя и стараются изо всех сил).
И вишенка, тот же документ в ОС Linux в LibreOffice БЕЗ OpenGL:
OpenGL отключен, а проблема осталась =(
При этом мне намного больше нравится работать с документом в LibreOffice под Linux, как-то там все выглядит аккуратнее, и интерфейс и сам документ рендерятся корректно и красиво все.

PS: морали никакой не будет, если я соберусь с силами, то напишу багу в багзиллу, пусть даже это будет дубликатом.
PPS: Mike, если будешь писать комментарии, то пожалуйста озвучь причину такого поведения LibreOffice ;)

воскресенье, 12 февраля 2017 г.

Использование разделов в текстовом документе LibreOffice Writer

Что такое раздел в LibreOffice Writer? Это именованный текстовый блок,который позволяет защитить текст или часть текста от изменения, скрывать и показывать части текста, вставлять текст в несколько колонок внутри текста в одну колонку, использовать текст или объекты из других документов LibreOffice.
Два основных диалога, которые нужны для работы с разделами - это диалог Вставить раздел из меню Вставка - Раздел:
и диалог Редактирование разделов из меню Формат - Разделы:
Диалоги визуально немного похожи, однако первый служит для настройки вставляемого раздела, а второй для работы с уже существующими разделами.
Визуально в тексте документа раздел обрамлен серой непечатаемой рамкой:
При вставке раздела перед ни вставляется символ перевода строки, то есть раздел вставляется, как новый абзац. Не получится вставить раздел по середине слова или строки. 
Примечание: Учтите при этом, что если раздел скрыть, а знак перевода строки, который был создан при вставке раздела удалить, то раздел также будет удален.
Текст или объект внутри раздела можно форматировать точно так же, как основной текст или иные объекты документа, используя стили или ручное форматирование.
У меня была мысль применить эти разделы при работе с документами типа "договор", однако высянилась особенность, даже если раздел вставить в нумерованный список и задать тексту внутри него корректную нумерацию, то при скрытии раздела, нумерация не пересчитывается, а весь смысл работы с разделами в таком случае теряется.

четверг, 2 февраля 2017 г.

Внутренние изменения в LibreOffice 5.3

Michael Meeks опубликовал в своем блоге интересный пост по поводу изменений в LibreOffice 5.3, не видных простому пользователю, но важных для развития проекта. Это так называемые изменения "под капотом" LibreOffice. Итак:
Переведена очередная порция комментариев в коде с немецкого на английский. Немецкие комментарии в коде проекта есть со времен его основания, поскольку писать его начинали именно немцы. Однако огромное количество людей знает английский и только некоторые кодеры умеют в немецкий, поэтому перевод комментариев в коде на английский - это крайне важная задача. С выпуском LibreOffice 5.3 осталось всего-то 3700 комментариев на немецком языке из более, чем 50000.
Полгода назад, в LibreOffice 5.2, был добавлен автоматический сбор отчетов о крэшах программы с отправкой их на сервер разработчиков проекта. Это позволило выявить и оперативно исправить несколько критичных ошибок в версии 5.3. Еще одним следствием работы этого механизма стало обнаружение проблемы с ограничением Windows на 10000 GDI-объектов на один процесс, что приводит к самым неожиданным ошибкам LibreOffice в самых разных местах. К выходу версии 5.3.1 обещают эту проблему исправить (или обойти как-то).
Было написано около 300 новых юнит-тестов.
Был написан фреймворк для тестирования интерфейса пользователя, к нему есть документация, призванная помочь добавлять новые тесты.
Произведены множественные изменения в LibreOfficeKit API и в коде, отвечающем за работу он-лайн части LibreOffice.
Добавлен код для отслеживания проблем с использованием OpenGL и OpenCL в реальном времени.
Добавлен механизм для автоматического снятия скриншотов со всех диалогов LibreOffice, также его можно использовать в ручном режиме. Механизм этот помимо создания скриншотов также позволяет обновлять файл Справки в автоматическом режиме, вставляя туда вновь созданные скриншоты. Сделано это для облегчения труда команды документации, поскольку LibreOffice достаточно часто обновляется, а документация и Справка как всегда отстают по версиям от проекта.
Старый API для многопоточной работы osl::Condition был заменен на новый std::condition_variable, который позволяет писать более безопасный код. Также это позволило решить проблему с распаковкой некоторых файлов XLSX.
Проведена большая работа по улучшению поддержки gtk+3/Wayland в LibreOffice.
Идёт работа по улучшению внутреннего механизма работы со столбцами в Calc. Раньше на каждый лист выделялся сразу фиксированный набор столбцов (структура значительного размера), в которой сразу были заготовки на все возможные столбцы. Это, например, не позволяет увеличить число столбцов. Теперь используется динамическая структура, в которой по мере надобности добавляются данные для новых нужных столбцов. Это первый необходимый шаг для большего числа столбцов, который также даёт оптимизацию в использовании памяти.
Обновлено большое количество встраиваемых в LibreOffice библиотек.
Исправлено более 80 ошибок, связанных с форматами DOC, DOCX и прочими.
Проведена чистка кода LibreOffice для Android.

среда, 1 февраля 2017 г.

Выпуск LibreOffice 5.3

Организация The Document Foundation представила новый значительный выпуск офисного пакета LibreOffice 5.3. Сборки подготовлены для различных дистрибутивов GNU/Linux, Windows и macOS.
Релиз содержит множество новшеств, но пока окончательно не стабилизирован, поэтому позиционируется как ознакомительный и пригодный для использования продвинутыми пользователями, а также энтузиастами. О готовности к промышленному использованию будет объявлено дополнительно при выходе одного из корректирующих релизов (5.3.4 или 5.3.5).
Примечания к выпуску можно почитать вот здесь: https://wiki.documentfoundation.org/ReleaseNotes/5.3/ru
Скачать дистрибутив для всех платформ можно вот тут: http://www.libreoffice.org/download/download/

пятница, 27 января 2017 г.

Выпуск LibreOffice 5.2.5

Разработчики объявили о выпуске LibreOffice 5.2.5. В данном выпуске были исправлены внезапно проявившиеся в версии 5.2.4 ошибки с принтерами и шрифтами, из-за которых был всплеск отчетов о критических ошибках, о которых я как-то писал.
Скачать версию 5.2.5 можно как всегда отсюда: http://www.libreoffice.org/download/libreoffice-fresh/
Перечень исправленных ошибок:

вторник, 24 января 2017 г.

Разработчики LibreOffice опять чудят

В LibreOffice 5.3 реализовали стили таблиц Writer и сделали в Боковой панели отдельный раздел для быстрого и удобного управления ими. Однако, при попытке изменить стиль, используя контекстное меню в Боковой панели, LibreOffice падает намертво, унося в преисподнюю все открытые документы. В багзилле есть соответствующий баг на эту тему, однако разработчики видимо хотели или заглушку вставить, или еще что-то сделать, поскольку функция создания и редактирования стиля таблиц Writer пока просто не реализована. Что же я увидел сегодня в багзилле на эту тему? А там появилось предложение вообще этот раздел Боковой панели убрать с глаз долой. То есть, вместо небольшого напильника в виде подсказки, что эта функция пока не работает, они берут скальпель и режут полностью функционал. 
Я уже писал на тему того, что одни разработчики пилят фичу, а другие через минимальное количество времени её режут по живому. Сила опенсорца во всей красе =( И это реально раздражает. Все же единоначалие в некоторых вопросах разработки свободных проектов необходимо.