eDocArrangement2 ヘルプ / 共通マクロ書式
DocuWorks文書(XDW/XBD)をオープンします。オープンした文書は、XDW文書オープン処理名で識別され、他のDocuWorksマクロから参照できます。
フルパスファイル名にはオープンするDocuWorks文書のフルパスを指定します。
オプションにはオープン時の動作を指定するユーザーデータ名を指定します。オプションは省略可能で、省略した場合は既定値が使用されます。
オプション(ユーザーデータ)の属性
|
名前 |
値 |
説明 |
|---|---|---|
|
OpenMode |
読み込み専用 読み書き可能 |
オープンモードを指定します。既定値は「読み書き可能」です。 |
|
Extract |
する しない |
文書またはオリジナルデータを展開するかどうかを指定します。バインダーの場合はバインダー内の文書を展開し、ドキュメント・入れ物の場合はオリジナルデータを展開します。既定値は「しない」です。 |
|
BinderSize |
A3縦 A3横 A4縦 A4横 A5縦 A5横 B4縦 B4横 B5縦 B5横 ページ最大サイズ |
バインダーを新規作成する場合のサイズを指定します。既定値は「ページ最大サイズ」です。 |
|
BinderColor |
紺 緑 青 黄 オレンジ 赤 赤紫 ピンク 紫 茶 オリーブ 黄緑 水 クリーム 灰 白 |
バインダーを新規作成する場合のカラーを指定します。既定値は「青」です。 |
例1 処理中ファイルをオープンする(既定のオプション)。
{%DW_OPEN(XDW文書オープン1,{%GET(FullPathFileName)})}
例2 読み書き可能モードでオープンし、文書またはオリジナルデータを展開する。
{%SET_U(DwOpenOption,OpenMode,読み書き可能)}
{%SET_U(DwOpenOption,Extract,する)}
{%DW_OPEN(XDW文書オープン1,{%GET(FullPathFileName)},DwOpenOption)}
例3 読み込み専用モードでオープンする。
{%SET_U(DwOpenOption,OpenMode,読み込み専用)}
{%DW_OPEN(XDW文書オープン1,{%GET(FullPathFileName)},DwOpenOption)}
例4 バインダーサイズとカラーを指定してオープンする。バインダーを新規作成する場合に有効。
{%SET_U(DwOpenOption,OpenMode,読み書き可能)}
{%SET_U(DwOpenOption,BinderSize,A4縦)}
{%SET_U(DwOpenOption,BinderColor,紺)}
{%DW_OPEN(XDW文書オープン1,{%GET(FullPathFileName)},DwOpenOption)}
DW_OPENでオープンされたDocuWorks文書をクローズします。XDW文書オープン処理名には、DW_OPENで指定したオープン処理名を指定します。
オプションにはクローズ時の動作を指定するユーザーデータ名を指定します。オプションは省略可能で、省略した場合は既定値が使用されます。
オプション(ユーザーデータ)の属性
|
名前 |
値 |
説明 |
|---|---|---|
|
SaveFile |
保存する 保存しない |
クローズ時に文書を保存するかどうかを指定します。既定値は「保存する」です。 |
|
PositionToAddBinder |
先頭 末尾 |
バインダー内文書やオリジナルデータを展開して操作した場合の、ファイル追加位置を指定します。既定値は「末尾」です。 |
例1 文書を保存してクローズする(既定のオプション)。
{%DW_CLOSE({%DW_GET(OpenName)})}
例2 文書を保存してクローズする。
{%SET_U(DwCloseOption,SaveFile,保存する)}
{%DW_CLOSE({%DW_GET(OpenName)},DwCloseOption)}
例3 文書を保存せずにクローズする。
{%SET_U(DwCloseOption,SaveFile,保存しない)}
{%DW_CLOSE({%DW_GET(OpenName)},DwCloseOption)}
例4 展開したファイルをバインダーの先頭に追加して保存してクローズする。
{%SET_U(DwCloseOption,SaveFile,保存する)}
{%SET_U(DwCloseOption,PositionToAddBinder,先頭)}
{%DW_CLOSE({%DW_GET(OpenName)},DwCloseOption)}
例5 DW_OPENとDW_CLOSEの組み合わせ例。文書をオープンし、処理後に保存してクローズする。
{%SET_U(DwOpenOption,OpenMode,読み書き可能)}
{%DW_OPEN(XDW文書オープン1,{%GET(FullPathFileName)},DwOpenOption)}
ここで文書に対する処理を行う
例: {%DW_DOCUMENT_INFO({%DW_GET(OpenName)},DocInfo)}
{%SET_U(DwCloseOption,SaveFile,保存する)}
{%DW_CLOSE({%DW_GET(OpenName)},DwCloseOption)}
文書情報を取得します。XDW文書オープンでオープンされている文書の文書情報を取得します。結果格納用ユーザーデータ名には取得した情報を格納するユーザーデータ名を指定します。
結果格納用ユーザーデータの内容
|
名前 |
値 |
||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Pages |
文書内の総ページ数。バインダの場合はバインダ内の全文書のページ数合計。 |
||||||||||||||||||
|
Version |
DocuWorksファイルのバージョン。
|
||||||||||||||||||
|
OriginalData |
オリジナルデータの数。バインダの場合はバインダ内の全文書のオリジナルデータ数合計。 |
||||||||||||||||||
|
DocType |
ドキュメントタイプ。以下の何れか。 ドキュメント バインダー |
||||||||||||||||||
|
Permission |
認可情報。以下の何れか。複数設定されている場合は、「文書の編集|アノテーションの編集」のように|で区切られて取得される。 文書の編集 アノテーションの編集 印刷 転記 |
||||||||||||||||||
|
ShowAnnotations |
アノテーションの表示状態。以下の何れか。 非表示 表示 |
||||||||||||||||||
|
Documents |
バインダー内の文書数。バインダーの場合のみ意味のある値として取得される。 |
||||||||||||||||||
|
BinderColor |
バインダーの色。以下の何れか。バインダーの場合のみ取得される。 紺 緑 青 黄 オレンジ 赤 赤紫 ピンク 紫 茶 オリーブ 黄緑 水 クリーム 灰 白 |
||||||||||||||||||
|
BinderSize |
バインダーのサイズ。以下の何れか。バインダーの場合のみ取得される。 ページ最大サイズ A3縦 A3横 A4縦 A4横 A5縦 A5横 B4縦 B4横 B5縦 B5横 |
例1 文書オープン1でオープンされたXDW文書から文書情報を取得する。
{%DW_DOCUMENT_INFO(XDW文書オープン1,DocInfo)}
{%WRITE_LOG(
Pages={%GET_USER_DATA(DocInfo,Pages)}
Version={%GET_USER_DATA(DocInfo,Version)}
OriginalData={%GET_USER_DATA(DocInfo,OriginalData)}
DocType={%GET_USER_DATA(DocInfo,DocType)}
Permission={%GET_USER_DATA(DocInfo,Permission)}
ShowAnnotations={%GET_USER_DATA(DocInfo,ShowAnnotations)}
Documents={%GET_USER_DATA(DocInfo,Documents)}
BinderColor={%GET_USER_DATA(DocInfo,BinderColor)}
BinderSize={%GET_USER_DATA(DocInfo,BinderSize)}
)}
結果
Pages=2
Version=7
OriginalData=0
DocType=ドキュメント
Permission=文書の編集|アノテーションの編集|印刷|転記
ShowAnnotations=表示
Documents=0
BinderColor=
BinderSize=
例2 文書オープン1でオープンされたバインダ文書から文書情報を取得する。
{%DW_DOCUMENT_INFO(XDW文書オープン1,DocInfo)}
{%WRITE_LOG(
Pages={%GET_USER_DATA(DocInfo,Pages)}
Version={%GET_USER_DATA(DocInfo,Version)}
OriginalData={%GET_USER_DATA(DocInfo,OriginalData)}
DocType={%GET_USER_DATA(DocInfo,DocType)}
Permission={%GET_USER_DATA(DocInfo,Permission)}
ShowAnnotations={%GET_USER_DATA(DocInfo,ShowAnnotations)}
Documents={%GET_USER_DATA(DocInfo,Documents)}
BinderColor={%GET_USER_DATA(DocInfo,BinderColor)}
BinderSize={%GET_USER_DATA(DocInfo,BinderSize)}
)}
結果
Pages=2
Version=7
OriginalData=0
DocType=バインダー
Permission=文書の編集|アノテーションの編集|印刷|転記
ShowAnnotations=表示
Documents=2
BinderColor=黄
BinderSize=ページ最大サイズ
バインダー内の文書情報を取得します。XBD文書オープンでオープンされているバインダー内の文書情報を取得します。結果格納用ユーザーデータ名には取得した情報を格納するユーザーデータ名を指定します。
本マクロはバインダー以外のファイルに対して実行するとエラーとなります。
結果格納用ユーザーデータの内容は、DW_DOCUMENT_INFOで取得される情報に加え、以下の情報がセットされます。
|
第2キー |
名前 |
値 |
|---|---|---|
|
文書番号(1~) |
DocumentName |
文書内の文書名。 |
|
第2キー |
第3キー |
名前 |
値 |
|---|---|---|---|
|
文書番号(1~) |
SerialPageNumber |
文書のページ番号(1~) |
バインダーの通しページ番号 |
例1 文書オープン1でオープンされたバインダ文書から文書情報を取得する。
{%DW_DOCUMENT_INFO_IN_BINDER(XBD文書オープン1,DocInfo)}
{%LOOP L1 {%GET_USER_DATA_KEY_COUNT(DocInfo)}(
{%WRITE_LOG(DocumentName:{%GET_U(DocInfo,[L_IDX(L1)],DocumentName)})}
{%WRITE_LOG(Pages:{%GET_U(DocInfo,[L_IDX(L1)],Pages)})}
{%WRITE_LOG(Version:{%GET_U(DocInfo,[L_IDX(L1)],Version)})}
{%WRITE_LOG(ページ1のバインダー通し番号:{%GET_U(DocInfo,[L_IDX(L1)],SerialPageNumber,1)})}
)}
結果
DocumentName:文書1.xdw
Pages:2
Version:9
ページ1のバインダー通し番号:1
DocumentName:文書2.xdw
Pages:1
Version:9
ページ1のバインダー通し番号:3
ページ情報を取得します。XDW文書オープンでオープンされている文書から、引き数で指定されたページの情報を取得します。ページを省略した場合はページの繰り返し処理の現在のページが対象となります。結果格納用ユーザーデータ名には取得した情報を格納するユーザーデータ名を指定します。
本マクロはXDW文書のページの繰り返し処理の中のマクロ実行に記述してください。(ページを省略した場合)

ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
結果格納用ユーザーデータの内容
|
キー |
値 |
|---|---|
|
Width |
ページの横幅。 |
|
Height |
ページの縦幅。 |
|
PageType |
ページの種類。以下の何れか。 イメージ アプリケーション 新規作成 |
|
HorRes |
水平方向の解像度。ページタイプが新規作成の場合は意味を持たない。 |
|
VerRes |
垂直方向の解像度。ページタイプが新規作成の場合は意味を持たない。 |
|
CompressType |
圧縮方式。以下の何れか。ページタイプがアプリケーション、新規作成の場合は意味を持たない。 標準 劣化無圧縮 劣化有高画質JPEG 劣化有高圧縮JPEG 圧縮なし 外部JPEG PACKBITS G4 劣化有標準MRC 劣化有高画質MRC 劣化有高圧縮MRC 外部MRC JPEG_TTN2 |
|
Annotations |
ページ内のアノテーションの数。 |
|
Degree |
回転角度。以下の何れか。ページタイプが新規作成の場合は意味を持たない。 0度 90度 180度 270度 |
|
OrgWidth |
元データのページの横幅。不明な場合は0。ページタイプが新規作成の場合は意味を持たない。 |
|
OrgHeight |
元データのページの縦幅。不明な場合は0。ページタイプが新規作成の場合は意味を持たない。 |
|
OrgHorRes |
元データの水平方向の解像度。不明な場合は0。ページタイプが新規作成の場合は意味を持たない。 |
|
OrgVerRes |
元データの垂直方向の解像度。不明な場合は0。ページタイプが新規作成の場合は意味を持たない。 |
|
ImageWidth |
元データの水平方向のピクセル数。ページタイプがアプリケーション、新規作成の場合は意味を持たない。 |
|
ImageHeight |
元データの垂直方向のピクセル数。ページタイプがアプリケーション、新規作成の場合は意味を持たない。 |
例1 文書オープン1でオープンされたXDW文書の現在のページからページ情報を取得する。
{%DW_PAGE_INFO(XDW文書オープン1,PageInfo)}
{%WRITE_LOG(
Width={%GET_USER_DATA(PageInfo,Width)}
Height={%GET_USER_DATA(PageInfo,Height)}
PageType={%GET_USER_DATA(PageInfo,PageType)}
HorRes={%GET_USER_DATA(PageInfo,HorRes)}
VerRes={%GET_USER_DATA(PageInfo,VerRes)}
CompressType={%GET_USER_DATA(PageInfo,CompressType)}
Annotations={%GET_USER_DATA(PageInfo,Annotations)}
Degree={%GET_USER_DATA(PageInfo,Degree)}
OrgWidth={%GET_USER_DATA(PageInfo,OrgWidth)}
OrgHeight={%GET_USER_DATA(PageInfo,OrgHeight)}
OrgHorRes={%GET_USER_DATA(PageInfo,OrgHorRes)}
OrgVerRes={%GET_USER_DATA(PageInfo,OrgVerRes)}
ImageWidth={%GET_USER_DATA(PageInfo,ImageWidth)}
ImageHeight={%GET_USER_DATA(PageInfo,ImageHeight)}
)}
結果
Width=210
Height=297
PageType=イメージ
HorRes=204
VerRes=204
CompressType=劣化無圧縮
Annotations=3
Degree=0度
OrgWidth=215.16
OrgHeight=293.93
OrgHorRes=204
OrgVerRes=98
ImageWidth=1728
ImageHeight=1134
ページカラー情報を取得します。XDW文書オープンでオープンされている文書から、引き数で指定されたページのカラー情報を取得します。ページを省略した場合はページの繰り返し処理の現在のページが対象となります。結果格納用ユーザーデータ名には取得した情報を格納するユーザーデータ名を指定します。
ページカラー情報の取得はページの属性情報取得に比べて、遅いです。場合によっては1秒以上かかる場合があります。
本マクロはXDW文書のページの繰り返し処理の中のマクロ実行に記述してください。(ページを省略した場合)

ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
結果格納用ユーザーデータの内容
|
キー |
値 |
|---|---|
|
Color |
ページのカラー。以下の何れか。 白黒 カラー |
|
ImageDepth |
ピクセル当たりのビット数。イメージから作成されたページでない場合は0となる。 |
Colorはページの見た目が白黒か色が付いているかを表すもので、画像の形式(ピクセル当たりのビット数)ではありません。グレースケールのページもColorは「白黒」になります。画像の形式で判定したい場合はImageDepthを使用してください。
同一の原稿を各形式に変換した場合の取得値
|
ページの種類 |
Color |
ImageDepth |
|---|---|---|
|
白黒2値 |
白黒 |
1 |
|
グレースケール |
白黒 |
8 |
|
パレット(256色) |
白黒 |
8 |
|
白黒の原稿をカラー形式で保存したページ |
白黒 |
24 |
|
色が付いている原稿 |
カラー |
24 |
DW_REDUCE_PAGE_NOISEはImageDepthが1のページのみ処理可能です。Colorが「白黒」であることだけを条件にすると、グレースケール(ImageDepth=8)やカラー形式で保存された白黒の原稿(ImageDepth=24)でエラーとなります。ColorとImageDepthの両方で判定してください。
例1 文書オープン1でオープンされたXDW文書の現在のページからページカラー情報を取得する。
{%DW_PAGE_COLOR_INFO(XDW文書オープン1,PageColorInfo)}
{%WRITE_LOG(
Color={%GET_USER_DATA(PageColorInfo,Color)}
ImageDepth={%GET_USER_DATA(PageColorInfo,ImageDepth)}
)}
結果
Color=白黒
ImageDepth=1
処理中ページのカウンタを取得します。本マクロはページの繰り返しの中で使用できます。
例1 処理中ページのカウンタを取得します。以下の例は、ページの繰り返し処理で、3ページ番目を処理した場合のログ結果です。
{%WRITE_LOG({%DW_GET(PageLoopCount)})}
結果
3
処理中ファイルのページ数を取得します。本マクロはページの繰り返しの中で使用できます。ページの繰り返し処理パネルでは使用できません。DW_DOCUMENT_INFOのPagesを参照してください。
例1 処理中ファイルのページ数を取得します。以下の例は、オープン中のXDWファイルのページ数が5の場合のログ結果です。
{%WRITE_LOG({%DW_GET(PageCount)})}
結果
5
ページの幅(mm)を取得します。本マクロはページの繰り返しの中で使用できます。ページの繰り返し処理パネルでは使用できません。DW_PAGE_INFOのWidthを参照してください。
例1 処理中ファイルのページの幅を取得します。以下の例は、オープン中のXDWファイルのカレントページの幅を取得します。
{%WRITE_LOG(幅:{%DW_GET(PageWidth)})}
結果
幅:210
ページの高さ(mm)を取得します。本マクロはページの繰り返しの中で使用できます。ページの繰り返し処理パネルでは使用できません。DW_PAGE_INFOのHeightを参照してください。
例1 処理中ファイルのページの高さを取得します。以下の例は、オープン中のXDWファイルのカレントページの高さを取得します。
{%WRITE_LOG(高さ:{%DW_GET(PageHeight)})}
結果
高さ:297
現在オープンされているXDW文書オープン処理名を取得します。同時に複数オープンされている場合は最後にオープンされたXDW文書オープン処理名を取得します。
例1 オープン中のXDW文書処理名を使って、文書属性を設定する。
{%DW_SET_DOCUMENT_ATTRIBUTE({%DW_GET(OpenName)},処理日,{%DATE(yyyy/MM/dd)},Date)}
用紙サイズを返却します。
引数の幅、高さには用紙の幅と高さを指定します。誤差範囲には、幅と高さの誤差の範囲をしていします。すべてミリ単位で指定します。
通常は幅と高さには、ページ幅取得マクロ({%DW_GET(PageWidth)})、ページ高さ取得マクロ({%DW_GET(PageHeight)})又は、DW_GET_PAGE_INFOマクロで取得したページや元データの幅や高さを指定します。
返却される用紙サイズは、A0~A6,B0~B6,該当なしの何れかになります。用紙サイズの後ろに縦、及び横の文字がカンマ区切りで付加されて返却されます。
例えば、用紙サイズがA4縦の場合には、「A4,縦」という文字が返却されます。定義済の用紙サイズの何れにも該当しない場合は、「該当なし」という文字が返却されます。
用紙の判定は、引き数の用紙サイズ定義ファイルを省略した場合、インストールフォルダにあるPaperSize.iniに記述されている数値を基に行われます。用紙サイズの定義を変更したい場合は、PaperSize.iniをユーザーフォルダ等にコピーして変更してください。コピーしたファイルのパスを引数の用紙サイズ定義ファイルに指定します。
例1 処理中ページの用紙サイズと向きを表示する。(±10ミリを誤差の許容範囲とする。)
{%IF({%DW_GET_PAPER_SIZE({%DW_GET(PageWidth)},{%DW_GET(PageHeight)},10)}=該当なし,
{%SET_U(属性,用紙サイズ,該当なし)}
,
{%SPLIT({%DW_GET_PAPER_SIZE({%DW_GET(PageWidth)},{%DW_GET(PageHeight)},10)},|,,用紙情報)}
{%SET_U(属性,用紙サイズ,{%GET_U(用紙情報,1)})}
{%SET_U(属性,用紙向き,{%GET_U(用紙情報,2)})}
)}
{%WRITE_LOG(用紙サイズ:{%GET_U(属性,用紙サイズ)})}
{%WRITE_LOG(用紙向き:{%GET_U(属性,用紙向き)})}
XDW文書オープン処理名で指定されたDocuWorks文書に、文書属性を設定します。
属性名は、255文字以内で指定してください。 属性値は、指定した型に適した文字列を指定します。型に適合しない文字列を指定した場合は、エラーとなります。
型には、"Integer" (数値型), "String" (文字列型)[既定値], "Date" (日付型), "Bool" (真偽値型)の何れかが指定できます。 型が、日付型の場合は、「YYYY/MM/DD」の様に、年/月/日のフォーマットで指定します。 真偽値型では、「TRUE」(有)又は、「FALSE」(無)を指定します。
型は省略可能です。省略した場合には、文字列型が選択されます。
属性名に以下の名前を指定した場合は、概要タブの各項目を設定できます。
|
名前 |
内容 |
|---|---|
|
%Title |
タイトル |
|
%Subject |
サブタイトル |
|
%Author |
作成者 |
|
%Keywords |
キーワード |
|
%Comments |
コメント |
例1 1番目に取得したQRコードの内容を「文書名」という属性名で文書属性に設定する。
{%DW_SET_DOCUMENT_ATTRIBUTE(XDW文書オープン1,文書名,{%GET_U(QRコード読み取り1,1,Data)})}
例2 システム日付を「処理日」という属性名で文書属性に設定する。
{%DW_SET_DOCUMENT_ATTRIBUTE(XDW文書オープン1,処理日,{%DATE(yyyy/MM/dd)},Date)}
例3 概要のタイトルに「サンプル」を設定する。
{%DW_SET_DOCUMENT_ATTRIBUTE(XDW文書オープン1,%Title,サンプル)}
XDW文書オープン処理名で指定されたDocuWorks文書から、文書属性を取得します。
属性名は、255文字以内で指定してください。
属性名に以下の名前を指定した場合は、概要タブの各項目を取得できます。
|
名前 |
内容 |
|---|---|
|
%Title |
タイトル |
|
%Subject |
サブタイトル |
|
%Author |
作成者 |
|
%Keywords |
キーワード |
|
%Comments |
コメント |
未定義時の処理を省略した場合またはエラーを指定した場合は、存在しない属性名を指定した場合にエラーとなります。
未定義時の処理に空文字返却を指定した場合は、存在しない属性名を指定した場合に空文字が返却されます。
例1 「文書名」という属性名で文書属性から値を取得する。(存在しない場合は空文字を返す)
{%WRITE_LOG({%DW_GET_DOCUMENT_ATTRIBUTE({%DW_GET(OpenName)},文書名,空文字返却)})}
例2 概要のタイトルから値を取得する。
{%WRITE_LOG({%DW_GET_DOCUMENT_ATTRIBUTE(XDW文書オープン1,%Title)})}
属性名で指定された文書属性の存在チェックを行います。
指定した属性が存在する場合は、Trueを、存在しない場合はFalseを返却します。
例 文書属性「処理日」が存在する場合は、ログに「属性あり」を出力する。
{%DW_SET_DOCUMENT_ATTRIBUTE(XDW文書オープン1,処理日,{%DATE(yyyy/MM/dd)},Date)}
{%IF({%DW_EXISTS_DOCUMENT_ATTRIBUTE(XDW文書オープン1,処理日)}=True,
{%WRITE_LOG(属性あり)}
,
{%WRITE_LOG(属性なし)}
)}
結果 属性あり
属性名で指定された文書属性を削除します。
例 文書属性「FAX番号」を削除する。
{%DW_DELETE_DOCUMENT_ATTRIBUTE(XDW文書オープン1,FAX番号)}
全ての文書属性を削除します。
Summaryを指定すると概要の属性も削除対象となります。
例1
#概要を除く全てのユーザー定義の文書属性を削除
{%DW_DELETE_ALL_DOCUMENT_ATTRIBUTE(XDW文書オープン1)}
例2
#概要とユーザー定義の文書属性を削除
{%DW_DELETE_ALL_DOCUMENT_ATTRIBUTE(XDW文書オープン1,Summary)}
ユーザーデータにセットされた属性情報を文書属性に設定します。
ユーザーデータには、属性として登録したいキーと値をセットします。型の指定は、末尾に「_Type」を付与したキーに、"Integer" (数値型), "String" (文字列型)[既定値], "Date" (日付型), "Bool" (真偽値型)の何れかをセットします。
概要タブの項目を指定したい場合は、キーに%で始まる識別キーをセットします。識別キーの詳細は、文書属性取得マクロの説明を参照してください。
例1
#型を指定する場合
{%SET_U(文書属性,見積もり番号,1)}
{%SET_U(文書属性,見積もり番号_Type,Integer)}
{%DW_SET_ALL_DOCUMENT_ATTRIBUTE(XDW文書オープン1,文書属性)}
例2
#型を指定しない場合は文字列で登録される。
{%SET_U(文書属性,FAX番号,03-5555-0000)}
{%DW_SET_ALL_DOCUMENT_ATTRIBUTE(XDW文書オープン1,文書属性)}
例3
#概要文書属性の場合は定義されたキーワードをキーに指定する。
#型は指定しても無視される。
{%SET_U(文書属性,%Title,見積もり書)}
{%DW_SET_ALL_DOCUMENT_ATTRIBUTE(XDW文書オープン1,文書属性)}
全ての文書属性を取得してユーザーデータにセットします。
以下の様な構造でセットされます。
指定したユーザーデータ名 属性名 属性値 属性名_Type 属性の型 属性名 属性値 属性名_Type 属性の型 ・ ・
既にユーザーデータが存在する場合は取得データで上書きします。
Summaryを指定すると概要の属性も取得対象となります。
例1 ユーザーデータにセットされた属性値と属性の型をログに出力
#概要を除く全属性
{%DW_GET_ALL_DOCUMENT_ATTRIBUTE(XDW文書オープン1,文書属性)}
{%WRITE_LOG(FAX番号:{%GET_U(文書属性,FAX番号)})}
{%WRITE_LOG(FAX番号_Type:{%GET_U(文書属性,FAX番号_Type)})}
例2 ユーザーデータにセットされた属性値と属性の型をログに出力(概要を含む)
#概要を含む全属性
{%DW_GET_ALL_DOCUMENT_ATTRIBUTE(XDW文書オープン1,文書属性,Summary)}
{%WRITE_LOG(FAX番号:{%GET_U(文書属性,FAX番号)})}
{%WRITE_LOG(FAX番号_Type:{%GET_U(文書属性,FAX番号_Type)})}
{%WRITE_LOG(%Title:{%GET_U(文書属性,%Title)})}
{%WRITE_LOG(%Title_Type:{%GET_U(文書属性,%Title_Type)})}
{%WRITE_LOG(%Subject:{%GET_U(文書属性,%Subject)})}
{%WRITE_LOG(%Subject_Type:{%GET_U(文書属性,%Subject_Type)})}
{%WRITE_LOG(%Author:{%GET_U(文書属性,%Author)})}
{%WRITE_LOG(%Author_Type:{%GET_U(文書属性,%Author_Type)})}
{%WRITE_LOG(%Keywords:{%GET_U(文書属性,%Keywords)})}
{%WRITE_LOG(%Keywords_Type:{%GET_U(文書属性,%Keywords_Type)})}
{%WRITE_LOG(%Comments:{%GET_U(文書属性,%Comments)})}
{%WRITE_LOG(%Comments_Type:{%GET_U(文書属性,%Comments_Type)})}
例3 「お問い合わせ番号 + 番号」で始まる属性を全て削除
#すべての文書属性を取得
{%DW_GET_ALL_DOCUMENT_ATTRIBUTE({%DW_GET(OpenName)},文書属性)}
#すべての文書属性の繰り返し
{%LOOP L1 {%GET_USER_DATA_COUNT(文書属性)}(
{%SET_U(属性,属性名,{%GET_USER_DATA_KEY_BY_NUMBER(文書属性,[L_IDX(L1)])})}
{%IF({%REGEX_CAPTURE(^(お問い合わせ番号\d+)$,{%GET_U(属性,属性名)})}!=,
#「お問い合わせ番号 + 番号」に合致する属性名の場合
#属性を削除
{%DW_DELETE_DOCUMENT_ATTRIBUTE({%DW_GET(OpenName)},{%GET_U(属性,属性名)})}
,)}
)}
処理中のXDW文書に引数で指定したXDW文書から文書属性をコピーします。
2番目の引き数にSummaryを指定すると文書属性の概要がコピーされます。Userを指定するとユーザー定義属性がコピーされます。Summary|Userを指定すると両方がコピーされます。
例 処理中のXDW文書に「D:\Home\temp\moto.xdw」の文書から文書属性の概要とユーザー定義属性をコピーする。
{%DW_COPY_ATTRIBUTE(XDW文書オープン1,D:\Home\temp\moto.xdw,Summary|User)}
XDW文書オープン処理名で指定されたDocuWorks文書に、ページユーザー属性を設定します。
属性名は、255文字以内で指定してください。
ページを省略した場合はページの繰り返し処理の現在のページが対象となります。従って、ページの繰り返し処理の中に記述してください。
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
属性名と値は、SJISで表現可能な文字のみ設定可能です。UNICODE特有の文字をセットすると文字化けします。
ページユーザー属性は、APIでのみ取得・設定が可能な属性で、DocuWorksViewer,Deskからは操作できません。
例1 1番目に取得したQRコードの内容を「図面名」という属性名でページユーザー属性に設定する。
{%DW_SET_PAGE_USER_ATTRIBUTE(XDW文書オープン1,図面名,{%GET_U(QRコード読み取り1,1,Data)})}
例2 1番目に取得したQRコードの内容を「図面名」という図面名でページユーザー属性に設定する。(ページ指定)
{%DW_SET_PAGE_USER_ATTRIBUTE(#Page,XDW文書オープン1,1,図面名,{%GET_U(QRコード読み取り1,1,Data)})}
XDW文書オープン処理名で指定されたDocuWorks文書から、ページユーザー属性を取得します。
属性名は、255文字以内で指定してください。
ページを省略した場合はページの繰り返し処理の現在のページが対象となります。従って、ページの繰り返し処理の中に記述してください。
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
属性名に存在しない名前を指定した場合は、エラーとならず空文字が返却されます。
ページユーザー属性は、APIでのみ取得・設定が可能な属性で、DocuWorksViewer,Deskからは操作できません。
例1 「図面名」という属性名でページユーザー属性から値を取得する。
{%WRITE_LOG({%DW_GET_PAGE_USER_ATTRIBUTE(XDW文書オープン1,図面名)})}
例2 「図面名」という属性名でページユーザー属性から値を取得する。(ページ指定)
{%WRITE_LOG({%DW_GET_PAGE_USER_ATTRIBUTE(#Page,XDW文書オープン1,1,図面名)})}
XDW文書オープン処理名で指定されたDocuWorks文書から、ページユーザー属性を削除します。
属性名は、255文字以内で指定してください。
ページを省略した場合はページの繰り返し処理の現在のページが対象となります。従って、ページの繰り返し処理の中に記述してください。
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
ページユーザー属性は、APIでのみ取得・設定が可能な属性で、DocuWorksViewer,Deskからは操作できません。
例1 ページユーザー属性から「図面名」を削除する。
{%DW_DELETE_PAGE_USER_ATTRIBUTE(XDW文書オープン1,図面名)}
例2 ページユーザー属性から「図面名」を削除する。(ページ指定)
{%DW_DELETE_PAGE_USER_ATTRIBUTE(#Page,XDW文書オープン1,1,図面名)}
DocuWorks文書に設定された見出し・ページ番号を更新します。更新を行うと、ページ番号が自動で振り直されます。
見出し・ページ番号は静的な属性情報で、登録・更新・削除を行うことができます。
「他で設定された見出し・ページ番号の扱い」にはSTAY(そのまま)、REMOVE(削除)の何れかが指定可能です。省略した場合はREMOVEになります。
「他で設定された見出し・ページ番号」とは、具体的にはバインダーで設定された値です。バインダー内に文書A(2ページ)と文書B(2ページ)が格納されている場合、バインダーを開いてページ番号を付与するとバインダー内の通し番号となり、文書Aには1,2が、文書Bには3,4が振られます。この状態でバインダーから取り出した文書Aには、バインダーで振られたページ番号1,2が残っています。これが「他で設定された見出し・ページ番号」です。
取り出した文書に見出し・ページ番号を付与すると、すでに付与されている位置でなければ新しい値が付与されます。STAYを指定した場合はバインダーで振られた値がそのまま残ります。REMOVEを指定した場合はバインダーで振られた値を削除してから、この文書のページ番号を更新します。
例1 他で設定された見出し・ページ番号を削除して、ページフォームを更新します。(第2引数を省略した場合と同じ動作です)
{%DW_UPDATE_PAGE_FORM(XDW文書オープン1)}
例2 他で設定された見出し・ページ番号を残したまま、ページフォームを更新します。
{%DW_UPDATE_PAGE_FORM(XDW文書オープン1,STAY)}
ページのノイズ除去を行います。強さにはNormal(普通),Weak(弱),Strong(強)の何れかが指定可能です。
ページを省略した場合はページの繰り返し処理の現在のページが対象となります。従って、ページの繰り返し処理の中に記述してください。
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
ImageDepthが1(白黒2値)のページのみ処理可能です。グレースケールやカラー形式で保存されたページ(ImageDepthが8や24)はエラーとなります。
実行前に処理可能なページかを判定する場合は、DW_PAGE_COLOR_INFOのColorとImageDepthの両方で判定してください。Colorはページの見た目を表すため、グレースケールのページもColorは「白黒」になります。
例1 処理中ページのノイズ除去を行います。この処理はDWページの繰り返しの中に記述してください。
{%DW_REDUCE_PAGE_NOISE(XDW文書オープン1,Normal)}
ページの回転(時計回り)を行います。角度には90 , 180 , 270 の何れかが指定可能です。
ページを省略した場合はページの繰り返し処理の現在のページが対象となります。従って、ページの繰り返し処理の中に記述してください。
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
DocuWorks 8 以前では、アノテーションが貼られているとエラーになります。DocuWorks 9 以降では、リンク・OLE・日付印・タイトル・日時・雲形・グループ化したアノテーションが貼られている場合と、セキュリティーで保護された文書・署名された文書の場合にエラーになります。
例1 処理中ページを90度回転します。この処理はDWページの繰り返しの中に記述してください。
{%DW_ROTATE_PAGE(XDW文書オープン1,90)}
ページの自動正立を行います。
ページを省略した場合はページの繰り返し処理の現在のページが対象となります。従って、ページの繰り返し処理の中に記述してください。
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
対象の文書がアプリケーション文書の場合はエラーとなります。イメージ文書(スキャンした文書など)を対象にしてください。
DocuWorks 8 以前では、アノテーションが貼られているとエラーになります。DocuWorks 9 以降では、リンク・OLE・日付印・タイトル・日時・雲形・グループ化したアノテーションが貼られている場合と、セキュリティーで保護された文書・署名された文書の場合にエラーになります。
例1 処理中ページを自動正立します。この処理はDWページの繰り返しの中に記述してください。
{%DW_ROTATE_PAGE_AUTO(XDW文書オープン1)}
XDW文書オープンでオープンされている文書から、指定した輝度範囲に該当するピクセルの割合を取得します。戻り値は0.0000~1.0000の小数値です。白紙判定に使用できます。
ページを省略した場合はページの繰り返し処理の現在のページが対象となります。ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
各オプション引数は省略可能です。省略する場合は空文字(,,)を指定します。末尾の引数は省略できます。
輝度は0(黒)~255(白)の範囲で指定します。各ピクセルのRGB値からITU-R BT.601規格(0.299*R + 0.587*G + 0.114*B)で算出されます。
分割数を指定すると、画像をグリッド状に分割してブロック単位で判定します。各ブロックの輝度割合がブロック閾値以上であれば「白紙ブロック」と見なし、全ブロック中の白紙ブロックの割合を返します。数行の文字だけが書かれたページを白紙と誤判定しないようにする場合に有効です。
本マクロはページの画像を内部的にBitmapに変換して解析するため、ページの属性情報取得に比べて処理時間がかかります。DPIを大きくすると精度が上がりますが処理時間も増加します。
本マクロは白紙判定を行う用途で使用できますが、簡単に白紙判定ができるというものではございません。
少々の汚れなどがあっても白紙とみなすのか等の判断は個人の感覚で変わってしまいます。また、白紙に文字が数文字だけあるような判断が難しいケースもあります。
本マクロは文字認識などは行っておらず、ページ全体、またはページを複数の区画に分けて、その領域内の指定した輝度の割合を返却する仕様としています。
そのため、実際に使用する用紙で確認しながら、閾値や輝度の範囲、返却される割合の判定値を調整してください。
引数
|
引数 |
既定値 |
説明 |
|---|---|---|
|
処理名 |
(必須) |
XDW文書オープンの処理名を指定します。 |
|
DPI |
72 |
Bitmapに変換する際の解像度(1~2400)。大きいほど精度が上がるが処理時間が増加します。 |
|
分割数 |
0(全体判定) |
画像を縦横に分割するブロック数(0~100)。0の場合は全体判定。例: 10を指定すると10×10=100ブロックに分割。 |
|
ブロック閾値 |
0.95 |
各ブロックを白紙と見なす輝度割合の閾値(0.0~1.0)。分割数が1以上の場合に使用。 |
|
最小輝度 |
230 |
カウント対象とする輝度の下限値(0~255)。 |
|
最大輝度 |
255 |
カウント対象とする輝度の上限値(0~255)。 |
例1 白紙判定を行う。デフォルトの輝度範囲(230~255)で95%以上のピクセルが白であれば白紙と判定する。
{%IF({%DW_BRIGHTNESS_RATIO(XDW文書オープン1)}>0.95,
{%WRITE_LOG(白紙です)},
{%WRITE_LOG(白紙ではありません)}
)}
例2 グリッド分割による白紙判定。150dpiで20×20ブロックに分割し、数行の文字があるページも検出する。
{%IF({%DW_BRIGHTNESS_RATIO(XDW文書オープン1,150,20,0.95)}>0.95,
{%WRITE_LOG(白紙です)},
{%WRITE_LOG(白紙ではありません)}
)}
例3 輝度範囲だけ変えて黒いピクセルの割合を取得する。DPI・分割数・ブロック閾値は空文字で省略。
{%WRITE_LOG(黒ピクセル割合: {%DW_BRIGHTNESS_RATIO(XDW文書オープン1,,,,0,25)})}
例4 #Pageを指定して、1ページ目の輝度割合を取得する。
{%WRITE_LOG(1ページ目の白割合: {%DW_BRIGHTNESS_RATIO(#Page,XDW文書オープン1,1)})}
スキャンされたマークシートから、ページ四隅に配置したQRコードを基準にアフィン補正を行い、マーク欄(矩形)の塗りつぶし有無を一括判定します。スキャン時の傾き・平行ズレ・拡大縮小・せん断を補正したうえで各マスをサンプリングします。
判定対象のマス定義(基準QRの設計座標と各マスの位置・サイズ)と判定結果は、いずれもユーザーデータでやり取りします。1回の呼び出しで複数マークの結果を返します。
ページを省略した場合はページの繰り返し処理の現在のページが対象となります。ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
処理の流れ: ①対象ページのQRコードをデコードし、定義の識別ID(FormId)が一致するものだけを基準点として採用 ②各QRの4隅の平均(中心)を求め、設計座標との対応から最小二乗アフィン変換を推定(4点ある場合は外れQRを自動除外) ③各マスの矩形を変換後の位置に写像し、内側領域の輝度(ITU-R BT.601)から暗ピクセルの割合を算出 ④割合が判定閾値以上なら「塗りつぶしあり」と判定。
戻り値は採用できたQRコードの数です。3未満の場合は補正できず、すべてのマスは「判定不能」となります。
本マクロを使うには、テンプレート(QRコード4隅とマーク欄の矩形)を配置したXDWから生成した「定義ユーザーデータ」が必要です。定義は eDocArrangement2 の「OMRマクロ作成ツール」(ツールメニュー)で自動生成できます。ツールの詳しい使い方は OMRマクロ作成ツール を参照してください。
QRコードは余白(クワイエットゾーン)を0にし、ページ端から8mm以上内側に配置してください(白紙部分が静音域になります)。傾き耐性を高めるには端から12~15mmを推奨します。QRのデータは「<識別ID>:<役割>」形式(例 OMR001:TL)とし、役割は TL/TR/BL/BR を使用します。
マスのサイズは実用上4~5mm以上を推奨します。実際の用紙・スキャナで、判定閾値・内側マージン・輝度閾値を調整してください。
引数
|
引数 |
既定値 |
説明 |
|---|---|---|
|
処理名 |
(必須) |
XDW文書オープンの処理名を指定します。 |
|
定義ユーザーデータ名 |
(必須) |
基準QRとマス定義を格納したユーザーデータ名(下記「定義ユーザーデータの構造」)。 |
|
結果ユーザーデータ名 |
(必須) |
判定結果の格納先ユーザーデータ名(下記「結果ユーザーデータの構造」)。実行時に同名データはクリアして上書きします。 |
|
判定閾値 |
0.2 |
マス内側の暗ピクセル割合がこの値以上なら「塗りつぶしあり」と判定(0.0~1.0)。 |
|
内側マージンmm |
1.0 |
マス枠から内側へ縮めてサンプリングする余白(mm)。枠線・記入はみ出し・補正残差を避けます(0~100)。 |
|
輝度閾値 |
128 |
これ以下(0~255)の輝度を「暗(インク)」とみなす二値化しきい値。 |
|
DPI |
300 |
QRデコード・サンプリング時にページを画像化する解像度(1~2400)。 |
定義ユーザーデータの構造
分類キーで階層化します(SET_USER_DATAで作成)。座標はすべてページ基準のmmです。<Name>が各マスの名前(結果のキー)になります。
<定義>
├ FormId = <識別ID> … 補正用QRの識別 (QRデータ = <識別ID>:<役割>)
├ QR
│ ├ TL ─ { X, Y } … テンプレート上のQR中心座標(mm)
│ ├ TR ─ { X, Y }
│ ├ BL ─ { X, Y }
│ └ BR ─ { X, Y } … 検出できた分でよい(最低3隅)
└ Marks
├ <Name1> ─ { X, Y, Width, Height } … 矩形左上(mm)・幅・高さ
├ <Name2> ─ { X, Y, Width, Height }
└ …
結果ユーザーデータの構造
<結果>
├ Marks
│ ├ <Name1> ─ { Marked, Ratio }
│ ├ <Name2> ─ { Marked, Ratio }
│ └ …
└ _QR_ ─ { Detected, Corrected, Rms, Outlier }
|
キー |
説明 |
|---|---|
|
Marks > <Name> > Marked |
True / False / 判定不能(補正不可・領域外)。 |
|
Marks > <Name> > Ratio |
サンプル領域の暗ピクセル割合(0.0000~1.0000)。 |
|
_QR_ > Detected |
採用できたQRコード数。 |
|
_QR_ > Corrected |
補正に成功したか(QR3個以上)。True / False。 |
|
_QR_ > Rms |
補正の当てはまり具合(mm)。小さいほど正確。大きい場合はQR読み取りが不安定。 |
|
_QR_ > Outlier |
外れ値として除外した隅の役割(無ければ空)。 |
例1 定義をセットしてマーク判定を実行し、結果を参照する。(定義は「OMRマクロ作成ツール」で自動生成できます)
{%SET_U(MarkDef,FormId,OMR001)}
{%SET_U(MarkDef,QR,TL,X,16.35)}{%SET_U(MarkDef,QR,TL,Y,16.35)}
{%SET_U(MarkDef,QR,TR,X,280.65)}{%SET_U(MarkDef,QR,TR,Y,16.35)}
{%SET_U(MarkDef,QR,BL,X,16.35)}{%SET_U(MarkDef,QR,BL,Y,193.65)}
{%SET_U(MarkDef,QR,BR,X,280.65)}{%SET_U(MarkDef,QR,BR,Y,193.65)}
{%SET_U(MarkDef,Marks,性別_男,X,80)}{%SET_U(MarkDef,Marks,性別_男,Y,55)}{%SET_U(MarkDef,Marks,性別_男,Width,5)}{%SET_U(MarkDef,Marks,性別_男,Height,5)}
{%SET_U(MarkDef,Marks,性別_女,X,95)}{%SET_U(MarkDef,Marks,性別_女,Y,55)}{%SET_U(MarkDef,Marks,性別_女,Width,5)}{%SET_U(MarkDef,Marks,性別_女,Height,5)}
{%DW_OMR(XDW文書オープン1,MarkDef,MarkResult)}
{%IF({%GET_U(MarkResult,Marks,性別_男,Marked)}=True,{%WRITE_LOG(男に記入あり)},)}
例2 補正成否を確認し、全マスの結果をループで出力する。Marks配下を件数ループします。
{%IF({%GET_U(MarkResult,_QR_,Corrected)}=True,
{%LOOP ML {%GET_USER_DATA_KEY_COUNT(MarkResult,Marks)}(
{%SET_U(wk,name,{%GET_USER_DATA_KEY_BY_NUMBER(MarkResult,Marks,[L_IDX(ML)])})}
{%WRITE_LOG({%GET_U(wk,name)} = {%GET_U(MarkResult,Marks,{%GET_U(wk,name)},Marked)})}
)}
,
{%WRITE_ERROR_LOG(QR検出不足: 検出={%GET_U(MarkResult,_QR_,Detected)})}
)}
例3 #Pageで1ページ目を対象に、判定閾値0.3・内側マージン1.5mmで実行する。
{%DW_OMR(#Page,XDW文書オープン1,1,MarkDef,MarkResult,0.3,1.5)}
XDW文書オープン処理名で指定したオープン中のDocuWorks文書の指定ページを削除します。
本マクロはXDW文書オープン処理後、又は、ページの繰り返しの中で使用できます。ページの繰り返しの中で使用する場合はページ数が動的に変化しますので、ページの繰り返し設定で繰り返し方向を「末尾から」に設定してください。
例1 XDW文書オープン1でオープンしたXDW文書の1ページを削除する。
{%DW_DELETE_PAGE(XDW文書オープン1,1)}
XDW文書オープン処理名で指定したオープン中のDocuWorks文書の指定ページに別のXDW文書を挿入します。文書は指定ページの前に挿入されます。また、ページに「BOTTOM」を指定すると、末尾に挿入されます。
本マクロはXDW文書オープン処理後、又は、ページの繰り返しの中で使用できます。ページの繰り返しの中で使用する場合はページ数が動的に変化しますので、ページの繰り返し設定で繰り返し方向を「末尾から」に設定してください。
例1 XDW文書オープン1でオープンしたXDW文書の2ページに「C:\Home\AppData\Desktop\scan.xdw」を挿入する。
{%DW_INSERT_DOCUMENT(XDW文書オープン1,2,C:\Home\AppData\Desktop\scan.xdw)}
例2 XDW文書オープン1でオープンしたXDW文書の末尾に「C:\Home\AppData\Desktop\scan.xdw」を挿入する。
{%DW_INSERT_DOCUMENT(XDW文書オープン1,BOTTOM,C:\Home\AppData\Desktop\scan.xdw)}
XDW文書オープン処理名で指定したオープン中のDocuWorks文書の指定ページを、別のXDW文書に出力します。
ページを省略した場合はページの繰り返し処理の現在のページが対象となります。従って、ページの繰り返し処理の中に記述してください。
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
出力ファイル既存時の挙動は、以下が指定できます。省略すると「MergeBottom」を指定したことになります。
|
MergeBottom [既定値] |
ページを文書の末尾に束ねる。 |
|
MergeTop |
ページを文書の先頭に束ねる。 |
|
SeqNo |
ファイル名の末尾に連番を付与する。(例 Test.xdw -> Test_0001.xdw) |
|
Overwrite |
ファイルを上書きする。 |
属性のコピーは「CopyAttribute」を指定すると出力ファイルに属性がコピーされます。「Nothing」を指定すると属性はコピーされません。省略すると「CopyAttribute」を指定したことになります。
新規ファイル、既存ファイルともに、「CopyAttribute」を指定するとユーザー属性のみコピーされます。サマリーはコピーされません。サマリーをコピーしたい場合は、DW_COPY_ATTRIBUTEマクロを使ってください。
例1 XDW文書オープン1でオープンしたXDW文書の1ページ目を「C:\Home\Temp\out.xdw」に出力する。(出力ファイルが既にある場合は末尾に束ねる。文書属性を出力ファイルにコピーする。)
{%DW_EXTRACT_PAGE(#Page,XDW文書オープン1,1,C:\Home\Temp\out.xdw)}
XDW文書オープン処理名で指定したオープン中のDocuWorks文書がバインダー、又は入れ物の場合に、ファイル内ファイルをフォルダに展開した際のフォルダパスを取得します。
本マクロはDocuWorks文書オープン処理後に使用できます。
DocuWorks文書オープン処理でオープンしたファイルがバインダー、又は入れ物の場合は、ファイルオープン時に一時フォルダにファイル内のファイルを展開します。その一時フォルダのパスを取得できます。
一時フォルダの例 C:\Users\ユーザー名\AppData\Roaming\TechnoStyle\eDocArrangement2\temp\docuworks_class\documentsInBinder~1f2c~7~0
例1 XBD文書オープン1でオープンしたXBD文書を展開した一時フォルダのパスを取得する。
{%DW_GET_TEMP_FOLDER_FOR_EXTRACTION(XBD文書オープン1)}
XDW文書オープン処理名で指定したオープン中のDocuWorks文書がバインダー、又は入れ物の場合に、展開した一時ファイルのファイル名から、ファイル内のファイル名を取得します。
本マクロはDocuWorks文書オープン処理後に使用できます。(「 文書またはオリジナルデータを展開する」 にチェックをいれてください。)
DocuWorks文書オープン処理でオープンしたファイルがバインダー、又は入れ物の場合は、ファイルオープン時に一時フォルダにファイル内のファイルを展開します。その展開されたファイルが同名になる場合は連番が付与されます。文書内の元のファイル名を取得するために本マクロを使用します。
一時フォルダに展開されたファイルの例 注文書.xdw 注文書_0001.xdw
例1 XBD文書オープン1でオープンしたXBD文書内文書から展開されたファイル名から、文書内のファイル名を取得する。
{%DW_GET_FILENAME_INSIDE_FROM_TEMP_FILENAME(XBD文書オープン1,{%GET(FileName)})}
結果
展開されたファイル名が「注文書_0001.xdw」の場合、「注文書.xdw」が取得されます。
XDW文書オープン処理名で指定したオープン中のDocuWorks文書がバインダー、又は入れ物の場合に、文書内ファイル番号から、展開した一時ファイルのフルパスファイル名を取得します。
本マクロはDocuWorks文書オープン処理後に使用できます。(「 文書またはオリジナルデータを展開する」 にチェックをいれてください。)
一時フォルダに展開されたファイルの例 注文書.xdw 注文書_0001.xdw
例1 XBD文書オープン1でオープンしたXBD文書内文書番号から展開されたフルパスファイル名を取得する。
{%DW_GET_TEMP_FILENAME_BY_NUMBER(XBD文書オープン1,2)}
結果
2番目に展開されたファイル名「注文書_0001.xdw」のフルパスファイル名が取得されます。
例2 オープン中のバインダー内ファイルに格納順の連番をファイル名の先頭に付与する
#バインダ内の格納順に連番を付与する
#バインダ情報を取得
{%DW_DOCUMENT_INFO_IN_BINDER({%DW_GET(OpenName)},DocInfo)}
{%LOOP L1 {%GET_USER_DATA_KEY_COUNT(DocInfo)}(
#元ファイル
{%SET_U(wk,fromFile,{%DW_GET_TEMP_FILENAME_BY_NUMBER({%DW_GET(OpenName)},[L_IDX(L1)])})}
#リネーム後ファイル(ファイル名の先頭に連番を付与する)
{%SET_U(wk,toFile,{%DW_GET_TEMP_FOLDER_FOR_EXTRACTION({%DW_GET(OpenName)})}\{%FORMAT([L_IDX(L1)],0000)}_{%GET_FILE_NAME({%DW_GET_TEMP_FILENAME_BY_NUMBER({%DW_GET(OpenName)},[L_IDX(L1)])})})}
#リネーム
{%MOVE_FILE({%GET_U(wk,fromFile)},{%GET_U(wk,toFile)},,File,Move)}
)}
XDW文書オープン処理名で指定したオープン中のDocuWorks文書がバインダー、又は入れ物の場合に、文書内ファイル番号から、文書内ファイルのファイル名を取得します。
本マクロはDocuWorks文書オープン処理後に使用できます。(「 文書またはオリジナルデータを展開する」 にチェックをいれてください。)
文書内ファイルの例 注文書.xdw 請求書.xdw
例1 XBD文書オープン1でオープンしたXBD文書内文書番号から文書内ファイル名を取得する。
{%DW_GET_FILENAME_INSIDE_BY_NUMBER(XBD文書オープン1,2)}
結果
2番目のファイル名「請求書.xdw」が取得されます。
ページのサムネイル画像を出力します。ページを省略した場合はページの繰り返し処理の現在のページが対象となります。出力ファイルパスに含まれるフォルダが存在しない場合はエラーとなります。また、出力先に既に同名のファイルが存在する場合はエラーとなります。
出力ファイルパスで指定したファイルの拡張子によって画像形式が変わります。指定可能な拡張子はbmp,jpg,png,tiff,gifです。
本マクロはXDW文書のページの繰り返し処理の中のマクロ実行に記述してください。 (ページを省略した場合)
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
例1 XDW文書オープン1でオープンしたXDW文書の全てのページのサムネイル画像を出力する。画像はXDW文書と同じフォルダに作成されます。(ページの繰り返しの中に記述してください。)
{%DW_THUMBNAIL_IMAGE(XDW文書オープン1,{%GET(FolderPath)}\{%GET(FileNameWithoutExtension)}{%DW_GET(PageLoopCount)}.jpg)}
例2 XDW文書オープン1でオープンしたXDW文書の1ページのサムネイル画像を出力する。画像はXDW文書と同じフォルダに作成されます。
{%DW_THUMBNAIL_IMAGE(#Page,XDW文書オープン1,1,{%GET(FolderPath)}\{%GET(FileNameWithoutExtension)}.jpg)}
ページをTiff画像に変換出力します。ページを省略した場合はページの繰り返し処理の現在のページが対象となります。出力ファイルパスに含まれるフォルダが存在しない場合はエラーとなります。また、出力先に既に同名のファイルが存在する場合はエラーとなります。
本マクロはXDW文書のページの繰り返し処理の中のマクロ実行に記述してください。 (ページを省略した場合)
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
終了ページは空文字を指定すると最終ページとなります。
解像度は10~600dpiの範囲で指定できます。通常200か300を指定します。
指定可能な色はMono,Color,MonoHighQualityです。
指定可能な圧縮タイプはNoCompress,PackBits,Jpeg,G4です。
色をColorにしてA0やA0長尺の文書を変換するとdpiの値によりエラーが発生します。
これはDocuWorksの機能の限界で変換ができません。
A0 カラーは400dpiまで変換可能で、A0 長尺カラーは300dpiまで変換可能です。
例1 XDW文書オープン1でオープンしたXDW文書の全てのページを1ページ1Tiff画像で出力する。画像はXDW文書と同じフォルダに作成されます。(ページの繰り返しの中に記述してください。)
{%DW_OUTPUT_TIFF_IMAGE(XDW文書オープン1,{%GET(FolderPath)}\{%GET(FileNameWithoutExtension)}{%DW_GET(PageLoopCount)}.tif,300,Color,{%DW_GET(PageLoopCount)},PackBits)}
例2 XDW文書オープン1でオープンしたXDW文書の全ページを1つのマルチページTiff画像に出力する。画像はXDW文書と同じフォルダに作成されます。
{%DW_OUTPUT_TIFF_IMAGE(#Page,XDW文書オープン1,{%GET(FolderPath)}\{%GET(FileNameWithoutExtension)}.tif,300,Color,1,,PackBits)}
ページをJpeg画像に変換出力します。ページを省略した場合はページの繰り返し処理の現在のページが対象となります。出力ファイルパスに含まれるフォルダが存在しない場合はエラーとなります。また、出力先に既に同名のファイルが存在する場合はエラーとなります。
本マクロはXDW文書のページの繰り返し処理の中のマクロ実行に記述してください。 (ページを省略した場合)
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
解像度は10~600dpiの範囲で指定できます。通常200か300を指定します。
指定可能な色はMono,Color,MonoHighQualityです。
指定可能な圧縮タイプはNormal,HighQuality,HighCompressです。
色をColorにしてA0やA0長尺の文書を変換するとdpiの値によりエラーが発生します。
これはDocuWorksの機能の限界で変換ができません。
A0 カラーは400dpiまで変換可能で、A0 長尺カラーは300dpiまで変換可能です。
例1 XDW文書オープン1でオープンしたXDW文書の全てのページを1ページ1Jpeg画像で出力する。画像はXDW文書と同じフォルダに作成されます。(ページの繰り返しの中に記述してください。)
{%DW_OUTPUT_JPEG_IMAGE(XDW文書オープン1,{%GET(FolderPath)}\{%GET(FileNameWithoutExtension)}{%DW_GET(PageLoopCount)}.jpg,300,Color,Normal)}
ページをBmp画像に変換出力します。ページを省略した場合はページの繰り返し処理の現在のページが対象となります。出力ファイルパスに含まれるフォルダが存在しない場合はエラーとなります。また、出力先に既に同名のファイルが存在する場合はエラーとなります。
本マクロはXDW文書のページの繰り返し処理の中のマクロ実行に記述してください。 (ページを省略した場合)
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
解像度は10~600dpiの範囲で指定できます。通常200か300を指定します。
指定可能な色はMono,Color,MonoHighQualityです。
色をColorにしてA0やA0長尺の文書を変換するとdpiの値によりエラーが発生します。
これはDocuWorksの機能の限界で変換ができません。
A0 カラーは400dpiまで変換可能で、A0 長尺カラーは300dpiまで変換可能です。
例1 XDW文書オープン1でオープンしたXDW文書の全てのページを1ページ1Bmp画像で出力する。画像はXDW文書と同じフォルダに作成されます。(ページの繰り返しの中に記述してください。)
{%DW_OUTPUT_BMP_IMAGE(XDW文書オープン1,{%GET(FolderPath)}\{%GET(FileNameWithoutExtension)}{%DW_GET(PageLoopCount)}.bmp,300,Color)}
ページをPng画像に変換出力します。ページを省略した場合はページの繰り返し処理の現在のページが対象となります。出力ファイルパスに含まれるフォルダが存在しない場合はエラーとなります。また、出力先に既に同名のファイルが存在する場合はエラーとなります。
本マクロはXDW文書のページの繰り返し処理の中のマクロ実行に記述してください。 (ページを省略した場合)
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
解像度は10~600dpiの範囲で指定できます。通常200か300を指定します。
指定可能な色はMono,Color,MonoHighQualityです。
色をColorにしてA0やA0長尺の文書を変換するとdpiの値によりエラーが発生します。
これはDocuWorksの機能の限界で変換ができません。
A0 カラーは400dpiまで変換可能で、A0 長尺カラーは300dpiまで変換可能です。
最後の引数に範囲指定ユーザーデータ名を指定すると、ページ全体ではなく、あらかじめ登録しておいた範囲を切り取って出力します。範囲指定は省略可能で、指定した場合のみ有効です。省略した場合はページ全体を出力します。
切り取る範囲は、本マクロを実行する前に次の書式のユーザーデータで登録しておきます。1つの範囲指定ユーザーデータに複数の範囲(キー)を登録できます。座標とサイズの単位はミリメートル(mm)で、X座標・Y座標はページ左上を原点とした位置です。
{%SET_U(範囲指定ユーザーデータ名,キー,X座標(mm),Y座標(mm),幅(mm),高さ(mm))}
範囲指定を行った場合、登録されたキーごとに画像を切り取り、出力ファイル名の拡張子の前にキー名を付加したファイル(「出力ファイル名(拡張子を除く)_キー名.拡張子」)を出力します。例えば出力ファイル名が「Test_0001.png」でキーが「注文番号」「担当者名」の場合、「Test_0001_注文番号.png」「Test_0001_担当者名.png」が出力されます。
範囲指定を使用する場合、解像度は数値(dpi)で指定してください。
切り取る範囲がページの範囲外となる場合はエラーとなります。
例1 XDW文書オープン1でオープンしたXDW文書の全てのページを1ページ1Png画像で出力する。画像はXDW文書と同じフォルダに作成されます。(ページの繰り返しの中に記述してください。)
{%DW_OUTPUT_PNG_IMAGE(XDW文書オープン1,{%GET(FolderPath)}\{%GET(FileNameWithoutExtension)}{%DW_GET(PageLoopCount)}.png,300,Color)}
例2 範囲指定ユーザーデータ「Rect」に「注文番号」「担当者名」の2つの範囲を登録し、その範囲を切り取って出力する。Test.xdwを処理した場合、Test_0001_注文番号.png、Test_0001_担当者名.pngが出力されます。(ページの繰り返しの中に記述してください。)
{%SET_U(Rect,注文番号,30,40,20,10)}
{%SET_U(Rect,担当者名,50,60,30,20)}
{%DW_OUTPUT_PNG_IMAGE({%DW_GET(OpenName)},{%GET(FolderPath)}\{%GET(FileNameWithoutExtension)}_{%FORMAT({%DW_GET(PageLoopCount)},0000)}.png,300,Color,Rect)}
例3 ページを指定して出力する。XDW文書オープン1でオープンしたXDW文書の1ページ目をPng画像に出力します。第1引数に「#Page」、変換ページに「1」を指定しています。ページの繰り返しの外でも実行できます。
{%DW_OUTPUT_PNG_IMAGE(#Page,XDW文書オープン1,{%GET(FolderPath)}\{%GET(FileNameWithoutExtension)}.png,300,Color,1)}
例4 ページを指定し、かつ範囲指定で切り取って出力する。XDW文書オープン1でオープンしたXDW文書の1ページ目から、範囲指定ユーザーデータ「Rect」に登録された範囲を切り取って出力します。ページを指定する場合は、範囲指定ユーザーデータ名を変換ページの後に指定します。
{%SET_U(Rect,注文番号,30,40,20,10)}
{%SET_U(Rect,担当者名,50,60,30,20)}
{%DW_OUTPUT_PNG_IMAGE(#Page,XDW文書オープン1,{%GET(FolderPath)}\{%GET(FileNameWithoutExtension)}.png,300,Color,1,Rect)}
ページをイメージPdfに変換出力します。ページを省略した場合はページの繰り返し処理の現在のページが対象となります。出力ファイルパスに含まれるフォルダが存在しない場合はエラーとなります。また、出力先に既に同名のファイルが存在する場合はエラーとなります。
本マクロはXDW文書のページの繰り返し処理の中のマクロ実行に記述してください。 (ページを省略した場合)
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
終了ページは空文字を指定すると最終ページとなります。
解像度は10~600dpiの範囲で指定できます。通常200か300を指定します。
指定可能な色はMono,Color,MonoHighQualityです。
指定可能な圧縮タイプはMrcNormal,MrcHighQuality,MrcHighCompress,Normal,HighQuality,HighCompressです。
文字の層は省略できます。1 を指定すると、出力した PDF の、テキストを持つページに見えない文字の層を重ね、PDF のビューアーで文字の検索・コピーができるようにします。0 を指定するか省略すると、今までと同じイメージだけの PDF になります。
文字の層の字の位置は、XDWテキスト抽出(DW_EXTRACT_TEXT)と同じです。テキストを持たないページ(スキャンしたイメージのページなど)と、字の位置が取れないページ(DocuWorks Printer で作った XDW の一部など)には重ねません。ログに、文字の層を重ねたページの数が出ます。
文字の層には、XDW のテキストにある字が入ります。紙に見えない字(白い文字など)も、テキストにあれば検索に当たります。図形や画像で描かれた字と、アノテーションの文字は入りません。
文字の層を重ねると、PDF のファイルの大きさが 1 ページあたり数 KB 増えます。見た目は変わりません。
DocuWorks で 180 度回したページ(字が逆さまのページ)は、Microsoft Edge・Google Chrome では文字の層が検索に当たりません(Firefox では当たります)。
DocuWorks9.1以降では、Mrcの付く圧縮タイプを指定した場合、Mrcが付かない圧縮タイプを指定したことになります。
色をColorにしてA0やA0長尺の文書を変換するとdpiの値によりエラーが発生します。
これはDocuWorksの機能の限界で変換ができません。
A0 カラーは400dpiまで変換可能で、A0 長尺カラーは300dpiまで変換可能です。
例1 直前のXDW文書オープンでオープンしたXDW文書の全ページを1つのマルチページPDFに出力します。PDFはグローバルデータ「PdfFolder」で定義されたフォルダに、変換元のファイル名と同名で出力します。また、フォルダを自動作成して、既に同名のファイルがある場合はファイル名の末尾に連番を付与します。
#フォルダ作成とPDFファイルパスをセット
{%SET_U(属性,PDFファイルパス,{%CREATE_FOLDER({%GET_G(PdfFolder)})}\{%GET(FileNameWithoutExtension)}.pdf)}
#同名のファイルがある場合はファイル名の末尾に連番を付与する
{%SET_U(属性,PDFファイルパス,{%GET_SEQUENCE_FILENAME({%GET_U(属性,PDFファイルパス)})})}
#PDF出力
{%DW_OUTPUT_PDF_IMAGE(#Page,{%DW_GET(OpenName)},{%GET_U(属性,PDFファイルパス)},300,Color,1,,Normal)}
例2 直前のXDW文書オープンでオープンしたXDW文書の全てのページを1ページ1PDFで出力します。画像はXDW文書と同じフォルダに作成されます。また、既に同名のファイルが存在する場合は削除します。(ページの繰り返しの中に記述してください。)
#PDFファイルパスをセット
{%SET_U(属性,PDFファイルパス,{%GET(FolderPath)}\{%GET(FileNameWithoutExtension)}{%DW_GET(PageLoopCount)}.pdf)}
#同名ファイルがある場合は削除
{%DELETE_FILE({%GET_U(属性,PDFファイルパス)})}
#PDF出力
{%DW_OUTPUT_PDF_IMAGE({%DW_GET(OpenName)},{%GET_U(属性,PDFファイルパス)},300,Color,{%DW_GET(PageLoopCount)},Normal)}
例3 直前のXDW文書オープンでオープンしたXDW文書の全ページを、文字の層を重ねた1つのマルチページPDFに出力します。PDFのビューアーで文字の検索・コピーができます。
#PDFファイルパスをセット
{%SET_U(属性,PDFファイルパス,{%GET(FolderPath)}\{%GET(FileNameWithoutExtension)}.pdf)}
#文字の層つきでPDF出力 (最後の引数 1)
{%DW_OUTPUT_PDF_IMAGE(#Page,{%DW_GET(OpenName)},{%GET_U(属性,PDFファイルパス)},300,Color,1,,Normal,1)}
検索文字列で指定された文字を、指定ページから検索し、見つかった文字の位置と高さと幅を結果返却用ユーザーデータにセットします。検索文字はスペース区切りで複数の文字を指定できます。
""で囲うとスペースを含めたそのままの文字で検索できます。""で囲わない場合に、スペースを検索対象としたい場合は、スペースの直前に\を付けます。\を検索する場合は、\\と記述します。"も特別な意味を持つことになるので、"を検索するときは\"と記述します。
検索対象はアプリケーション文書のテキスト情報、または、イメージ文書をOCR処理した結果のテキスト情報のいずれかとなります。イメージ文書は事前にOCR処理を行う必要があります。 (DocuWorks9以降はイメージ文書をOCR処理した場合は、取得不可となりました。)
大文字小文字同一視、全角半角同一視、ひらがなカタカナ同一視は、0又は1を指定します。1が指定されると、検索時に大文字小文字(全角半角、ひらがなカタカナ)を同一視して検索を行います。
パディング値(mm)を指定すると、見つかった矩形にパディングを付けた状態で座標とサイズをセットする。
結果は複数になる場合があるため、「結果返却用ユーザーデータ名,番号(1~)」のキーでユーザーデータが作成されます。結果の数は、「{%GET_USER_DATA_COUNT(結果返却用ユーザーデータ名)}」で取得できます。
引き数1:結果返却用ユーザーデータ名
引き数2:番号(1~)
1つの見つかった文字が、複数の矩形で構成される場合があります。文字が折り返している場合などは1行目と2行目が別の矩形となり、2つの矩形情報が取得されます。そのため、キー「Rect」に矩形番号(1~)のキーが作成され、矩形毎の座標が取得できるようになっています。
また、複数の矩形を一つにまとめた矩形の情報(MergeRect X, MergeRect Y, MergeRect Width, MergeRect Height)も取得できます。矩形が1つだった場合は、これらの値は矩形の情報(Rect,1)と同じになります。)
|
ユーザーデータ名 |
キー |
キー |
キー |
キー |
|---|---|---|---|---|
|
検索結果 |
1 |
Rect |
1 |
X |
|
検索結果 |
1 |
Rect |
1 |
Y |
|
検索結果 |
1 |
Rect |
1 |
Width |
|
検索結果 |
1 |
Rect |
1 |
Height |
|
検索結果 |
1 |
Rect |
1 |
Status |
|
検索結果 |
1 |
Rect |
2 |
X |
|
検索結果 |
1 |
Rect |
2 |
Y |
|
検索結果 |
1 |
Rect |
2 |
Width |
|
検索結果 |
1 |
Rect |
2 |
Height |
|
検索結果 |
1 |
Rect |
2 |
Status |
|
検索結果 |
1 |
MergeRect |
X |
|
|
検索結果 |
1 |
MergeRect |
Y |
|
|
検索結果 |
1 |
MergeRect |
Width |
|
|
検索結果 |
1 |
MergeRect |
Height |
|
|
検索結果 |
1 |
MergeRect |
Status |
格納されるユーザーデータの内容は以下の通りです。
|
キー |
値 |
|---|---|
|
X |
見つかった文字のX座標(mm)。 |
|
Y |
見つかった文字のY座標(mm)。 |
|
Width |
見つかった文字の幅(mm)。 |
|
Height |
見つかった文字の高さ(mm)。 |
|
Status |
0の場合は文字の座標とサイズ。1の場合はページ全体の座標とサイズ。(矩形情報が取得できなかった場合は1となる。OCRのモジュールによって取得できない場合があるようです。) |
|
MergeRect X |
矩形が複数で構成される場合に、一つにまとめた矩形のX座標(mm)。 |
|
MergeRect Y |
矩形が複数で構成される場合に、一つにまとめた矩形のY座標(mm)。 |
|
MergeRect Width |
矩形が複数で構成される場合に、一つにまとめた矩形の幅(mm)。 |
|
MergeRect Height |
矩形が複数で構成される場合に、一つにまとめた矩形の高さ(mm)。 |
|
MergeRect Status |
RectにセットされるStatusに1つでも1(ページ全体の座標とサイズ)がある場合は、1(ページ全体の座標とサイズ)がセットされます。それ以外は、0(文字の座標とサイズ)がセットされます。 |
例1 XDW文書オープン1でオープンしたXDW文書の全てのページで「愛知」を検索して、見つかった文字の位置に矩形アノテーションは貼り付ける。(ページの繰り返しの中に記述してください。) 1つの結果で矩形が複数に分かれる場合はマージした矩形とする。
{%DW_GET_TEXT_POSITION(XDW文書オープン1,愛知,result,0,0,0,0.5)}
{%WRITE_LOG({%GET_USER_DATA_KEY_COUNT(result)})}
{%LOOP L1 {%GET_USER_DATA_KEY_COUNT(result)}(
{%SET_U(Anno,HorPos,{%GET_U(result,[L_IDX(L1)],MergeRect,X)})}
{%SET_U(Anno,VerPos,{%GET_U(result,[L_IDX(L1)],MergeRect,Y)})}
{%SET_U(Anno,Width,{%GET_U(result,[L_IDX(L1)],MergeRect,Width)})}
{%SET_U(Anno,Height,{%GET_U(result,[L_IDX(L1)],MergeRect,Height)})}
{%SET_U(Anno,BorderStyle,しない)}
{%SET_U(Anno,FillStyle,する)}
{%SET_U(Anno,FillColor,黄)}
{%SET_U(Anno,FillTransparent,する)}
{%DW_PASTE_RECT_ANNOTATION(XDW文書オープン1,Anno)}
)}
例2 例1と同じ内容で、1つの結果で矩形が複数に分かれる場合は、それぞれの矩形にアノテーションを貼る場合。
{%DW_GET_TEXT_POSITION(XDW文書オープン1,愛知,result,0,0,0,0.5)}
{%WRITE_LOG({%GET_USER_DATA_KEY_COUNT(result)})}
{%LOOP L1 {%GET_USER_DATA_KEY_COUNT(result)}(
{%LOOP L2 {%GET_USER_DATA_KEY_COUNT(result,[L_IDX(L1)],Rect)}(
{%SET_U(Anno,HorPos,{%GET_U(result,[L_IDX(L1)],Rect,[L_IDX(L2)],X)})}
{%SET_U(Anno,VerPos,{%GET_U(result,[L_IDX(L1)],Rect,[L_IDX(L2)],Y)})}
{%SET_U(Anno,Width,{%GET_U(result,[L_IDX(L1)],Rect,[L_IDX(L2)],Width)})}
{%SET_U(Anno,Height,{%GET_U(result,[L_IDX(L1)],Rect,[L_IDX(L2)],Height)})}
{%SET_U(Anno,BorderStyle,しない)}
{%SET_U(Anno,FillStyle,する)}
{%SET_U(Anno,FillColor,黄)}
{%SET_U(Anno,FillTransparent,する)}
{%DW_PASTE_RECT_ANNOTATION(XDW文書オープン1,Anno)}
)}
)}
XDW文書オープン(または DW_OPEN マクロ)でオープンしたXDW文書の指定ページから、テキストを位置(座標)付きで抽出します。
結果は PDFテキスト抽出(PDF_EXTRACT_TEXT)と同じ形で、抽出済データ用ユーザーデータにセットされます。PDF_EXTRACT_TEXT 用に作ったマクロ(JOIN・LOOP など)は、そのまま使えます。
ページ番号・抽出済データ用ユーザーデータ名・領域指定ユーザーデータ名の指定方法は、PDF_EXTRACT_TEXT と同じです。ページ番号には抽出対象のページ番号を指定します。Allを指定するとすべてのページが対象となります。ページの繰り返しの中で、そのページだけを抽出する場合は、ページ番号に {%DW_GET(PageLoopCount)} を指定します。
領域指定も PDF_EXTRACT_TEXT と同じ形です。同じ帳票の PDF があれば、PDFテキスト抽出支援ツールで作った領域(mm)をそのまま使えます。
対象は、アプリケーションから DocuWorks Printer で作成した文書などのテキストです。イメージ文書のページはテキストを持たないため、抽出されません(警告になります)。
抽出する文字のうち、康熙部首(⽂ など)・CJK部首補助(⻘ など)・CJK互換漢字の3字(漣・煉・溺)は同じ字形の普通の漢字に、半角の円記号(U+00A5)は円記号(U+005C)にしてセットします(PDF_EXTRACT_TEXT と同じです。Version 2.7.1から。康熙部首などの一部は Version 2.7.0から)。
戻り値は空文字です。ログには「テキストを抽出しました。 処理名: XDW文書オープン処理名 ページ: ページ番号」と出力されます。
抽出済データの最上位に、Source(XDW)・Version(2)・Warnings(警告)が追加されます。
テキストのまとまり(単語)の作り方が改善版になっています。文字の位置から行を作り、近い文字をまとめます。PDF_EXTRACT_TEXT の方式 2 と同じ作り方です(PDF_EXTRACT_TEXT の既定の方式 1 は今までと同じ作り方です)。
領域指定は、文字ごとに領域の中にあるかを判定します(PDF_EXTRACT_TEXT の方式 1 は単語の左上の点で判定します。方式 2 は文字ごとです)。領域の線にかかった単語は、領域の中の文字だけになります。
ページを回転したXDW文書でも、回転していない場合と同じまとまりで抽出されます(座標は回転後のページの座標です)。
文字の位置が取得できないページや文字があっても、エラーにはなりません。抽出済データの Warnings に、番号(1~)ごとに次の項目がセットされます。警告の数は「{%GET_USER_DATA_KEY_COUNT(抽出済データ用ユーザーデータ名,Warnings)}」で取得できます。
|
キー |
内容 |
|---|---|
|
Page |
ページ番号 |
|
Code |
警告の種類(下の表) |
|
Count |
抽出結果に入らなかった文字の数(スペースは数えません) |
|
Message |
警告の内容 |
|
Code |
内容 |
|---|---|
|
NoText |
ページにテキストがありません(イメージのページなど)。Count は0です。 |
|
NoPosition |
テキストはありますが、文字の位置が取得できないため、そのページの抽出結果を空にしました。DocuWorks Printer で作成した一部の文書(FAXで受信した文書など)で起こります。Count はページの文字数です。このページの文字を読み取るには OCR が必要です。 |
|
UnplacedChars |
位置が取得できない文字(Shift_JISで表せない文字など)があったため、その文字を除いて抽出しました。Count は除いた文字の数です。 |
紙面に表示されない文字(白い文字など)も、テキストにあれば抽出されます。
図形や画像で描かれた文字と、アノテーションの文字は抽出されません。アノテーションの文字は、アノテーションのマクロで取得してください。
イメージ文書に DocuWorks の OCR で付けたテキストは、文字の位置が正確でないため、正しいまとまりにならないことがあります。
1ページの抽出には、ページの文字数に応じて0.2秒~数秒かかります。
FileName D:\Sample\見積書.xdw PageCount 1 Source XDW Version 2 Pages 1 1 Text 御 X 72.99 Y 24.64 Width 9.15 Height 9.14 ・ ・ 8 Text 総金額 X 28.71 Y 88.47 Width 15.47 Height 4.91 9 Text 40,950円也 X 97.64 Y 88.47 Width 24.64 Height 4.91 ・ ・ Warnings
FileName D:\Sample\見積書.xdw PageCount 1 Source XDW Version 2 Pages 1 Rect 宛名 Texts 1 株式会社○○ 2 御中 TextBlock 1 Text 株式会社○○ X 20.83 Y 49.70 Width 34.08 Height 5.67 2 Text 御中 X 60.59 Y 49.70 Width 11.44 Height 5.67 X 15.00 Y 45.00 Width 60.00 Height 12.00 BottomRightX 75.00 BottomRightY 57.00 ・ ・ Warnings
イメージのページを含む文書の場合は、Warnings に次のようにセットされます。
Warnings 1 Page 2 Code NoText Count 0 Message ページにテキストがありません(イメージのページなど)。
例1 XDW文書オープン1でオープンしたXDW文書のすべてのページからテキストを抽出し、ページごとのテキストの数と、警告をログに出力する
# XDWテキスト抽出
{%DW_EXTRACT_TEXT(XDW文書オープン1,All,抽出データ)}
# ページごとのテキストの数
{%LOOP L1 {%GET_U(抽出データ,PageCount)}(
{%WRITE_LOG(ページ[L_IDX(L1)]: {%GET_USER_DATA_KEY_COUNT(抽出データ,Pages,[L_IDX(L1)])}件)}
)}
# 警告
{%LOOP L2 {%GET_USER_DATA_KEY_COUNT(抽出データ,Warnings)}(
{%WRITE_LOG(警告 ページ{%GET_U(抽出データ,Warnings,[L_IDX(L2)],Page)}: {%GET_U(抽出データ,Warnings,[L_IDX(L2)],Message)})}
)}
例2 XDW文書オープン1でオープンしたXDW文書の1ページ目から、宛名と総金額の領域を指定してテキストを抽出する
# 領域座標を設定
{%SET_U(領域指定,Page,All,宛名,X,15)}
{%SET_U(領域指定,Page,All,宛名,Y,45)}
{%SET_U(領域指定,Page,All,宛名,Width,60)}
{%SET_U(領域指定,Page,All,宛名,Height,12)}
{%SET_U(領域指定,Page,All,総金額,X,90)}
{%SET_U(領域指定,Page,All,総金額,Y,85)}
{%SET_U(領域指定,Page,All,総金額,BottomRightX,130)}
{%SET_U(領域指定,Page,All,総金額,BottomRightY,95)}
# XDWテキスト抽出
{%DW_EXTRACT_TEXT(XDW文書オープン1,1,抽出データ,領域指定)}
# 指定領域毎のテキストを取得(複数に分かれた単語も連結)
{%WRITE_LOG(宛名:{%JOIN(抽出データ,Pages,1,Rect,宛名,Texts, )})}
{%WRITE_LOG(総金額:{%JOIN(抽出データ,Pages,1,Rect,総金額,Texts, )})}
XDW文書オープン(または DW_OPEN マクロ)でオープンしたXDW文書の指定ページを画像にして文字を読み取り(OCR)、テキストを位置(座標)付きで抽出します。(Version 2.7.0から)
スキャンしたイメージ文書のように、テキストを持たないページからも抽出できます。結果は XDWテキスト抽出(DW_EXTRACT_TEXT)と同じ形で、抽出済データ用ユーザーデータにセットされます。DW_EXTRACT_TEXT・PDF_EXTRACT_TEXT 用に作ったマクロ(JOIN・LOOP など)は、そのまま使えます。
ページ番号・抽出済データ用ユーザーデータ名・領域指定ユーザーデータ名の指定方法は、DW_EXTRACT_TEXT と同じです。領域を指定すると、その領域だけを読み取ります(部分OCR)。領域より少し広い範囲を読み取り、領域の中の文字だけでまとまりを作るので、領域の線にかかった文字が崩れて読み取られることはありません。テキスト抽出支援ツールで作った領域(mm)は、PDF・XDW・OCR のどれでもそのまま使えます。
OCRオプション用ユーザーデータ名を指定すると、読み取りの設定を変えられます(下の表)。領域指定を使わずにOCRオプションだけを指定する場合は、領域指定ユーザーデータ名を空にします(例 {%DW_OCR_TEXT(XDW文書オープン1,All,抽出データ,,OCR設定)})。
戻り値は空文字です。ログには「テキストを抽出しました。 処理名: XDW文書オープン処理名 ページ: ページ番号」と出力されます。表認識(OCRオプションの Tables が 1)の場合は、最後に「 表: 見つけた表の数」が付きます。
文字の読み取りには、深層学習 OCR の PaddleOCR(PP-OCRv6_small)を使います(深層学習 OCR について)。DocuWorks の OCR は使わないので、DocuWorks Ver.9 の OCR の制限解除のライセンスは要りません。日本語と英数字を読み取ります。
このマクロを使うには、64 ビットの Windows が必要です(深層学習 OCR の部品が 64 ビットのため)。
テキストのまとまりの作り方は、XDWテキスト抽出(DW_EXTRACT_TEXT)と同じ(改善版)です。
読み取った文字のうち、康熙部首・CJK部首補助・CJK互換漢字の3字(漣・煉・溺)は同じ字形の普通の漢字に、半角の円記号(U+00A5)は円記号(U+005C)にしてセットします(PDF_EXTRACT_TEXT と同じです。Version 2.7.1から)。
読み取りには、1ページ(A4・300dpi)で1~2秒ほどかかります(パソコンの性能と、ページの文字の量によって変わります)。
アノテーションは、XDW文書の表示のとおりに画像に入り、読み取られます。アノテーションの文字を読み取らない場合は、例3のように、XDW文書を読み書き可能でオープンして DW_SHOW_OR_HIDE_ANNOTATION マクロで非表示にしてから読み取り、DW_CLOSE のオプション SaveFile を「保存しない」にしてクローズします(読み込み専用でオープンした文書は、表示を切り替えられません)。
OCRオプション用ユーザーデータに、次のキーで値をセットします。キーが無い場合や値が空の場合は、既定値になります。
|
キー |
内容 |
既定値 |
|---|---|---|
|
Dpi |
ページを画像にする解像度(150~600)。文字が小さい文書は、大きくすると読み取れることがあります(時間は長くなります)。 |
300 |
|
Tables |
表認識。1:表の罫線を見つけ、罫線で囲まれたセルを1つずつ読み取り、表の行・列とセルの文字を抽出データの Tables にセットします(下の「表認識の結果」)。読み取りの時間は約2倍になります。0:表認識をしません。(Version 2.7.1から) |
0 |
|
AreaOnly |
領域指定がある場合の読み取り方。1:領域だけを読み取る。0:ページ全体を読み取ってから、領域に当てはめる。Auto:領域を広げた面積の合計がページの半分を超える場合はページ全体、超えない場合は領域だけを読み取る。 |
Auto |
|
Margin |
領域だけを読み取る場合に、領域を広げて読み取る幅(mm・0~50)。領域の中の文字だけでまとまりを作るので、結果は領域の中の文字だけです。 |
10 |
|
Timeout |
1回の読み取りの上限(秒・10~3600)。超えるとエラーになります。表認識(Tables が 1)の場合の既定値は 600 です。 |
180(表認識は600) |
DW_EXTRACT_TEXT と同じ形です。最上位の Source は OCR になり、Engine(読み取りに使ったOCR)が加わります。文字が1つも読み取れないページ(白紙のページなど)は、Warnings に Code「NoText」がセットされます。
FileName D:\Sample\見積書_スキャン.xdw PageCount 1 Source OCR Engine PaddleOCR PP-OCRv6_small Version 2 Pages 1 1 Text 御見積書 X 70.62 Y 21.17 Width 68.81 Height 13.89 2 Text 株式会社 X 22.03 Y 48.02 Width 21.15 Height 7.37 ・ ・ Warnings
OCRオプションの Tables に 1 を指定すると、最上位に Tables が加わり、ページごとに見つけた表がセットされます(表が無いページは空です)。表のセルの中のテキストのまとまりには、Cell(表の番号,行,列)が加わります。Pages の形は変わらないので、今までのマクロはそのまま使えます。(Version 2.7.1から)
表の番号は、ページごとに 1 からの番号です。Rows・Cols は表の行と列の数、X・Y・Width・Height は表の位置(mm)です。
Cells は、セルごとの行(Row)・列(Col)・結合した行の数(RowSpan)と列の数(ColSpan)・文字(Text)・位置(罫線の内側・mm)です。上の行から、行の中は左から並びます。セルの中で行が分かれている文字は、半角の空白でつないで1つの Text にします。
Grid は、行×列のマスの文字です。結合したセルの文字は左上のマスだけに入り、結合で隠れたマスと空のセルは空文字です。表を行ごとに取り出す場合(例4)に使います。
表として認識するのは、罫線で囲まれたセルです。横の点線の罫線(FAXの明細の行の区切りなど)も罫線として扱います(縦の点線は、金額の欄の桁の区切りのことが多いため扱いません)。罫線の無い表は表として認識されず、テキストのまとまりは Pages だけにセットされます。
領域指定と一緒に使う場合は、領域を Margin だけ広げた範囲にある表がセットされ、表に Rect(領域の名前)が加わります。
FileName D:\Sample\請求書_スキャン.xdw PageCount 1 Source OCR Engine PaddleOCR PP-OCRv6_small Version 2 Pages 1 1 ・ ・ 34 Text 御請求額 X 29.59 Y 65.53 Width 10.99 Height 3.30 Cell 1,1,1 ・ ・ Tables 1 1 Rows 2 Cols 7 X 23.79 Y 65.11 Width 173.48 Height 9.23 Cells 1 Row 1 Col 1 RowSpan 1 ColSpan 1 Text 御請求額 X 23.79 Y 65.11 Width 22.52 Height 4.40 2 ・ ・ Grid 1 1 御請求額 2 御入金額 ・ ・ 2 1 105,230 2 0 ・ ・ 2 ・ ・ Warnings
例1 XDW文書オープン1でオープンしたスキャン文書のすべてのページを OCR で読み取り、ページごとのテキストの数をログに出力する
# XDW OCRテキスト抽出
{%DW_OCR_TEXT(XDW文書オープン1,All,抽出データ)}
# ページごとのテキストの数
{%LOOP L1 {%GET_U(抽出データ,PageCount)}(
{%WRITE_LOG(ページ[L_IDX(L1)]: {%GET_USER_DATA_KEY_COUNT(抽出データ,Pages,[L_IDX(L1)])}件)}
)}
例2 XDW文書オープン1でオープンしたXDW文書の1ページ目から、宛名と総金額の領域だけを 400dpi で読み取る
# 領域座標を設定
{%SET_U(領域指定,Page,All,宛名,X,15)}
{%SET_U(領域指定,Page,All,宛名,Y,45)}
{%SET_U(領域指定,Page,All,宛名,Width,60)}
{%SET_U(領域指定,Page,All,宛名,Height,12)}
{%SET_U(領域指定,Page,All,総金額,X,90)}
{%SET_U(領域指定,Page,All,総金額,Y,85)}
{%SET_U(領域指定,Page,All,総金額,BottomRightX,130)}
{%SET_U(領域指定,Page,All,総金額,BottomRightY,95)}
# OCRの設定
{%SET_U(OCR設定,Dpi,400)}
# XDW OCRテキスト抽出
{%DW_OCR_TEXT(XDW文書オープン1,1,抽出データ,領域指定,OCR設定)}
# 指定領域毎のテキストを取得(複数に分かれた単語も連結)
{%WRITE_LOG(宛名:{%JOIN(抽出データ,Pages,1,Rect,宛名,Texts, )})}
{%WRITE_LOG(総金額:{%JOIN(抽出データ,Pages,1,Rect,総金額,Texts, )})}
例3 処理中のXDWのアノテーションを非表示にして、すべてのページを OCR で読み取る(XDW文書は保存しないでクローズするので、変更されません)
# 読み書き可能でオープンして、アノテーションを非表示にする
{%SET_U(DwOpenOption,OpenMode,読み書き可能)}
{%DW_OPEN(XDW文書オープン1,{%GET(FullPathFileName)},DwOpenOption)}
{%DW_SHOW_OR_HIDE_ANNOTATION(XDW文書オープン1,Hide)}
# XDW OCRテキスト抽出
{%DW_OCR_TEXT(XDW文書オープン1,All,抽出データ)}
# 保存しないでクローズする
{%SET_U(DwCloseOption,SaveFile,保存しない)}
{%DW_CLOSE(XDW文書オープン1,DwCloseOption)}
例4 XDW文書オープン1でオープンしたXDW文書の1ページ目を表認識で読み取り、1つ目の表の2行目・1列目のセルの文字をログに出力する
# OCRの設定 (表認識)
{%SET_U(OCR設定,Tables,1)}
# XDW OCRテキスト抽出
{%DW_OCR_TEXT(XDW文書オープン1,1,抽出データ,,OCR設定)}
# 1つ目の表の2行目・1列目のセルの文字
{%WRITE_LOG({%GET_U(抽出データ,Tables,1,1,Grid,2,1)})}
XDWファイル名に指定したDocuWorks文書(XDW)を読み込み、テキスト抽出支援ツールのHTMLファイルを、ページごとにXDWと同じフォルダに出力します。(Version 2.7.0から)
テキスト抽出支援ツールには、ページのイメージの上に、XDWテキスト抽出(DW_EXTRACT_TEXT)と同じテキストのまとまりが赤枠で表示されます。ツールで領域を選ぶと、DW_EXTRACT_TEXT のマクロが生成されます。使い方はテキスト抽出支援ツールをご覧ください。
対象ページにはページ番号を指定します。Allを指定するとすべてのページが対象になります。
出力ファイル名を指定した場合は、指定した場所に出力します。ファイル名には「_P0001」のようにページ番号が付きます(PDFテキスト抽出支援ユーティリティ作成(PDF_CREATE_TOOL)と同じ)。
XDW文書は読み取り専用で開きます(文書は変更しません)。XDW文書オープンでオープンしておく必要はありません。
戻り値は空文字です。ログには「テキスト抽出支援ツールを作成しました。 XDWファイル名: XDWファイル名 ページ: 対象ページ htmlファイル名: 出力したファイル名」と出力されます。
例 処理中のXDWの1ページ目から、テキスト抽出支援ツール(XDWと同じフォルダの「XDWの名前_P0001.html」)を作成する。
{%DW_CREATE_TOOL({%GET(FullPathFileName)},1)}
XDWファイル名に指定したDocuWorks文書(XDW)のページを OCR で読み取り、テキスト抽出支援ツールのHTMLファイルを、ページごとにXDWと同じフォルダに出力します。(Version 2.7.0から)
テキスト抽出支援ツールには、ページのイメージの上に、XDW OCRテキスト抽出(DW_OCR_TEXT)と同じテキストのまとまりが赤枠で表示されます。ツールで領域を選ぶと、OCRの設定(解像度・表認識)と DW_OCR_TEXT のマクロが生成されます。スキャンしたイメージ文書からも作成できます。使い方はテキスト抽出支援ツールをご覧ください。
対象ページ・出力ファイル名の指定方法は、XDWテキスト抽出支援ツール作成(DW_CREATE_TOOL)と同じです。
OCRオプション用ユーザーデータ名を指定すると、解像度(Dpi)・表認識(Tables)・読み取りの上限(Timeout)を変えられます(DW_OCR_TEXT のOCRオプション)。生成されるマクロのOCRの設定も、同じ解像度・表認識になります。
XDW文書は読み取り専用で開きます(文書は変更しません)。このマクロを使うには、64 ビットの Windows が必要です(深層学習 OCR を使うため)。
戻り値は空文字です。ログには「テキスト抽出支援ツールを作成しました。 XDWファイル名: XDWファイル名 ページ: 対象ページ htmlファイル名: 出力したファイル名」と出力されます。
例 処理中のXDWの1ページ目を OCR で読み取り、テキスト抽出支援ツール(XDWと同じフォルダの「XDWの名前_P0001.html」)を作成する。
{%DW_CREATE_OCR_TOOL({%GET(FullPathFileName)},1)}
XBDバインダーファイル名に指定されたXBDバインダーファイルを新規作成します。
新規作成時にXDW文書ファイルを追加することもできます。ユーザーデータにファイルリストをセットして、追加XDW文書ファイルリストユーザーデータ名を指定すると追加できます。
ユーザーデータにセットするファイルパスの末尾に|を追加して続けて文書名を指定すると、バインダーに追加されるファイルの文書名を変更することができます。
以下の例では、「文書1.xdw」をバインダーに追加して、追加したXDW文書の名前を「文書_20230318」のように日付を含んだ文書名に変更します。(変更後の文書名に拡張子は不要です。)
{%ADD_USER_DATA(FileList,C:\Home\Test\文書1.xdw|文書_{%DATE(yyyyMMdd)})}
|はエスケープ文字なので、直後にマクロやカンマを書く場合は|を2つ並べて書く必要があります。
{%ADD_USER_DATA(FileList,C:\Home\Test\文書1.xdw||{%DATE(yyyyMMdd)})}
ページサイズと色に規定値以外の値が指定されている場合は、デフォルト値(ページサイズ:ページ最大サイズ,色:青)でバインダーが作成されます。
XBDバインダーファイル名に指定されたXBDバインダーファイルが既に存在する場合はエラーになります。
例1 空のバインダーを作成する。
{%DW_CREATE_BINDER(C:\Home\Test\バインダー.xbd,ページサイズ最大,紺)}
例2 空のバインダーを作成してファイルを追加する。
{%ADD_USER_DATA(FileList,C:\Home\Test\文書1.xdw)}
{%ADD_USER_DATA(FileList,C:\Home\Test\文書2.xdw)}
{%DW_CREATE_BINDER(C:\Home\Test\バインダー.xbd,ページサイズ最大,紺,FileList)}
XBDバインダーファイル名に指定されたXBDバインダーファイルをオープンし、ユーザーデータに格納されたXDW文書ファイルを追加します。
ユーザーデータにセットするファイルパスの末尾に|を追加して続けて文書名を指定すると、バインダーに追加されるファイルの文書名を変更することができます。
以下の例では、「文書1.xdw」をバインダーに追加して、追加したXDW文書の名前を「文書_20230318」のように日付を含んだ文書名に変更します。(変更後の文書名に拡張子は不要です。)
{%ADD_USER_DATA(FileList,C:\Home\Test\文書1.xdw|文書_{%DATE(yyyyMMdd)})}
|はエスケープ文字なので、直後にマクロやカンマを書く場合は|を2つ並べて書く必要があります。
{%ADD_USER_DATA(FileList,C:\Home\Test\文書1.xdw||{%DATE(yyyyMMdd)})}
追加位置は先頭か末尾を指定できます。
ページサイズと色は省略可能です。指定したXBDバインダーファイルが存在しない場合は新規作成を行いますが、その場合にページサイズと色を参照して作成します。
XBDバインダーファイルを新規作成する場合に、ページサイズと色が省略されたり、規定値以外の値が指定されている場合は、デフォルト値(ページサイズ:ページ最大サイズ,色:青)でバインダーが作成されます。
例1 C:\Home\Test\バインダー.xbdに、C:\Home\Test\文書1.xdw、文書2.xdwを追加する。
{%ADD_USER_DATA(FileList,C:\Home\Test\文書1.xdw)}
{%ADD_USER_DATA(FileList,C:\Home\Test\文書2.xdw)}
{%DW_INSERT_DOCUMENT_TO_BINDER(C:\Home\Test\バインダー.xbd,FileList,末尾)}
XBDバインダーファイル名に指定されたXBDバインダーファイルをオープンし、格納されているXDW文書ファイルを番号指定で削除します。
削除したいXDW文書ファイルの番号はユーザーデータを使って指定します。
XBDバインダーファイル名に指定されたXBDバインダーファイルが存在しない場合はエラーになります。
バインダー内に存在しないファイル番号を指定した場合は無視されます。また、同じ番号を2つ以上指定しても1つだけ処理します。
例1 C:\Home\Test\バインダー.xbdに格納されている1番目と4番目のXDW文書ファイルを削除する。
{%ADD_USER_DATA(NumberList,1)}
{%ADD_USER_DATA(NumberList,4)}
{%DW_DELETE_DOCUMENT_IN_BINDER(C:\Home\Test\バインダー.xbd,NumberList)}
XBDバインダーファイル名に指定されたXBDバインダーファイルのサイズ、及び色を設定します。
出力XBDバインダーファイル名は省略可能で、省略した場合は対象のXBDバインダーファイルを更新します。
ページサイズ、色に空文字を指定すると、対象のXBDバインダーファイルの情報を継承します。
出力XBDバインダーファイル名のパスに含まれるフォルダが存在しない場合は自動で作成します。また、出力先に既に同名のファイルが存在する場合はエラーとなります。
本マクロはXDW文書がクローズされた状態で実行してください。
このマクロは内部でバインダーを新規作成して、対象のバインダー内の文書を移す処理を行っています。また、バインダーの文書属性のコピーも行っています。DocuWorksAPIでバインダー情報を変更することができないため、このような処理で実装しています。
例1 C:\Home\Test\バインダー.xbdの色を赤に設定する。
{%DW_SET_BINDER_INFO(C:\Home\Test\バインダー.xbd,,赤)}
例2 C:\Home\Test\バインダー.xbdのページサイズをA3横に、色を赤に設定する。
{%DW_SET_BINDER_INFO(C:\Home\Test\バインダー.xbd,A3横,赤)}
例3 C:\Home\Test\バインダー.xbdのページサイズをA3横に設定し、新しいバインダーファイル(New_バインダー.xbd)を出力する。
{%DW_SET_BINDER_INFO(C:\Home\Test\バインダー.xbd,A3横,,C:\Home\Test\New_バインダー.xbd)}
対象ファイルで指定したDocuWorks文書にセキュリティを設定します。
オプションには以下のデータをセットしたユーザーデータ名を指定します。
|
ProtectType |
保護方式を次のいずれかで指定します。(PSWD56|PSWD128|PSWD256) |
|
Permission |
認可情報を次の中から指定します。複数指定可能で、複数指定する場合は|で区切って指定します。(文書の編集|アノテーションの編集|印刷|転記) |
|
OpenPassword |
開くパスワード(255文字以内)を暗号化したファイルを指定します。暗号化したファイルを作成するには、メイン画面のメニューのツールの 暗号ファイル作成ツール を使用します。 パスワードに使用できる文字は半角の英数記号で、大・小文字は区別されます。 省略した場合は、開く時にパスワードを要求されません。 |
|
FullAccessPassword |
フルアクセスパスワード(255文字以内)を暗号化したファイルを指定します。暗号化したファイルを作成するには、メイン画面のメニューのツールの 暗号ファイル作成ツール を使用します。 パスワードに使用できる文字は半角の英数記号で、大・小文字は区別されます。 省略した場合は、フルアクセスモードになる際のパスワードを要求されません。 |
|
Comment |
パスワード入力時のコメントを指定します。省略可能です。 |
本マクロはXDW文書がクローズされた状態で実行してください。
例1 処理中のXDW文書にセキュリティを設定する。
{%SET_U(PD_OPTION,ProtectType,PSWD256)}
{%SET_U(PD_OPTION,Permission,文書の編集|アノテーションの編集|印刷|転記)}
{%SET_U(PD_OPTION,OpenPassword,C:\Home\OpenPassword.dat)}
{%SET_U(PD_OPTION,FullAccessPassword,C:\Home\FullAccessPassword.dat)}
{%SET_U(PD_OPTION,Comment,)}
{%DW_PROTECT_DOCUMENT({%GET(FullPathFileName)},PD_OPTION)}
XDW文書オープン処理名で指定されたDocuWorks文書の現在のページの署名数を取得します。
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
例1 処理中のXDW文書の現在のページの署名数を取得します。(アノテーションの繰り返し処理の中でマクロ記述する場合)
{%DW_SIGNATURE_COUNT(XDW文書オープン1)}
XDW文書オープン処理名で指定されたDocuWorks文書の現在のページの署名情報を取得します。結果は引き数で指定したユーザーデータに格納されます。
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
ユーザーデータに格納される内容は以下の通りです。
対象の署名が電子印鑑の時は Info と StampInfo が設定されます。
対象の署名が電子証明書の時は Info と PkiInfo が設定されます。
DocuWorks電子印鑑ケースツールにより電子印鑑ケースが開かれていて、その電子印鑑ケースに「自分の電子印鑑」が含まれているか、「信頼済みの電子印鑑」に登録されているという条件を満たさない場合は、電子印鑑が未登録という状態となります。
|
第2キー |
名前 |
内容 |
|---|---|---|
|
Info |
SignatureType |
署名タイプ。次の何れか。 DocuWorks電子印鑑 電子証明書SHA1 電子証明書SHA256 |
|
Info |
Page |
署名の貼られているページ。バインダーの場合は通し番号。 |
|
Info |
HorPos |
署名の左上のX座標。 |
|
Info |
VerPos |
署名の左上のY座標。 |
|
Info |
Width |
署名の幅。 |
|
Info |
Height |
署名の高さ。 |
|
Info |
SignedTime |
署名の日時。(yyyy/MM/dd HH:mm:ss) |
|
第2キー |
名前 |
内容 |
||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
StampInfo |
StampName |
署名に使われた電子印鑑の印鑑名。 |
||||||||||
|
StampInfo |
OwnerName |
署名に使われた電子印鑑の所有者名。 |
||||||||||
|
StampInfo |
ValidDate |
署名に使われた電子印鑑の有効期限。(yyyy/MM/dd HH:mm:ss) |
||||||||||
|
StampInfo |
Remarks |
署名に使われた電子印鑑の備考。 |
||||||||||
|
StampInfo |
DocVerificationStatus |
DocuWorksファイルデータの整合性の検証結果。次の何れか。 未検証 検証済み_未編集 検証済み_編集あり 検証済み_異常 |
||||||||||
|
StampInfo |
DocVerificationStatusMessage |
DocVerificationStatus に対応するメッセージ。
|
||||||||||
|
StampInfo |
StampVerificationStatus |
署名に使われた電子印鑑の信頼性の検証結果。次の何れか。 未検証 検証済み_電子印鑑登録済み 検証済み_電子印鑑未登録 |
||||||||||
|
StampInfo |
StampVerificationStatusMessage |
StampVerificationStatus に対応するメッセージ。
|
|
第2キー |
名前 |
内容 |
||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
PkiInfo |
Module |
署名を行ったモジュール名。 |
||||||||||||||||||||||||
|
PkiInfo |
SubjectDN |
署名者の証明書のSubjectのDN。 |
||||||||||||||||||||||||
|
PkiInfo |
Subject |
基本的には署名者の証明書のSubjectのCNが返される。CNがない場合はCN→OU→O→Eの順に内容を返す。 |
||||||||||||||||||||||||
|
PkiInfo |
IssuerDN |
署名者の証明書のIssuerのDN。 |
||||||||||||||||||||||||
|
PkiInfo |
Issuer |
基本的には署名者の証明書のIssuerのCNが返される。CNがない場合はCN→OU→O→Eの順に内容を返す。 |
||||||||||||||||||||||||
|
PkiInfo |
NotBefore |
署名者の証明書の有効期限。(yyyy/MM/dd HH:mm:ss) |
||||||||||||||||||||||||
|
PkiInfo |
NotAfter |
署名者の証明書の有効期限の終了日時。(yyyy/MM/dd HH:mm:ss) |
||||||||||||||||||||||||
|
PkiInfo |
Serial |
署名者の証明書のシリアル番号を16進数で返す。 |
||||||||||||||||||||||||
|
PkiInfo |
SignerCert |
署名者の証明書データ。バイトデータを16進数ダンプにした文字列。 |
||||||||||||||||||||||||
|
PkiInfo |
Remarks |
署名の備考。 |
||||||||||||||||||||||||
|
PkiInfo |
SigningTime |
署名を行った時刻。(yyyy/MM/dd HH:mm:ss) |
||||||||||||||||||||||||
|
PkiInfo |
DocVerificationStatus |
署名文書の検証結果。次の何れか。 未検証 検証済み_未編集_信頼未確認 検証済み_編集あり_信頼未確認 異常 検証済み_未編集_信頼確認 検証済み_編集あり_信頼確認 |
||||||||||||||||||||||||
|
PkiInfo |
DocVerificationStatusMessage |
DocVerificationStatus に対応するメッセージ。
|
||||||||||||||||||||||||
|
PkiInfo |
CertVerificationType |
証明書の検証結果を参照して証明書の検証をしていた場合はDWCertの持つ検証レベルを取得して証明書の検証方法を返す。証明書の検証をしていなかった場合はレジストリにある検証レベルを取得して証明書の検証方法を返す。 次の何れか。 信頼レベル低 信頼レベル中_ローカル失効確認 信頼レベル中_オンライン失効確認 信頼レベル高_ローカル失効確認 信頼レベル高_オンライン失効確認 |
||||||||||||||||||||||||
|
PkiInfo |
CertVerificationTypeMessage |
CertVerificationType に対応するメッセージ。
|
||||||||||||||||||||||||
|
PkiInfo |
CertVerificationStatus |
証明書の検証結果。次の何れか。 未検証 有効 ルート証明書不明 失効確認不可 有効期限外 有効期限不正 破棄済み 中間証明書破棄済み 署名不正 キー使用方法不正 未定義エラー |
||||||||||||||||||||||||
|
PkiInfo |
CertVerificationStatusMessage |
CertVerificationStatus に対応するメッセージ。
|
例1 処理中のXDW文書の現在のページの指定された署名No1の署名情報を取得し、結果をログに出力します。(ページの繰り返し処理の中でマクロ記述する場合)
{%DW_SIGNATURE_INFO(XDW文書オープン1,1,Signature)}
{%WRITE_LOG(SignatureType:{%GET_U(Signature,Info,SignatureType)})}
{%WRITE_LOG(Page:{%GET_U(Signature,Info,Page)})}
{%WRITE_LOG(HorPos:{%GET_U(Signature,Info,HorPos)})}
{%WRITE_LOG(VerPos:{%GET_U(Signature,Info,VerPos)})}
{%WRITE_LOG(Width:{%GET_U(Signature,Info,Width)})}
{%WRITE_LOG(Height:{%GET_U(Signature,Info,Height)})}
{%WRITE_LOG(SignedTime:{%GET_U(Signature,Info,SignedTime)})}
{%IF({%GET_U(Signature,Info,SignatureType)}=DocuWorks電子印鑑,
{%WRITE_LOG(StampName:{%GET_U(Signature,StampInfo,StampName)})}
{%WRITE_LOG(OwnerName:{%GET_U(Signature,StampInfo,OwnerName)})}
{%WRITE_LOG(ValidDate:{%GET_U(Signature,StampInfo,ValidDate)})}
{%WRITE_LOG(Remarks:{%GET_U(Signature,StampInfo,Remarks)})}
{%WRITE_LOG(DocVerificationStatus:{%GET_U(Signature,StampInfo,DocVerificationStatus)})}
{%WRITE_LOG(DocVerificationStatusMessage:{%GET_U(Signature,StampInfo,DocVerificationStatusMessage)})}
{%WRITE_LOG(StampVerificationStatus:{%GET_U(Signature,StampInfo,StampVerificationStatus)})}
{%WRITE_LOG(StampVerificationStatusMessage:{%GET_U(Signature,StampInfo,StampVerificationStatusMessage)})}
,
{%WRITE_LOG(Module:{%GET_U(Signature,PkiInfo,Module)})}
{%WRITE_LOG(SubjectDN:{%GET_U(Signature,PkiInfo,SubjectDN)})}
{%WRITE_LOG(Subject:{%GET_U(Signature,PkiInfo,Subject)})}
{%WRITE_LOG(IssuerDN:{%GET_U(Signature,PkiInfo,IssuerDN)})}
{%WRITE_LOG(Issuer:{%GET_U(Signature,PkiInfo,Issuer)})}
{%WRITE_LOG(NotBefore:{%GET_U(Signature,PkiInfo,NotBefore)})}
{%WRITE_LOG(NotAfter:{%GET_U(Signature,PkiInfo,NotAfter)})}
{%WRITE_LOG(Serial:{%GET_U(Signature,PkiInfo,Serial)})}
{%WRITE_LOG(SignerCert:{%GET_U(Signature,PkiInfo,SignerCert)})}
{%WRITE_LOG(Remarks:{%GET_U(Signature,PkiInfo,Remarks)})}
{%WRITE_LOG(SigningTime:{%GET_U(Signature,PkiInfo,SigningTime)})}
{%WRITE_LOG(DocVerificationStatus:{%GET_U(Signature,PkiInfo,DocVerificationStatus)})}
{%WRITE_LOG(DocVerificationStatusMessage:{%GET_U(Signature,PkiInfo,DocVerificationStatusMessage)})}
{%WRITE_LOG(CertVerificationType:{%GET_U(Signature,PkiInfo,CertVerificationType)})}
{%WRITE_LOG(CertVerificationTypeMessage:{%GET_U(Signature,PkiInfo,CertVerificationTypeMessage)})}
{%WRITE_LOG(CertVerificationStatus:{%GET_U(Signature,PkiInfo,CertVerificationStatus)})}
{%WRITE_LOG(CertVerificationStatusMessage:{%GET_U(Signature,PkiInfo,CertVerificationStatusMessage)})}
)}
XDW文書オープン処理名で指定されたDocuWorks文書の現在のページから指定された署名Noの署名の状態を更新します。
ページを指定する場合は、第1引数に「#Page」(FORMAT2)を指定します。
例1 処理中のXDW文書の指定された署名No1の署名の状態を更新します。
{%DW_UPDATE_SIGNATURE_STATUS(XDW文書オープン1,1)}
XDW文書ファイル名に指定されたXDW文書の指定ページに電子印鑑を使って署名を行います。
DocuWorks電子印鑑ケースツールにより電子印鑑ケースが開かれていて、その電子印鑑ケースに「自分の電子印鑑」が含まれている必要があります。
署名に使用される電子印鑑は「自分の電子印鑑」の1つ目です。(複数の電子印鑑がある場合、2つ目以降の電子印鑑を指定する事はできません)
戻り値に署名Noが返却されます。(署名Noはページ毎の番号になっています。)
バインダーに署名を行った場合は、バインダーをばらしたり、文書を束ねたりできなくなります。また、署名を行った文書はバインダーに束ねる事はできません。
本マクロは、XDW文書がクローズされた状態で実行してください。
例1 「C:\Test.xdw」の1ページ目の座標(20mm,10mm)に電子印鑑で署名を行う。
{%DW_SIGN_DOCUMENT_WITH_STAMP(C:\Test.xdw,1,20,10)}