ユニバーサルオフィスコンバーター(unoconv)

unoconvとは何ですか?

"unoconv"は、さまざまなオフィス文書ファイル形式間の変換に使用されるコマンドラインプログラムです。これはLibreOfficeのインスタンスを使用して変換を行い、 Assignment活動によって使用されて、ドキュメントに注釈を付けることができるようにドキュメントをpdfに変換します。 unoconvがインストールされていない場合 - 唯一の影響は、学生がpdf文書をアップロードしたときに課題活動がアノテーションを許可するだけであるということです。

unoconvのインストールに必要なステップは、あなたがMoodleをインストールしたオペレーティングシステムによって異なります。

Linuxへのunoconvのインストール

unoconvの必要なバージョンは少なくとも0.7です。あなたのLinuxの種類によっては、これはあなたのパッケージマネージャで利用できるかもしれません、そしてあなたはそれを直接インストールすることができます:

Ubuntu 16.04 LTS

apt-get install unoconv

パッケージマネージャに古いバージョンのパッケージが含まれている場合は、新しいバージョンを見つけて手動でインストールする必要があります( Debianテスト )。 Unoconv自体は単なるPythonスクリプトなので、依存関係はほとんどありません。

潜在的な問題:

  • 一部のシステムでは、apacheユーザのホームディレクトリは存在しないフォルダに設定されています。これはunoconvが失敗する原因になります。これには2つの解決策があります - 一つはapacheユーザのための(書き込み可能な)ホームディレクトリを作ることです(/ home / www-dataのように)。もう1つは、apacheユーザー以外の別のユーザー(有効で書き込み可能なホームディレクトリを持つユーザー)としてunoconvリスナー(後述)を実行することです。
  • まだ14.04LTSを実行している場合は、unoconvは出荷時の状態では機能しません。これは最も効率的な方法ではないかもしれませんが、最初に上記のようにパッケージマネージャからunoconv(バージョン0.6)をインストールすることによってうまくいきました。それからGithub( https://github.com/dagwieers/unoconv )からunoconv 0.7を入手してから、PPA( https://launchpad.net/~libreoffice/+archive/ubuntu/)を使用して最新のlibreofficeにアップグレードする必要があります。 ppa ) Github版のunoconvにポイントムードル。最初の行の 'python'を 'python3'に変更して、Pythonのunoconvファイルを修正する必要があります。また、www-dataユーザーが書き込めるように、ディレクトリ/ var / wwwのアクセス権を変更する必要があります(www-dataは、デフォルトでは実行できないホームディレクトリに書き込む必要があります)。

Debian Stableでは、 unoconvをインストールする最もクリーンな方法はJessie-backportsを使うことです。まず、/etc/apt/sources.listでバックポートレポジトリを有効にします。

#### Jessie-backports  ####
deb https://ftp.debian.org/debian jessie-backports main

次に、jessie-backportsからunoconvを更新してインストールします。

apt-get update
apt-get install -t jessie-backports unoconv

パッケージはあなたに必要なすべての依存関係をもたらします。


Ubuntu 14.04 LTS

1)optディレクトリに移動します

cd /opt

2)unoconvをダウンロードする

sudo wget https://raw.githubusercontent.com/dagwieers/unoconv/master/unoconv

3)1行目の 'python'を 'python3'に変更して、Pythonのunoconvファイルを修正します。

sudo nano /opt/unoconv

例えば。
#!/usr/bin/env python3

4)unoconvを実行可能にする

sudo chmod ugo+x /opt/unoconv

5)LibreOffice PPAをシステムに追加して最新バージョンをインストールする

sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update
sudo apt-get install libreoffice

6)Apacheがそのホームディレクトリに書き込めるようにパーミッションを変更してください。

sudo chown www-data /var/www

7)ブラウザから[サイトの管理]> [サーバー]> [システムパス]に移動し、パスをunoconvに追加します。
/ opt / unoconv

  • 注:デフォルトパスを保持したい場合は、/ usr / binへのシンボリックリンクを追加してください。
sudo ln -s /opt/unoconv /usr/bin/

8) [サイトの管理]> [プラグイン]> [活動モジュール]> [課題]> [フィードバックプラグイン]> [PDFに注釈を付ける]> [unoconvパスのテスト]に移動します。
君は見るべきだ:
「unoconvパスは正しく設定されているようです。」

  • 変換したpdfテストファイルをダウンロードしてください。 (PDFが読み込めない場合は、www-dataがそのホームディレクトリに書き込めることを確認してください:/ var / www)

CentOS / RedHat

始める直前に、最新のLibreOffice 5.2をRPMパッケージから直接インストールすることを検討したいかもしれません。それはあなたが使っているディストリビューションの一部ではありません。 nov-2016の時点で、CentOSとRedHat 7.2にはOpenOffice 4.3が付属しています。そのため、このバージョンの使用に興味がなく、最新の5.2の独立したLibreOffice 5.2をインストールしたい場合は、次のコマンドを発行して、OS上にあるopenofficeパッケージをすべて削除してください。

yum remove openoffice* libreoffice*

より良いドキュメント変換のためには、ローカライズされたlibreofficeバージョンを選択することをお勧めします。

yum install libreoffice libreoffice-pyuno
git clone https://github.com/dagwieers/unoconv.git
# copy 
cp unoconv/unoconv /usr/bin
# or link unoconv to /usr/bin
ln -s unoconv/unoconv /usr/bin/unoconv
Note: depends on what version you are installing, openoffice or libreoffice, make sure you installed the *-pyuno package. (the headless package is already compiled into the core)

それが正しく設定されていることを確認してください: http://your-moodle/admin/search.php?query = unoconv

プロダクションサーバはリスナモードでunoconvを実行することを考慮する必要があります。Install_unoconv #Run_a_unoconv_listenerを参照するか、以下の指示に従ってください。

vi /etc/systemd/system/unoconv.service

次に、以下の設定をコピーして貼り付けます。

[Unit]
Description=Unoconv listener for document conversions
Documentation=https://github.com/dagwieers/unoconv
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
Environment="UNO_PATH=/usr/lib64/libreoffice/program"
ExecStart=/usr/bin/unoconv --listener

[Install]
WantedBy=multi-user.target

そして上記のサービスを有効にして開始します

systemctl enable unoconv.service
systemctl start unoconv.service

あなたのselinuxが有効になっているなら、あなたは設定するべきです

#setsebool -P httpd_execmem on

OS Xにunoconvをインストールする

Mac用のLibreOfficeをダウンロードしてインストールします。残念なことに - LibreOfficeの新しいバージョンは現在unoconv for macと互換性がないので、LibreOffice 4.2(直接ダウンロードリンク - https://downloadarchive.documentfoundation.org/libreoffice/old/4.2.5.2/mac/x86_64/LibreOffice_4)をインストールする必要があります。 .2.5.2_MacOS_x86-64.dmg

unoconv pythonスクリプトの最新版を入手してください。これを行う1つの方法はhttps://brew.sh/ brewを使うことです。

brew install unoconv

まだ行っていない場合は、ghostscriptをインストールしてください。 ghostscriptをインストールする1つの方法はhttps://brew.sh/ brewでもあります

brew install ghostscript

Moodleでパスをunoconvとghostscriptに設定します([ サイト管理]> [サーバ]> [システムパス] )。 brewを使用した場合は、両方とも/ usr / local / binにインストールされます。

LibreOfficeはいくつかの一時ファイルを作成するために現在のユーザのホームディレクトリへの書き込み権限を必要とします。 unoconvがWebサーバーユーザー(_www)として実行されている場合、通常この権限はありません。

これを回避する方法はいくつかあります。1つの方法は、 "_ www"ユーザーに/ Library / WebServerへの書き込みアクセス権を与えることです。

別の解決策は、このユーザーのホームディレクトリが他の場所にあることをLibreOfficeに納得させることです。これは、このコードをunoconv pythonスクリプトの先頭に挿入することによって実行できます。挿入するコード

# Set home to a writable folder. 
os.environ['HOME'] = '/tmp/'                                                                                                        

これは、 "exitcode = 0"の行の直後に36行目に挿入する必要があります。

Windowsへのunoconvのインストール

Windows用のLibreOfficeをダウンロードしてインストールします。 Open Officeも同様に機能しますが、unonconvのドキュメントはLibre Officeに設定されています。

https://github.com/dagwieers/unoconv/releasesから最新バージョンのunoconvスクリプトをダウンロードしてください (zipバージョンをダウンロードしてください )。

ダウンロードしたzipファイルから - 「unoconv-0.7 \ unoconv」というファイルを1つ抽出します(ファイル拡張子なし)。これはunoconvスクリプトです - パッケージ内の他のファイルはどれも必須ではありません。

ダウンロードしたスクリプトの名前をunoconv.pyに変更し 、それをC:¥Program FilesまたはC:¥Program Files(x 86)のいずれかのフォルダーにコピーします。

unoconv.batのようなものunoconv.py名としてそれを同じフォルダにバッチファイルを作成し、それはこれらの内容で、バッチファイルでなければなりません。

@"C:\Program Files\LibreOffice (or Open Office #v)\program\python.exe" c:\unoconv\unoconv.py %*  

次に、あなたはMoodleでパス設定する必要があります。

管理者としてログインし、 [サイトの管理]> [サーバー]> [システムパス]に移動します。

セット:

Path to Ghostscript (pathtogs) C:\Program Files\gs\gsversion\bin\gswin64c.exe  

gswin32.exeまたはgswin64.exeを使用しないでください。これらはコマンドラインプログラムではありません - gswin32c.exeまたはgswin64c.exeを使用してください。

セット:

Path to Python (pathtopython) to C:\Program Files (x86)\OpenOffice v#(or Libra Office v#)\program\python.exe   

どちらのプログラムを使用するかをパスで識別し、GhostscriptとPythonの両方の完全なexe名を含めます。

pathtoステートメントを保存すると、Moodleが必要なファイルと通信している場合は緑色のチェックマークが表示されます。

[サイトの管理]> [プラグイン]> [ドキュメントコンバータ]に移動して[ Unoconv ]を有効にし、[設定]を選択します

パスステートメントを入力します

Path to unoconv document converter : C:\Program Files (x86)\unoconv\unoconv.bat

.batファイルのフルネームを含めてください。

テストのghostscriptとunoconvは、管理者テストページの "サイト管理>プラグイン>活動モジュール>課題>フィードバックプラグイン> PDFに注釈を付ける"で正しく動作しています。

unoconvリスナーを実行する

Unoconvは文書を変換するときにクライアント/サーバープロセスを利用します。デフォルトでは、実行中のサーバープロセスがない場合 - unoconvが実行されるたびに、サーバープロセスを開始し、その要求を送信し、要求が完了したときにサーバープロセスをシャットダウンします。このモードの欠点は、2つの要求が同時に送信された場合、2番目の要求がまだ進行中のときに最初の要求がサーバープロセスをシャットダウンする可能性があり、2番目の変換要求が失敗することです。 unoconvを設定するためのより堅牢な方法は、起動時にサーバプロセスを起動するか、またはスクリプトを実行して監視し、クラッシュした場合は再起動することです。

起動時にunoconvリスナーを起動するには - 起動スクリプトが必要です。異なるオペレーティングシステムとLinuxディストリビューションでは異なる起動スクリプトが使用されます - ただし、ここでは異なるシステム用の起動スクリプトの例をいくつか示します。

Ubuntuベースのシステム用の起動スクリプト

OS X用の起動スクリプト

Debian用のinitスクリプト

CentOS / RedHat 6.x用のinitスクリプト

CentOS / RedHat 7.x用のSystemDサービススクリプト

別のサーバーへの処理をオフロード

オフィスの文書を処理すると、Webサーバーの負荷が増大する可能性があります。これは、サイトの応答性に影響を与える可能性があります。大規模なサイトにunoconvをインストールする場合は、Web要求も処理していないサーバーでunoconvを実行することを検討してください。

これを行う方法:

上記のインストール手順に従って、各Webサーバーとリモートサーバーにunoconvをインストールします。

unoconvが起動時にリモートサーバー上で "--listener"引数で起動され、終了したら監視され再起動されることを確認します(これを行う方法の例についてはDebian initスクリプトを参照してください)。デフォルトでは、unoconvはlocalhost(127.0.0.1)でのみ待機します。他のサーバからリスナプロセスに接続したい場合は、 " - server"引数を付けてunoconvリスナプロセスを起動する必要があります。

リモートサーバー上でリスナーを起動するためのコマンド例(0.0.0.0はすべてのインターフェースで待機します):

unoconv --listener --server 0.0.0.0 --port 2002

Moodle Webサーバとunoconvを実行しているマシンの間のファイアウォールポート2002を開きます。

Webサーバーとunoconvを実行しているマシンとの間でmoodleデータルートを共有します。このフォルダは、すべてのサーバーの同じパスにマウントする必要があります。

リクエストをリモートサーバーに転送するWebサーバーにunoconvのラッパーをインストールします。例:

#!/bin/bash
# Wrapper script for unoconv to forward processing.
# Install to /usr/bin/unoconv-remote with 755 permissions
/usr/bin/unoconv --server=<ip of remote server> "$@"

このラッパースクリプトを指すようにMoodle管理設定でunoconvへのパスを設定します。

追加のリソース

GitHub dagwieers / unoconvには、unoconvのインストールとトラブルシューティングのヒントに関する追加情報があります。

トラブルシューティング

関連情報