ユニバーサルオフィスコンバーター(unoconv)
- ユニバーサルオフィスコンバーター(unoconv)
- Googleドライブコンバーター
内容
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ディストリビューションでは異なる起動スクリプトが使用されます - ただし、ここでは異なるシステム用の起動スクリプトの例をいくつか示します。
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のインストールとトラブルシューティングのヒントに関する追加情報があります。
トラブルシューティング
関連情報
- unoconvインストールはセキュリティ上のリスクがありますか?フォーラムディスカッション