Nextcloud とCollarora Demo Server で簡単にLibreOffice Online を試す

こちらの記事で知ったのですが,Nextcloud でCollabora Online のDemo Server が簡単に使えるようになったようです.試してみました.

この機能は Collabora Online 3.6.0 で入ったようです.

Add demo server selector and show hint about that when Collabora is not setup

なので,Collabora Online 3.6.0 の動作するNextcloud 15〜19 環境が必要です.今回は Nextcloud 18.0.4 環境で試しました.

Nextcloud にCollabora Online App を導入します.

導入は簡単で,管理者権限のあるユーザでWeb経由で導入したり,CLIで導入できます.

cliでの導入例
$ sudo -u www-data php $NEXTCLOUD/occ app:install richdocuments
richdocuments installed
richdocuments enabled

次にDemo Server を設定します.
管理者ユーザでログインした状態のNextcloud で「設定」→「Collabora Online」で設定します.

確認メッセージが表示されます.

lool demo04

「Use a demo server」にチェックするとDemo Serverが選択できます.いくつか選択肢があるので今回は「Tokyo, Japan」を選びました.

lool demo03

少し設定が出来ます.

lool demo05

この状態でファイル画面に遷移して,「新しいドキュメント」を作成してみます.

lool demo06

LibreOffice Onlineが起動してDemo Server のメッセージが表示されます.

lool demo07

後は普通に編集できます :)
Demo ServerなのでこまめにDemoのメッセージが表示されますがこれはDemoなのでしょうがないですね.テキスト編集は特にもたつく感じはなくネイティブとそう変わらない感じ.スライドで画像やシェイプ図形など使うとまた違うかもしれません.

lool demo08

LibreOffice Online を自分のサーバに導入するのも以下のあたりでバイナリが配布されているので案外お手軽なのでこのDemo Server で気に入ったらLibreOffice Online を導入するといいと思います.

環境
$ sudo -u www-data php /var/www/files.matoken.org/occ app:list | grep richdocuments
  - richdocuments: 3.6.0
$ sudo -u www-data php /var/www/files.matoken.org/occ --version
Nextcloud 18.0.4
$ dpkg-query -W php apache2 mariadb-server
apache2 2.4.38-3+deb10u3
mariadb-server  1:10.3.22-0+deb10u1
php     2:7.3+69
$ lsb_release -dr
Description:    Debian GNU/Linux 10 (buster)
Release:        10
$ uname -m
x86_64

LibreOffice Hackfest Online #2 に参加して LibreOffice をbuildした

最近毎週水曜日に開催されている「LibreOffice Hackfest Online #2」に参加してみました.
今回は#2で#0から始まったので3回目.

Jitsi Meet で集まってYoutubeLive での配信も行っていました.配信された動画はアーカイブされていて以下で公開されています.

今回はLibreOffice のビルドをする回でした.自分は確か以前LOOLを試すためにbuildして以来で2,3年ぶりかな?デスクトップ版は初めてです.
いつも使っている環境はLinuxのDebian sid amd64 環境なのでここでbuildすることに.

当日だけだとsourceをとってくるだけで終わってしまうだろうと前日までに source の clone と build-dep でbuild に必要なパッケージを導入しておきました.

$ git clone git://anongit.freedesktop.org/libreoffice/core
$ sudo apt build-dep libreoffice

そして当日は autogen.sh を実行して依存関係に失敗,以下のあたりを追加で導入しました.

$ sudo apt install git ccache junit4 gstreamer1.0-libav libkrb5-dev nasm graphviz libpython3-dev

その後,再度 autogen.sh を実行.

$ ./autogen.sh

makeを掛けるとHackfest に利用しているJitsi Meets に影響が出そうです.てことで影響が出たら中断するつもりでこんな感じで優先度を下げて実行しました.問題なさそうなのでそのまま放置しておきました.

$ time nice -n 19 make -j1

Hackfest が終わってもまだ終わる気配はなかったのでそのままおいときます.
そして翌朝やっと終了していました.

make は20:06:23〜翌日の06:29:35 まで掛かっていました.優先度を下げていたとはいえかなり時間がかかりました.
時間がかかったのはCPUの温度が上がってCPUスロットリングが効いて0.8GHzとかにクロックが落ちていたのが大きそうです.

早速実行すると起動して利用できそうです.

$ instdir/program/soffice

LibOBuild1 20200507 12:05:26 2204368

しかしUI言語がUSAしか選べません.

LibOBuild2 20200507 19:05:56 2517755

恐らく autogen.sh の実行時にオプションがなかったせいだと思います.

$ ./autogen.sh --help|grep -i with-lang -A 13
  --with-lang="es sw tu cs sk"
                          Use this option to build LibreOffice with additional
                          UI language support. English (US) is always included
                          by default. Separate multiple languages with space.
                          For all languages, use --with-lang=ALL.
  --with-locales="en es pt fr zh kr ja"
                          Use this option to limit the locale information
                          built in. Separate multiple locales with space. Very
                          experimental and might well break stuff. Just a
                          desperate measure to shrink code and data size. By
                          default all the locales available is included. This
                          option is completely unrelated to --with-lang.

                          Affects also our character encoding conversion
                          tables for encodings mainly targeted for a
                          particular locale, like EUC-CN and EUC-TW for
                          zh, ISO-2022-JP for ja.

                          Affects also our add-on break iterator data for
                          some languages.

                          For the default, all locales, don't use this switch at all.
                          Specifying just the language part of a locale means all matching
                          locales will be included.

ということで --with-lang=ALL--with-locales="en es pt fr zh kr ja" で多国言語対応と,--with-package-format='deb' でDebian package 書き出し,それに依存して --enable-epm を付けてみました.

$ ./autogen.sh --with-package-format='deb' --enable-epm --with-lang=ALL --with-locales="en es pt fr zh kr ja"

そして make

今回は結果をTwitterに投稿するようにしてみました.

$ /bin/time -o /tmp/time -f "%E 位掛かりました" nice -n 19 make -j1 && echo "SAYAKAによる自動投稿: LibreOfficeのbuildが正常に 終わった みたいです.$(echo ;cat /tmp/time)" || echo "SAYAKAによる自動投稿: LibreOfficeのbuildが失敗したみたいです($?)$(echo ;cat /tmp/time)" | sayaka --post

しかし6時間46分程してから失敗><

SAYAKAによる自動投稿: LibreOfficeのbuildが失敗したみたいです(2)
Command exited with non-zero status 2
6:46:38 位掛かりました

logを見るとtranslationsのcloneをずっとやっていて回線が不安定になったかタイムアウトかそんな感じで途中でcloneに失敗して転けていました.

Cloning into '/home/matoken/src/core/translations'...
error: RPC failed; curl 56 GnuTLS recv error (-9): Error decoding the received TLS packet.

再度実行してみると正常終了しました.

SAYAKAによる自動投稿: LibreOfficeのbuildが正常に 終わったみたいです.
6:36:46 位掛かりました

起動してみると日本語も選べます :)

$ /instdir/program/soffice

libodevalpha0

せっかくbuildできたのでこのLibreOfficeDev 7.0.0.0.alpha0+ の Impress でスライドを作ってみました.60ページほどのスライドをざっと書いてみましたが特に問題なく普通にかけてしまい拍子抜けしてしまいました.

VPSサーバでもbuild

ローカルのDebian sid amd64環境ではうまく行ったけど回線やPCの問題で時間がかかります.VPSサーバでbuildしてからバイナリパッケージをダウンロードしたほうが早いのではと試してみました.
このサーバはドイツのニュルンベルクでホストされているContabo社のVPS300です.スペック(CPU 2Core/RAM 4GB/HDD 300GB)の割のとても安い(€3.99/月)けど回線が細い感じのサーバです.

OSはDebian 10(buster) amd64を導入してあります.依存関係が少し手間取りましたが後はスムーズに&手元のPCよりずっと速く終わりました.

必要なパッケージの導入
$ sudo apt build-dep libreoffice
$ sudo apt install libperl-dev libarchive-zip-perl javacc gperf python-dev bison flex ant doxygen ccache gstreamer1.0-libav libkrb5-dev nasm
sourceの入手
$ time git clone git://anongit.freedesktop.org/libreoffice/core
   :
real    35m26.954s
user    8m5.441s
sys     1m1.694s
autogen(--with-locales も`ALL` にしてみた)
$ time ./autogen.sh --with-package-format='deb' --enable-epm --with-lang=ALL --with-locales=ALL
make
$ time make -j$(nproc)
  :
real    137m3.246s
user    59m6.001s
sys     25m13.390s

その後も git pull && make とかして 7.0.0.0.alpha1+ にすることも出来ました.

buildしたDebianパッケージはいつまでかわからないけどここで公開しています.

てことでどうにかビルドできました.build後のsource ディレクトリ以下は20GB近く.build-depでも1GB以上消費しました.ディスクも結構食いますね.

相談しながら引っかかったら聞くという場があるのは助かりますね.今回の機会がなかったら自分でbuildしなかったと思います.

次回の「LibreOffice Hackfest Online #3」は05/13(Wed)に開催で以下のページから申し込みが出来ます.jitsi Meetでの開催で,YoutubeLiveでの配信も行われる予定です.

pdfファイルから画像を抜き出し( pdfimages or LibreOffice )

ここ2,3日で数回使ったのでメモしておきます.

poppler-utilsのpdfimagesを使う

概要
$ apt show poppler-utils | grep Description: -A99

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Description: PDF 向けユーティリティ (Poppler ベース)
 Poppler は xpdf PDF ビューアを基に作られた PDF 描画ライブラリです。
 .
 本パッケージには (Poppler ベースの) コマンドラインユーティリティが含まれ、
 PDF 文書の情報の取得、他の形式への変換、編集ができます。
  * pdfdetach -- 埋め込みファイル (添付ファイル) の一覧出力または抽出
  * pdffonts -- フォント分析ツール
  * pdfimages -- 画像抽出ツール
  * pdfinfo -- 文書情報
  * pdfseparate -- ページ抽出ツール
  * pdfsig -- デジタル署名の検証
  * pdftocairo -- PDF から PNG/JPEG/PDF/PS/EPS/SVG への Cairo を使った変換ツール
  * pdftohtml -- PDF から HTML への変換ツール
  * pdftoppm -- PDF から PPM/PNG/JPEG 画像への変換ツール
  * pdftops -- PDF から PostScript (PS) への変換ツール
  * pdftotext -- テキストの抽出
  * pdfunite -- 文書の併合ツール
導入
$ sudo apt install poppler-utils
usage
$ pdfimages
pdfimages version 0.69.0
Copyright 2005-2018 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011 Glyph & Cog, LLC
Usage: pdfimages [options] <PDF-file> <image-root>
  -f <int>       : first page to convert
  -l <int>       : last page to convert
  -png           : change the default output format to PNG
  -tiff          : change the default output format to TIFF
  -j             : write JPEG images as JPEG files
  -jp2           : write JPEG2000 images as JP2 files
  -jbig2         : write JBIG2 images as JBIG2 files
  -ccitt         : write CCITT images as CCITT files
  -all           : equivalent to -png -tiff -j -jp2 -jbig2 -ccitt
  -list          : print list of images instead of saving
  -opw <string>  : owner password (for encrypted files)
  -upw <string>  : user password (for encrypted files)
  -p             : include page numbers in output file names
  -q             : don't print any messages or errors
  -v             : print copyright and version info
  -h             : print usage information
  -help          : print usage information
  --help         : print usage information
  -?             : print usage information
pdfファイル内の画像リスト確認
$ pdfimages ./bicycle_parking.pdf -list
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image     340   120  rgb     3   8  image  no         5  0   221   221 9576B 7.8%
   1     1 image     960   720  rgb     3   8  jpeg   yes       14  0   170   170 64.2K 3.2%
pdfファイルから画像抜き出し既定値では.ppm形式
$ pdfimages ./bicycle_parking.pdf ./bicycle_parking-images
$ ls -l ./bicycle_parking-images*
-rw-r--r-- 1 matoken matoken  122415 11月 12 21:40 ./bicycle_parking-images-000.ppm
-rw-r--r-- 1 matoken matoken 2073615 11月 12 21:40 ./bicycle_parking-images-001.ppm
$ identify ./bicycle_parking-images-000.ppm
./bicycle_parking-images-000.ppm PPM 340x120 340x120+0+0 8-bit sRGB 122415B 0.000u 0:00.000
png形式に変換して保存
$ pdfimages ./bicycle_parking.pdf ./bicycle_parking-images -png
$ ls -l ./bicycle_parking-images*
-rw-r--r-- 1 matoken matoken  10274 11月 12 21:46 ./bicycle_parking-images-000.png
-rw-r--r-- 1 matoken matoken 321115 11月 12 21:46 ./bicycle_parking-images-001.png
$ identify ./bicycle_parking-images-000.png
./bicycle_parking-images-000.png PNG 340x120 340x120+0+0 8-bit sRGB 10274B 0.000u 0:00.000
jpegファイルはjpegとして保存(それ以外はppm)
$ pdfimages ./bicycle_parking.pdf ./bicycle_parking-images -j
$ ls -l ./bicycle_parking-images*
-rw-r--r-- 1 matoken matoken 122415 11月 12 21:48 ./bicycle_parking-images-000.ppm
-rw-r--r-- 1 matoken matoken  65695 11月 12 21:48 ./bicycle_parking-images-001.jpg

LibreOfficeでOpenDocumentFormatに変換して画像だけ抜き出し

OpenDocumentFormatはzip形式で圧縮されてその中に画像ファイルも含まれるのでDraw形式に変換して画像ディレクトリの格納されている Pictures だけ展開すると画像が取り出せる.

導入はディストリビューションのほかFlatpack, snapなども公式で配布されているのでお好みで.今回は Debian sid amd64 でapt installしたもの.

$ libreoffice --headless --nologo --nofirststartwizard --convert-to odg ./bicycle_parking.pdf
convert /home/matoken/Downloads/bicycle_parking.pdf -> /home/matoken/Downloads/bicycle_parking.odg using filter : draw8
$ unzip ./bicycle_parking.odg Pictures/*
Archive:  ./bicycle_parking.odg
 extracting: Pictures/10000000000003C0000002D0136E1A08DF8E2B28.jpg
 extracting: Pictures/100000000000015400000078BA7345C344D8D008.png
$ ls -lA Pictures/
合計 80
-rw-r--r-- 1 matoken matoken 10812 11月 12 12:56 100000000000015400000078BA7345C344D8D008.png
-rw-r--r-- 1 matoken matoken 65695 11月 12 12:56 10000000000003C0000002D0136E1A08DF8E2B28.jpg
$ identify Pictures/*
Pictures/100000000000015400000078BA7345C344D8D008.png PNG 340x120 340x120+0+0 8-bit sRGB 10812B 0.000u 0:00.000
Pictures/10000000000003C0000002D0136E1A08DF8E2B28.jpg JPEG 960x720 960x720+0+0 8-bit sRGB 65695B 0.000u 0:00.000

環境

$ dpkg-query -W poppler-utils unzip libreoffice imagemagick
imagemagick     8:6.9.10.14+dfsg-7
libreoffice     1:6.1.3-1
poppler-utils   0.69.0-2
unzip   6.0-21
$ lsb_release -d
Description:    Debian GNU/Linux unstable (sid)
$ uname -m
x86_64

LibreOfficeでプレゼンテーションを行うときのTips

この記事はLibreOffice Advent Calendar 2014 – Adventarの12/22の記事です.
昨日の記事は小笠原さんの関東LibreOfficeオフラインミーティングとはなにか – なるひこの Linux Printing お勉強日記でした.

LibreOfficeいつも便利に利用させてもらっています.私は最近Impressでスライドを作って勉強会などで発表するのによく使っています.最近気付いたImpress のTips などを書いてみます.

スライドショー中断した後続きからスライドを開始する

F5 key を押すことでスライドショーが出来ますが,別の資料を見てもらったり実演などで一旦スライドを中断することがあります.その後スライドを再開しようとして再度F5 Key を押すと1枚目のスライドに戻ってしまいます.結構最近まで → Key を連打して元のページに戻っていたのですが,これじゃいけないなと調べてみたところ shift + F5 で中断した場所から再開できることがわかりました.これによりスムーズに発表が出来るようになりました :)

スライドに挿入した画像の解像度変更

先日画像を多用したスライドを作ったのですが,50pちょっとのスライドなのに270MBほどの容量になってしまいました.
Screenshot from 2014-12-23 03:43:00Screenshot from 2014-12-23 03:41:39
これはデジカメの画像を縮小せずにそのまま貼り付けたせいでこうなりました.前もって縮小しておいたらいいのですが貼り付けた後に縮小したものに差し替えるのは面倒です.こういう時に画像の上で右クリックを押し,「画像の圧縮(S)」から解像度の変更が可能です.以下の例では 10MB超から163KB になっています.

Screenshot from 2014-12-23 03:30:01Screenshot from 2014-12-23 03:31:07

1,2枚ならこの方法でいいのですが,沢山の画像がある場合は面倒です.一括で変更したい場合は「ツール(T)」の「プレゼンテーションの軽量化(P)」から一括で解像度変更が可能です.一気に9.5MBになりました.

Screenshot from 2014-12-23 03:36:32Screenshot from 2014-12-23 03:37:41Screenshot from 2014-12-23 03:41:03Screenshot from 2014-12-23 03:41:48

pdfやhtml形式でプレゼンテーションをする

Libreofficeが導入されてない環境や,リソースが少ない端末でプレゼンテーションをする場合でもpdfやhtml形式への書き出しを行ってプレゼンテーションを行うことが可能です.例えばRaspberryPiはメモリなどのリソースが少ないためImpressは重いのですが,pdfやhtml形式だと比較的軽いので快適にプレゼンが可能でした.

pdf への書き出しは「ファイル(F)」「PDF としてエクスポート」から行えます.この時「OpenDocumentファイルを埋め込む(B)」にチェックを付けておくと後でImpressで編集を行うことが出来るpdfファイルになります.SlideShareなどで共有する場合などにも便利です.
Screenshot from 2014-12-23 04:00:26

html への書き出しは「ファイル(F)」「エクスポート(T)」から「ファイルの種類(T)」から「HTML ドキュメント (Impress) html,htm」を選択することで可能です.エクスポートしたフォルダの中に画像形式のスライドとhtmlファイルが生成されます.「スライド名.html」というファイルをブラウザで開くとプレゼンテーションが可能です.また,画像ファイルだけを使って画像ビュワーでプレゼンテーションをすることも可能です.

Screenshot from 2014-12-23 04:11:53Screenshot from 2014-12-23 04:14:18


明日のLibreOffice Advent Calendar 2014 – Adventarsouichirho.ishikawaさんです.よろしくお願いします.