basedocument

basedocument モジュールは、DocuWorks 文書およびバインダー内文書を総合して扱います。

BaseDocument オブジェクト

BaseDocument クラスは、Document クラス (DocuWorks 文書) および DocumentInBinder クラス (バインダー内文書) の基底クラスです。

BaseDocument オブジェクトに対して添字表記を用いると、(バインダー内) 文書に含まれるページを Page オブジェクトとして取得できます。また、添字にスライスを指定すると、連続するページ群を PageCollection オブジェクトとして取得できます。

BaseDocument クラスは、イテレータプロトコルをサポートしており、Page オブジェクトを順次取得できます。

インスタンスメソッド

annotation_text()
(バインダー内) 文書内にあるすべてのテキスト/リンク/日付印アノテーションに含まれているテキストデータ (アノテーションテキスト) を返します。アノテーション間は '\v' (0x0b) で、ページ間は '\f' (0x0c) で区切られます。返されるテキストに含まれる部分は、テキストアノテーションの場合は設定された文字列の全部、リンクアノテーションの場合はキャプション文字列の全部、日付印アノテーションの場合は (上欄に設定された文字列) + ' <DATE> ' + (下欄に設定された文字列) となります。返されるテキストはページ順に並んでいます。ただし、アノテーションの順序は内部状態によっていて、制御できません。 

append(obj)
obj Page オブジェクト、PageCollection オブジェクト、BaseDocument オブジェクトまたは DocuWorks 文書を示すパス名 (str または unicode) です。obj を (バインダー内) 文書の末尾に追加します。insert(self.pages, obj) と同等です。insert() を参照してください。

append_image(input_path, **kw)
input_path で指定するファイルから画像を読み込んでページを生成し、(バインダー内) 文書の末尾に追加します。insert_image(self.pages, input_path, **kw) と同等です。insert_image() を参照してください。

bitmap(pos)
(バインダー内) 文書の pos 番目 (0 から始まります。) のページを画像化して Bitmap オブジェクトで返します。アノテーションを表示する設定になっていれば、アノテーションも画像に含めます。Page オブジェクトのインスタンスメソッド bitmap() を参照してください。

content_text(type=None)
(バインダー内) 文書内のページタイプが type ('APPLICATION' または 'IMAGE'。省略時は両方) であるすべてのページに含まれるページテキスト (アプリケーションテキストまたは OCR テキスト) を返します。返されるテキストはページ順に並んでいて、ページ間は'\f' (0x0c) で区切られます。ただし、OCR テキストについては、OCR 処理を行わないと得られません。 

delete(pos)
(バインダー内) 文書の pos 番目 (0 から始まります。) のページを削除します。pos 番目よりも後ろのページのページ位置は、順次繰り上げられます。
del self[pos] としても同じです。

dirname()
(バインダー内) 文書が存在するディレクトリのパス名を返します。

export(pos, path=None)
ページを別ファイルに書き出します。
pos
はページ番号です (0 から始まります)。path は書き出し先のパス名です。path を設定しない場合は、self.name'_Pn' (n は pos + 1) を付加したもの (os.path.join(self.dir, '%s_P%d.xdw' % (self.name, self.pos + 1))) となります。
実際に書き出されたパス名を返します。

export_image(pos, path=None, pages=1, dpi=600, color='COLOR', format=None, compress='NORMAL', direct=False)
(バインダー内) 文書のページ (単独または連続する複数ページ) を画像ファイルへ書き出します。
pos はページ番号です (0 から始まります)。int の場合は単独ページを指定したことになります。連続する複数ページを指定するには、2 要素のタプル (start, stop) またはリストを指定します。この場合、start ページから stop - 1 ページまでが書き出されます。さらに、pages が指定されていたとしても無視されます。
path は書き出し先のパス名です。すでに存在する場合は派生したパス名が書き出し先になります。
pages は書き出すページ数です。posint である場合、第 pos ページ (0 から始まります) から pos + pages - 1 ページまでが書き出されます。
dpi は書き出される画像の解像度です。単位は DPI です。10~600 が有効です。
color は書き出される画像の色数の指定です。'COLOR', 'MONO' または 'MONO_HIGHQUALITY'(グレースケール) で指定します (小文字でもかまいません)。
format は書き出される画像のデータ形式です。'BMP', 'TIFF', 'JPEG' または 'PDF' で指定します (小文字でもかまいません)。
compress は書き出される画像の圧縮形式です。format'BMP' である場合は、指定は無視されます。format'TIFF' である場合は、'NOCOMPRESS', 'PACKBITS', 'JPEG', 'JPEG_TTN2' または 'G4' を指定します。format'JPEG' である場合は、'NORMAL', 'HIGHQUALITY' または 'HIGHCOMPRESS' を指定します。format'PDF' である場合は、'NORMAL', 'HIGHQUALITY', 'HIGHCOMPRESS', 'MRC_NORMAL', 'MRC_HIGHQUALITY' または 'MRC_HIGHCOMPRESS' を指定します。
direct が True である場合は、ページの画像 (アノテーションやページフォームは含みません) を内部の圧縮イメージのまま書き出します。このため、処理が高速です。生成される画像の形式は内部状態に依存して TIFF, JPEG または PDF となり、生成される画像ファイルの拡張子はそれぞれ '.tiff''.jpeg' または '.pdf' となります。画像の向きも内部状態に依存し、DocuWorks Viewer (Lite) で見たときとは異なる場合があります。画像の向きは、self.page(pos).degree で取得できます。
実際に書き出しを行ったファイルのパス名を返します。

find(pattern, func=None)
(バインダー内) 文書のすべてのページについて、ページを引数にとる関数 func の戻り値が pattern にマッチするかどうかを調べ、マッチしたページだけを集めた PageCollection オブジェクトを返します。pattern は str または unicode、あるいは re モジュールで使用できる正規表現オブジェクトです。func は 1 引数の関数で、引数は Page オブジェクト、戻り値は引数に対応した文字列であることが必要です。指定しないときは、self.fulltext と同じです。

find_annotation_text(pattern)
(バインダー内) 文書のすべてのページについて、各ページのアノテーションテキスト (全体) が pattern にマッチするかどうかを調べ、マッチしたページだけを集めた PageCollection オブジェクトを返します。 

find_content_text(pattern, type=None)
(バインダー内) 文書のすべてのページについて、各ページのアプリケーションテキストまたは OCR テキスト (全体) が pattern にマッチするかどうかを調べ、マッチしたページだけを集めた PageCollection オブジェクトを返します。 type を指定すると、対象となるページの種類 ('APPLICATION', 'IMAGE', 'NONE') を限定します。

find_fulltext(pattern)
(バインダー内) 文書のすべてのページについて、各ページのアプリケーションテキストまたは OCR テキスト (全体) およびアノテーションテキストが pattern にマッチするかどうかを調べ、マッチしたページだけを集めた PageCollection オブジェクトを返します。 

fulltext()
(バインダー内) 文書のすべてのページテキストおよびテキスト/リンク/日付印アノテーションに含まれているアノテーションテキストを返します。返されるテキストはページ順に並んでいて、ページごとに '\f' (0x0c) で区切られ、ページ内では最初にページテキストが置かれ、以後は '\v' (0x0b) で区切られながらアノテーションテキストが続きます。アノテーションの順序は内部状態によっていて、制御できません。

insert(pos, obj)
obj Page オブジェクト、PageCollection オブジェクト、BaseDocument オブジェクトまたは DocuWorks 文書を示すパス名 (str または unicode) です。obj を (バインダー内) 文書の pos 番目 (0 から始まります。) に挿入します。obj に Binder オブジェクトや DocuWorks バインダーを示すパス名を指定することはできません。挿入位置以降にあったページのページ位置は、順次繰り下げられます。 

insert_image(pos, input_path, fitimage='FITDEF', compress='NORMAL', zoom=0, size=Point(0, 0), align=('CENTER', 'CENTER'), maxpapersize='DEFAULT')
画像ファイルを読み込み、(バインダー内) 文書の指定位置にイメージページとして挿入します。
pos はページ番号です (0 から始まります)。挿入位置以降にあったページのページ位置は、順次繰り下げられます。
input_path は読み込むべき画像ファイルです。TIFF, BMP, JPEG が読み込み可能ですが、形式によっては読み込めないことがあります。
fitimage はページサイズの指定です。'FITDEF'(イメージが収まる定型サイズ), 'FIT'(イメージサイズそのもの), 'FITDEF_DIVIDEBMP'(FITDEF と同様ですが、BMP 形式の画像が入力されそれが最大ページサイズ (2A0 または A3) を超過している場合は分割して複数ページにします), 'USERDEF'(ユーザー指定サイズ) または 'USERDEF_FIT'(ユーザー指定サイズですが、画像がこれより大きい場合は指定サイズに収まるよう縮小されます) です (小文字でもかまいません)。
compress はカラーイメージの圧縮方式です。'NORMAL'(JPEG標準), 'LOSSLESS'(劣化なし), 'HIGHQUALITY'(JPEG高画質), 'HIGHCOMPRESS'(JPEG高圧縮), 'MRC_NORMAL'(MRC圧縮標準), 'MRC_HIGHQUALITY'(MRC圧縮高画質) または 'MRC_HIGHCOMPRESS'(MRC圧縮高圧縮) で指定します (小文字でもかまいません)。
zoom は読み込み時の拡大 (・縮小) 率です。単位はパーセントです。1/1000 % 未満は無視されます。0 を指定すると、100% (等倍) と同じ意味になります。
size は 生成されるページの大きさです。fitimage'USERDEF' または 'USERDEF_FIT' の場合に有効です。Point オブジェクト (単位はミリメートル)、int または str で指定します。int の場合は、1=A3R, 2=A3, 3=A4R, 4=A4, 5=A5R, 6=A5, 7=B4R, 8=B4, 9=B5R, 10=B5 になります。str の場合は、'A3R', 'A3', 'A4R', 'A4', 'A5R', 'A5', 'B4R', 'B4', 'B5R' または 'B5' で指定します。
align は 2 要素のタプル (horiz, vert) でページ内の画像配置を指定します。horiz'CENTER', 'LEFT' または 'RIGHT' です。vert'CENTER', 'TOP' または 'BOTTOM' です。いずれも小文字でもかまいません。
maxpapersize は 最大ページサイズで、'DEFAULT', 'A3' または '2A0' です。DocuWorks 7.0 以上では、'DEFAULT''2A0' は同じ結果となります。

page(pos)
(バインダー内) 文書の pos 番目 (0 から始まります。) のページを表す Page オブジェクトを返します。

rasterize(pos)
pos はページ番号です (0 から始まります)。ページがアプリケーションページである場合は、イメージページに置き換えます。アプリケーションページでない場合は、何もしません。

rotate(pos, degree=0, auto=False)
ページを回転します。pos はページ番号です (0 から始まります)。degree はページの中央を中心とした時計回りの回転角で、単位は度です。auto が True である場合は、OCR 処理用に自動正立処理を行います。
degree に指定できる値は、PIL (Python Imaging Library) が利用できる場合は任意の整数です。PIL が利用できない場合は、90 の倍数のみ指定できます。
(注) degree が 90 の倍数でない場合、ページを画像にして処理を進めます。この結果、アノテーションは画像の一部となり、アプリケーションテキストや OCR テキストも失われます。

view(light=False, wait=True)
(バインダー内) 文書の内容を DocuWorks Viewer または DocuWorks Viewer Light のいずれかで閲覧します。lightが真である場合は、DocuWorks Viewer Light を優先して利用します。wait が真である場合は、DocuWorks Viewer (Light) が終了するのを待ちます。wait が偽である場合は、DocuWorks Viewer (Light) を起動したらすぐに制御が戻り、(proc, temp) という 2 要素からなるタプルを返します。この場合、proc はsubprocess モジュールが提供する Popen オブジェクトであり、temp は DocuWorks Viewer (Light) で閲覧中の一時ファイルのパス名です。 
(注) wait を False とした場合は、temp およびその親ディレクトリは、このメソッドを呼び出した側が必要がなくなった時点で消去してください。
proc, temp = doc.view(wailt=False)
# ... wait for proc.poll() != None ...
os.remove(temp)
os.rmdir(os.path.dirname(temp))  # shutil.rmtree() を利用してもよい

Comments