LibreOfficeというオープンソースのオフィススイートがあります.オフィススイートを使いたいときにはこれを使うことが多いです.
今回LibreOffice Writerでtextlintを使って日本語文章を校正したいなと思って少し試してみました.
タグ: Libreoffice
snapでNextcloudを導入して手軽にGoogleDocぽく使う(snap版Nextcloud + OnlyOffice)
Nextcloud導入が面倒?snapを使うとこれだけでGoogleDocみたいなことができます(Debian sid amd64/Ubuntu 20.04 LTSで確認済み).
$ sudo apt update && sudo apt upgrade
$ sudo apt install snapd
$ sudo snap install nextcloud
$ sudo /snap/bin/nextcloud.occ app:install documentserver_community
$ sudo /snap/bin/nextcloud.occ app:install onlyoffice
簡単に説明していきます.
$ sudo apt update && sudo apt upgrade
$ sudo apt install snapd
$ snap find nextcloud
Name Version Publisher Notes Summary
nextcloud 18.0.4snap3 nextcloud✓ - Nextcloud Server - A safe home for all your data
spreedme 0.29.5snap1 nextcloud✓ - Spreed.ME audio/video calls and conferences feature for the Nextcloud Snap
onlyoffice-desktopeditors 5.5.1 onlyoffice✓ - A comprehensive office suite for editing documents, spreadsheets and presentations
qownnotes 20.6.2 pbek - Plain-text file markdown note taking with Nextcloud / ownCloud integration
nextcloud-port8080 1.01 arcticslyfox - Nextcloud Server
nextcloud-snap-abacao 11.0.3snap4 abacao - Nextcloud Server
nextcloud-nextant 11.0.0snap3 rmescandon - Nextcloud Server + search support
nextcloud-abacao 11.0.3snap4 abacao - Nextcloud Server
cashbox-nextcloud 11.0.2snap2 cashbox - Nextcloud Server for www.cashBOX.plus
nextcloudsnap 12.0.4snap1 oscarbrolin - Nextcloud Server - A safe home for all your data
ghostcloud 0.9.5 beidl - A modern cross-platform client for Nextcloud, ownCloud, WebDav.
htxucloud 12.0.3snap7 htxu - Nextcloud Server
carnet 0.22.1 alexandre-roux-m - Powerful note taking app with sync, online editor and android app
opentodolist 3.23.0 mhoeher - Todo list and note taking application
solr 0.1 rmescandon - Starts up solr as forking daemon
mdns-hostname 0.0.1 welike - mDNS mini-daemon to published hostname.local
nextcloud-stondino 15.0.10snap3+git1.ff25cb9 zmusselman - Nextcloud Server - A safe home for all your data
vmcloud-nextcloud 1.0.0 victoriususm - Nextcloud 16.0.3 Optimized-Boosted
feedreader 0+git.9ac478f7 ken-vandine - RSS client for various webservices
test003-nc 13.0.4.snap1 reinism - Nextcloud Server - A safe home for all your data
$ snap info nextcloud
name: nextcloud
summary: Nextcloud Server - A safe home for all your data
publisher: Nextcloud*
store-url: https://snapcraft.io/nextcloud
contact: https://github.com/nextcloud/nextcloud-snap
license: unset
description: |
Where are your photos and documents? With Nextcloud you pick a server of
your choice, at home, in a data center or at a provider. And that is where
your files will be. Nextcloud runs on that server, protecting your data and
giving you access from your desktop or mobile devices. Through Nextcloud
you also access, sync and share your existing data on that FTP drive at
school, a Dropbox or a NAS you have at home.
commands:
- nextcloud.disable-https
- nextcloud.enable-https
- nextcloud.export
- nextcloud.import
- nextcloud.manual-install
- nextcloud.mysql-client
- nextcloud.mysqldump
- nextcloud.occ
services:
nextcloud.apache: simple, enabled, active
nextcloud.mdns-publisher: simple, enabled, active
nextcloud.mysql: simple, enabled, active
nextcloud.nextcloud-cron: simple, enabled, active
nextcloud.nextcloud-fixer: simple, enabled, inactive
nextcloud.php-fpm: simple, enabled, active
nextcloud.redis-server: simple, enabled, active
nextcloud.renew-certs: simple, enabled, active
snap-id: njObIbGQEaVx1H4nyWxchk1i8opy4h54
tracking: latest/stable
refresh-date: yesterday at 21:53 JST
channels:
latest/stable: 18.0.4snap4 2020-06-08 (21413) 264MB -
latest/candidate: ^
latest/beta: 18.0.4snap4+git5.31f0acd 2020-06-09 (21469) 264MB -
latest/edge: master-2020-06-10 2020-06-10 (21487) 267MB -
18/stable: 18.0.4snap4 2020-06-08 (21413) 264MB -
18/candidate: ^
18/beta: ^
18/edge: 18-2020-06-10 2020-06-10 (21482) 265MB -
17/stable: 17.0.6snap1 2020-05-03 (20616) 229MB -
17/candidate: ^
17/beta: 17.0.6snap1+git10.8f765f8 2020-06-09 (21474) 249MB -
17/edge: 17-2020-06-10 2020-06-10 (21483) 250MB -
16/stable: 16.0.11snap1 2020-06-08 (21459) 225MB -
16/candidate: ^
16/beta: ^
16/edge: ^
15/stable: 15.0.14snap1 2020-01-20 (18374) 216MB -
15/candidate: ^
15/beta: ^
15/edge: ^
14/stable: 14.0.10snap1 2019-05-04 (13208) 202MB -
14/candidate: ^
14/beta: ^
14/edge: ^
13/stable: 13.0.12snap1 2019-05-03 (13155) 193MB -
13/candidate: ^
13/beta: ^
13/edge: ^
12/stable: 12.0.13snap1 2019-01-07 (10632) 206MB -
12/candidate: ^
12/beta: ^
12/edge: ^
11/stable: 11.0.8snap1 2018-05-10 (6942) 202MB -
11/candidate: ^
11/beta: ^
11/edge: ^
いくつかでてきますが,Publisherが nextcloud
になっている公式のstableを使います.ちなみにこのコマンドを叩いた時点で19.0.0や18.0.5が出ていてこの記事執筆時点で18.0.6が出ています.ちょっと反映が遅いみたいですね.
$ sudo snap install nextcloud
しばらく時間がかかりますが,これでNextcloudと関連のApache httpd/PHP/MySQL等が設定済みの状態で導入されます.
$ ps aux | grep -i nextcloud
root 17628 0.0 0.0 1872 196 ? Ss 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/delay-on-failure mdns-publisher nextcloud
root 17615 0.0 0.1 1872 1168 ? Ss 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/nextcloud-cron
root 17657 0.0 0.1 1872 1200 ? Ss 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/renew-certs
root 17681 0.0 0.1 1872 1272 ? Ss 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/start-php-fpm
root 17712 0.0 0.1 1872 1216 ? Ss 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/start-redis-server
root 17765 0.0 0.6 258120 6008 ? Sl 00:10 0:00 mdns-publisher nextcloud
root 17987 0.0 0.1 1872 1200 ? Ss 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/run-httpd -k start -DFOREGROUND
root 18069 0.1 0.1 1872 1168 ? Ss 00:10 0:01 /bin/sh /snap/nextcloud/21169/bin/start_mysql
root 18111 0.0 0.1 1872 1100 ? S 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/mysqld_safe --datadir=/var/snap/nextcloud/21169/mysql --pid-file=/tmp/pids/mys
ql.pid --lc-messages-dir=/snap/nextcloud/21169/share --socket=/tmp/sockets/mysql.sock
root 18128 0.9 22.0 1815000 210060 ? Sl 00:10 0:08 /snap/nextcloud/21169/bin/mysqld --basedir=/snap/nextcloud/21169 --datadir=/var/snap/nextcloud/21169/mysql --plu
gin-dir=/snap/nextcloud/21169/lib/plugin --lc-messages-dir=/snap/nextcloud/21169/share --log-error=error.log --pid-file=/tmp/pids/mysql.pid --socket=/tmp/sockets/mysql.sock
root 18196 0.0 2.1 200580 21712 ? Ss 00:10 0:00 php-fpm: master process (/snap/nextcloud/21169/config/php/php-fpm.conf)
root 18980 0.0 0.1 1872 1276 ? S 00:10 0:00 /bin/sh /snap/nextcloud/21169/bin/httpd-wrapper -k start -DFOREGROUND
root 19017 0.0 0.0 6168 0280 ? S 00:10 0:00 httpd -d /snap/nextcloud/21169 -k start -DFOREGROUND
root 19018 0.0 0.1 1211772 1612 ? Sl 00:10 0:00 httpd -d /snap/nextcloud/21169 -k start -DFOREGROUND
root 19019 0.0 0.1 880108 1668 ? Sl 00:10 0:00 httpd -d /snap/nextcloud/21169 -k start -DFOREGROUND
root 19020 0.0 0.1 1080512 1656 ? Sl 00:10 0:00 httpd -d /snap/nextcloud/21169 -k start -DFOREGROUND
root 19221 0.0 0.0 1716012 0292 ? Sl 00:10 0:00 httpd -d /snap/nextcloud/21169 -k start -DFOREGROUND
これでもうデーモンも起動しているので対象マシンのホスト名やipアドレスをウェブブラウザに入力して任意の管理者ユーザのユーザ名とパスワードを入力して登録します.同じネットワークだと誰でも繋いで設定できてしまうので注意しましょう.
「推奨アプリをインストール」にチェックを入れておくと便利な推奨アプリが導入されます.時間がかかるので後でもいいかもしれません.
これでとりあえずNextcloudが利用できるようになりました.実はここまでは snapパッケージが amd64以外にも arm64. armhf, i386, ppc64el に対応しているので armhf/arm64 な Raspberry Pi などでも動作します.
続いて OnlyOffice, community edition の server版を導入します.
Nextcloudのウェブからも導入できるのですが,300MB程とサイズが大きく回線によってはタイムアウトしてしまいます.
その場合は occ
コマンドで導入します.(snapなので nextcloud.occ
コマンドを使います)
$ sudo /snap/bin/nextcloud.occ app:install documentserver_community
これでも失敗することがあります.その場合は手動でGitHub からアーカイブを入手して手動で展開して有効化します.(この方法だとamd64以外でも導入はできちゃいますが動かないので注意)
$ COUNT=1; while :;do wget https://github.com/nextcloud/documentserver_community/releases/download/v0.1.6/documentserver_community.tar.gz && break; c=$(( $c + 1 )) ;sleep 10; done;echo $COUNT
$ sudo tar xvf ./documentserver_community.tar.gz -C /var/snap/nextcloud/current/nextcloud/extra-apps/
$ sudo chown -R root.root /var/snap/nextcloud/current/nextcloud/extra-apps/documentserver_community
$ sudo /snap/bin/nextcloud.occ app:enable documentserver_community
CollaboraはAppImageを使っていたのでファイル数は少なかったですがこちらは普通にディレクトリに展開されるようでたくさんあります.
$ sudo find /var/snap/nextcloud/current/nextcloud/extra-apps/documentserver_community | wc -l
12935
続いてOnlyOfficeアプリも導入します.
これはOnlyOffice Serverに繋いでやり取りするものです.Nextcloud のアプリ画面若しくは以下のコマンドで導入します.
$ sudo /snap/bin/nextcloud.occ app:install onlyoffice
これでNextcloudに戻って対応ドキュメントを開いたり新規作成するとOnlyOfficeが起動して編集できるはずです :)
アプリが導入されているけどうまく行かない場合はOnlyOfficeアプリを導入し直すとうまく行くかもしれません.(OnlyOfficeアプリがServerより先に導入されるとうまく行かない)
$ sudo /snap/bin/nextcloud.occ app:remove onlyoffice
$ sudo /snap/bin/nextcloud.occ app:install onlyoffice
とりあえずこれでお試しは出来る感じです.実際に運用するにはhttps化したりバックアップを定期的に取るようにしたりなど設定したほうがいいですがパスやコマンド以外は通常のNextcloudと同じだと思います.
主なパスやコマンドはこうなっています.
- 設定ファイル /var/snap/nextcloud/current/nextcloud/config/config.php
- Nextcloudデータ,ログ /var/snap/nextcloud/common/
- 関連アプリ格納 /var/snap/nextcloud/current/
- occ /snap/bin/nextcloud.occ
- mysql-client /snap/bin/mysql-client
- mysqldump /snap/bin/nextcloud.mysqldump
dbのアカウント情報は設定ファイルに載っています.
$ sudo grep db /var/snap/nextcloud/current/nextcloud/config/config.php
'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbhost' => 'localhost:/tmp/sockets/mysql.sock',
'dbport' => '',
'dbtableprefix' => 'oc_',
'dbuser' => 'nextcloud',
'dbpassword' => 'wdwYevflNhziZDUxxG2OXJs6el4zThtkmX20Bijih7Zh_4XU58OkZs3TAt7TCJjt',
設定ファイルを編集してデーモンを再起動したい場合はこんな感じで再起動できます.
$ sudo snap restart nextcloud
てことでsnap版Nextcloudはお試しにはおすすめです.
OnlyOfficeは今のところamd64環境しか提供されていませんがRaspberry Pi などでも動くようにしたいと言っているのでこれも期待です.
Nextcloud 19 だと先日紹介したCollaboraも同様にWebから導入できるのでおすすめです.
LibreOffice Impress の HTML WebCast 書き出しで遠隔プレゼン機能を試す
該当しそうなBug
オンラインでプレゼンテーションをするとき一般的には画面共有すると思いますが,スライドファイルを前もって配布しておいてお互いそれを見ながらプレゼンも出来ます.
その間くらいの機能でスライドのページめくりをプレゼンターと視聴者で同期するサービスが欲しいなと思っています.
以下のようなサービスがあるようですが自分が何度か試した限りでは「ログイン/新規登録」が出来ず使えていません.
LibreOffice Impress のHTML 書き出し機能にWebCast 機能を見つけたので試してみました.
しかし紹介しておいてなんですがこの機能は長らくメンテされていないようなのであまり使わないほうがいいかもしれません.(Perl cgi環境も用意しにくいだろうし)
ヘルプもざっくりとした説明しかありません.
HTML 形式で保存するプレゼンテーションを開きます。
ファイル → エクスポート を行ないます。
ファイル書式 を HTML ドキュメント (LibreOffice Impress) (.html;.htm) に設定します。
ファイル名 を入力して、エクスポート をクリックします。
HTML エクスポート ウィザードの指示に従います。
てことでメモがてら.
LibreOffice Impress で書き出したいスライドを開きます.
「ファイル」→「エクスポート」でエクスポートウィドウが開きます.
書き出し先のディレクトリ(複数のファイルが書き出されるので新しいディレクトリを用意したほうが良い)を指定し,任意のファイル名を指定します.
「ファイル形式」に「HTML ドキュメント (Impress) (.html;.htm)」を選択して「エクスポート」ボタンを押します.
「デザインの割り当て」は初回は「新規デザイン」しか選べません.「次へ」ボタンを押します.
「発表方法」に「WebCast」を選択し,右側の「WebCast」では「Perl」を選択します(ASPは未検証).テキストボックスは規定値のままで構いません.「次へ」ボタンを押します.
「名前を付けて画像を保存」(原文は Save Image As
なので訳が間違っていそう)で画像形式を,「モニターの解像度」でスライドの解像度を指定します.「作成」ボタンで書き出されます.
書き出し時にHTMLデザインの保存ウィンドウが表示されますがキャンセルも出来ます.
書き出したディレクトリを見ると,スライドの画像といくつかの.htmlファイルや.plなども出力されています.これらのファイルをcgiの動くsiteにコピーします.
今はcgiの動く場所がとても限られているのでこれが一番難しいかもしれないですね.
$ ls -w 80 ./slide_dir
common.pl img15.png img24.png img33.png img42.png img51.png img7.png
currpic.txt img16.png img25.png img34.png img43.png img52.png img8.png
editpic.pl img17.png img26.png img35.png img44.png img53.png img9.png
img0.png img18.png img27.png img36.png img45.png img54.png index.html
img1.png img19.png img28.png img37.png img46.png img55.png picture.txt
img10.png img2.png img29.png img38.png img47.png img56.png poll.pl
img11.png img20.png img3.png img39.png img48.png img57.png savepic.pl
img12.png img21.png img30.png img4.png img49.png img58.png show.pl
img13.png img22.png img31.png img40.png img5.png img59.png slide.html
img14.png img23.png img32.png img41.png img50.png img6.png webcast.pl
今回は自宅の適当なApache httpdの動いている環境にコピーしました.
$ scp -r ./slide_dir user@host:~/public_html/cgi-bin/
この環境は .cgi
しかcgiとして動かないので,.htaccess
を作成して .pl
もcgiとして動くようにしました.
$ echo 'AddHandler cgi-script .pl' > ./.htaccess
$ cat ./.htaccess
AddHandler cgi-script .pl
次に *.pl
ファイルに実行権を付与します.httpdのユーザが実行できる権限にします.
$ chmod o+x ./*.pl
次にページ管理ファイルの currpic.txt
に読み書き権を付与します.httpdのユーザが読み書きできる権限にします.
$ chmod o+rw ./currpic.txt
これは恐らくサーバの環境依存でやらなくても動く環境のほうが多いと思うので一旦スキップして動かなかったら設定してください.editpic.pl
, editpic.pl
, savepic.pl
, show.pl
ファイルの require "common.pl";
行を require "./common.pl";
に書き換えます.
- require "common.pl";
+ require "./common.pl";
この状態でウェブブラウザで視聴者は index.html
を,プレゼンターは slide.html
(html書き出し時のファイル名)を開けばOKなはずです.
以下今回試したサンプルです.多分すぐに消します.
仕組みとしてはプレゼンターがページめくり操作をすると,ページ番号の保存されている currpic.txt
ファイルにページ番号を格納.
視聴者側のブラウザでは1秒毎に cgi を呼び出していて,呼び出された cgi 側では現在のページ番号が保存されている currpic.txt
の内容から該当のページを表示する.といったことをしているようです.
そのためプレゼンターが操作してから実際に視聴者のページが更新されるまで数秒掛かる感じです.
中を見ると解りますがライブラリも同梱の小さな独自ライブラリ1つだけで行数も少なくとてもプリミティブです.これは誰も使わず埋もれて何年も放置されていそうです.
出来ることなら最近のギジュとで書き直されてほしいけどこれまでの放置っぷりから難しそうですね.
とりあえずはWebに公開して口頭でページめくりを指示するのが現実的そうです.
(それか普通に画面共有)
$ dpkg-query -W libreoffice libreoffice 1:6.4.4-1 $ lsb_release -dr Description: Debian GNU/Linux bullseye/sid Release: unstable $ uname -m x86_64
$ dpkg-query -W apache2 perl apache2 2.4.41-4ubuntu3 perl 5.30.0-9build1 $ lsb_release -dr Description: Ubuntu 20.04 LTS Release: 20.04 $ uname -m x86_64
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で導入できます.
$ sudo -u www-data php $NEXTCLOUD/occ app:install richdocuments
richdocuments installed
richdocuments enabled
次にDemo Server を設定します.
管理者ユーザでログインした状態のNextcloud で「設定」→「Collabora Online」で設定します.
確認メッセージが表示されます.
「Use a demo server」にチェックするとDemo Serverが選択できます.いくつか選択肢があるので今回は「Tokyo, Japan」を選びました.
少し設定が出来ます.
この状態でファイル画面に遷移して,「新しいドキュメント」を作成してみます.
LibreOffice Onlineが起動してDemo Server のメッセージが表示されます.
後は普通に編集できます :)
Demo ServerなのでこまめにDemoのメッセージが表示されますがこれはDemoなのでしょうがないですね.テキスト編集は特にもたつく感じはなくネイティブとそう変わらない感じ.スライドで画像やシェイプ図形など使うとまた違うかもしれません.
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
しかしUI言語がUSAしか選べません.
恐らく 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
せっかく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
$ time git clone git://anongit.freedesktop.org/libreoffice/core
:
real 35m26.954s
user 8m5.441s
sys 1m1.694s
--with-locales
も`ALL` にしてみた)$ time ./autogen.sh --with-package-format='deb' --enable-epm --with-lang=ALL --with-locales=ALL
$ 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での配信も行われる予定です.
- LibreOffice Hackfest Online #3 – connpass 申し込みページ
- LibreOffice Hackfest Online #3 – YouTube YoutubeLiveページ
- LibreOffice日本語チーム – YouTube Youtubeチャンネルページ
pdfファイルから画像を抜き出し( pdfimages or LibreOffice )
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
$ 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
$ 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%
$ 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
$ 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
$ 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