xdwlibでDocuworks9の中のテキストを出力

 今日も見にきてくれて、ありがとう。久しぶりの更新です。そのうちまた更新しますので、また見にきてくださいね。

 おしごとの関連で富士ゼロックスさんのドキュワークスでつくられた文書のテキストを抜き出す必要があったので、Pythonスクリプト作成してみました。帳票出力のプログラムを修正したときに、修正前後の差分をとって、チェックするのに便利です。
ご利用は自己責任でどうぞ。

利用するまでに必要な作業は以下の通りです。

1.Pythonのインストール
  これは、本家のサイトをご覧になってがんばってやってください。
  ぼくの環境は、実行時最新の3.7.4をインストールしました。

2.xdwlibのインストール
  「pip install xdwlib」で完了。3.8.2.0がインストールされました。なぜかインストール時にエラーがでましたけど、正常に利用できました。林秀樹さん、ありがとうございます。

from sys import argv, exit
from os.path import basename, isfile, splitext
from xdwlib import xdwopen

def export_xdwfulltext(input_file):

    BASE_FILENAME , ext = splitext(input_file)
    if ext.lower() != ".xdw":
        print("指定されたファイルの拡張子が.xdwではありません。["+ext+"]")
        input("Hit Enter key.")
        return

    if not isfile(input_file):
        print("指定されたファイルが存在しません。["+input_file+"]")
        input("Hit Enter key.")
        return

    OUTPUT_PATHNAME = BASE_FILENAME + ".txt"

    if isfile(OUTPUT_PATHNAME):
        print("出力先のファイルが既に存在します。["+OUTPUT_PATHNAME+"]")
        answer = input("上書きしますか?(Y/N):")
        if answer.upper()[0] != "Y":
            print("処理を中断しました。")
            return

    with open(OUTPUT_PATHNAME,"w",encoding="utf-8") as f,\
         xdwopen(input_file) as doc:
        for p in doc:
            f.write(p.fulltext())
            f.write("\n")


if __name__ == '__main__':

    if len(argv) < 2:
        print(basename(argv[0]),"は、ドキュワークスで出力されたxdwファイルの中のテキストを出力するプログラムです。")
        print("拡張子が.xdwのファイルのみ対象とし、同ファイル名の.txtファイルとして出力します。")
        print("使い方1:",basename(argv[0]),"hoge.xdw ...")
        print("使い方2:",basename(argv[0]),"に、ファイルをドラッグ&ドロップ")
        input("Hit Enter key.")
        exit

    for f in argv[1:]:
        export_xdwfulltext(f)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です