ワードアシスタント
1.システム機能の構造
2.システムビジネスプロセス
3.開発ツールの準備
- Python組み込みモジュール:os、_thread、sys、codecs、re
- サードパーティモジュール:PyQt5 / PySide2、pyqt5-tools、PyPDF2、pywin32
4.フォルダ構成構造
- wordtopdf --------プロジェクトフォルダ
- 画像--------画像が保存されているフォルダ
- ツール--------ツール
- ui -------- UIインターフェイスファイルが保存されるフォルダー
- venv --------仮想環境
- listWindow.py --------一般的なカタログウィンドウファイルを抽出します
- mainWindow.py --------メインウィンドウファイル
- pageWindow.py --------ページ番号フォームファイルを抽出します
- transformWindow.py -------- WordからPDFへのフォームファイル
- wordtopdf.py --------メインプロジェクトファイル
5.ツールモジュールの作成
①トラバーサルディレクトリモジュールを作成する
- ツールフォルダにcommon.pyファイルを作成します
- ソフトウェアはディレクトリ内のファイルをトラバースする必要があることが多いため、コードの再利用を考慮して、サブ関数を作成します
from win32com import client as wc
from docx2pdf import convert
import shutil
import os
def getfilenames(documentname,doc_path):
"""
documentname放有文件夹的名称
doc_path其中doc格式的文件你想移到那个位置
"""
filelist_out = []
for filename in os.listdir(documentname):
fi_d = os.path.join(documentname,filename)
file_ext = os.path.splitext(filename)[1]
if file_ext == '.docx' or '.doc':
if file_ext == '.docx':
filelist_out.append(fi_d)
if file_ext == '.doc':
this_fullname = os.path.join(documentname,filename)
w = wc.Dispatch('Word.Application')
doc = w.Documents.Open(this_fullname)
next_fullname = os.path.splitext(this_fullname)[0]+'.docx'
doc.SaveAs(next_fullname,16)
doc.Close()
shutil.move(this_fullname,r'E:\签收单\1\新建文件夹')
filelist_out.append(next_fullname)
if __name__ == '__main__':
getfilenames(r'E:\签收单\1',r'E:\签收单\1\新建文件夹')
②Word文書をPDFに変換するwordtopdf1モジュールを書く
"""研究书上的例子三天头都大了,
就是不明白,最后在b站有个老师提到了问题的关键,
下面这串数字的意思是:你正版office的序列号,哈哈
encache.EnsureModule('{00020905-0000-0000-C000-0000000046}',0,8,4)
"""
- モジュールを使用する:doc2pdf、pywin32
- インストール方法:pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple/ docx2pdf
pip install pywin32 == 223
- pywin32のインストール時に、いくつかの小さな問題が発生する可能性があります。直接インストールできない場合は、このURLをクリックしてバージョン223を直接ダウンロードできます。
- https://sourceforge.net/projects/pywin32/files/pywin32/
リンク:pywin32ダウンロードリンク。
import os
from docx2pdf import convert
import common
import win32api
def wordtopdf2(filelist,targetfile):
try:
for fullfilename in filelist:
filepath,filename = os.path.split(fullfilename)
sortfilename = os.path.splitext(filename)
pdfname = sortfilename[0]+'.pdf'
pdfpath = os.path.join(targetfile,pdfname)
convert(fullfilename, pdfpath)
except Exception as e:
print(e)
filelist = common.getfilenames(r'E:\签收单\1',r'E:\签收单\1\新建文件夹')
targetfile = r'E:\签收单\1'
wordtopdf2(filelist,targetfile)