このエントリでは、
Forgejoでpandocを使ってdocxを表示する設定方法を示します。
また、あわせてDiffの確認できるように設定します。

Forgejoのセットアップ関連は、過去のエントリを参照ください。

UbuntuLinuxにForgejoをセットアップする手順
https://takemikami.com/2024/03/18/UbuntuLinuxForgejo.html

ForgejoでJupyteNotebook(ipynb)を表示する設定方法
https://takemikami.com/2024/03/23/ForgejoJupyteNotebookipynb.html

試した環境:

  • Ubuntu Linux 22.04.3
  • Forgejo 1.21.7
  • pandoc 3.1.12.3

pandocのセットアップ

Forgejoでdocxを表示するためには、
docx→html変換が必要なので、pandocをインストールします。

以下コマンドでpandocをインストールします。

wget https://github.com/jgm/pandoc/releases/download/3.1.12.3/pandoc-3.1.12.3-linux-amd64.tar.gz
sudo tar zxf pandoc-3.1.12.3-linux-amd64.tar.gz -C /opt

# aptでインストールしたversionは、
# --embed-resourcesオプションが使えなかったので、手動で入れてます

Forgejoにrender commandを設定

Forgejoの設定ファイルに、
ipynvのrender commandにpandocを指定します。

custom/conf/app.ini への追記内容

[markup.docx]
ENABLED = true
FILE_EXTENSIONS = .docx
RENDER_COMMAND = "/opt/pandoc-3.1.12.3/bin/pandoc --embed-resources --from=docx --to=html "
IS_INPUT_FILE = true
RENDER_CONTENT_MODE = no-sanitizer

設定ファイルを修正したら、forgejoを再起動し反映します。

sudo systemctl restart forgejo

ブラウザからForgejoでdocxファイルを開くと、ファイル内容が表示されます。

Diff用のgit設定

Forgejoから呼び出しているgit diffの結果をテキストに変換すれば、
Diff表示画面に差分が表示されるようになるので、
git diffのtextconvでpandocを呼ぶように変更します。

Forgejoから利用するgitの設定については、以下を参考にします。

Git - Config options (git.config) | Configuration Cheat Sheet | Forgejo
https://forgejo.org/docs/latest/admin/config-cheat-sheet/#git---config-options-gitconfig

Forgejoの実行ユーザのgit/attributes設定を、以下のように指定します。

~/.config/git/attributes

*.docx diff=wordx

次のように、custom/conf/app.iniにgitconfigの設定を追記します。
ここではattributeファイルのパス、textconvにpandocの呼び出しを指定しています。

custom/conf/app.ini への追記内容

[git.config]
core.attributesFile = /var/lib/forgejo/.config/git/attributes
diff.wordx.textconv = /opt/pandoc-3.1.12.3/bin/pandoc --from=docx --to=markdown

※ここではforgejoのホームディレクトリは/var/lib/forgejoとしています。

ブラウザからForgejoでdocxの差分表示をすると、
次のようなイメージで差分が表示されます。

差分の表示イメージ

forgejo-diff

この方法では、差分の前後を表示しようとすると、
(git diffの差分表示ではないので)
バイナリファイルがそのまま表示されてしまう問題はありますが。

以上。