eDocArrangement2 ヘルプ / 共通マクロ書式
PDFファイルをオープンすると、そのファイルを識別するためのキーを返却します。以後、識別キーを使って処理を行います。(識別キーはひとつだけメモリに記憶されますので省略することもできます。)
マクロでオープンされたPDFファイルで、クローズされていないファイルがある場合は、ファイルの繰り返し処理の最後、又は設定の実行の最後でクローズされます。(この場合のクローズは更新内容は保存されません。)
PDFのオープンクローズを使用すると、オープン時にファイルをロックするので他のプロセスが処理中にアクセスするのを防ぐことができます。また、処理の途中でエラーが発生してクローズが行われない場合はPDFの更新が行われないのでトランザクション処理が可能です。
引き数で指定されたPDFファイルをオープンします。ファイルが存在しない場合はエラーとなります。
オープンに成功した場合は識別キー、失敗した場合はエラーになります。
オープンに成功した場合は識別キーがメモリに記憶されます。以後、識別キーが省略された場合はメモリに記憶している識別キーを参照します。
メモリに記憶している識別キーは設定の実行が終わるまで保持しています。また、別のファイルをオープンすると上書きされます。
ファイルが使用中など、ファイルをオープンできなかった場合はエラーが発生します。
例1 D:\Home\PdfDemo\Demo01\Sample.pdfをオープンする。
#PDFファイルをオープン
{%PDF_OPEN(D:\Home\PdfDemo\Demo01\Sample.pdf)}
#クローズ
{%PDF_CLOSE()}
例2 識別キーを使用する場合(同時に複数のファイルを扱う場合はこちらを使ってください。)
#PDFファイルをオープン
{%SET_U(Pdf,Handle1,{%PDF_OPEN(D:\Home\PdfDemo\Demo01\Sample1.pdf)})}
{%SET_U(Pdf,Handle2,{%PDF_OPEN(D:\Home\PdfDemo\Demo01\Sample2.pdf)})}
#Sample1.pdfから文書属性(処理日)を取得
{%SET_U(属性,処理日,{%PDF_GET_DOCUMENT_ATTRIBUTE(#Key,{%GET_U(Pdf,Handle1)},処理日)})}
#Sample2.pdfにSample1.pdfから取得した文書属性(処理日)を設定
{%PDF_SET_DOCUMENT_ATTRIBUTE(#Key,{%GET_U(Pdf,Handle2)},処理日,{%GET_U(属性,処理日)})}
#クローズ
{%PDF_CLOSE({%GET_U(Pdf,Handle1)})}
{%PDF_CLOSE({%GET_U(Pdf,Handle2)})}
引き数に渡されたハンドルのPDFファイルをクローズします。
引き数が省略された場合はメモリに記憶されている識別キーを参照して対象ファイルをクローズします。
オープンされているPDFファイルがない場合に呼び出してもエラーにならず、何も行いません。
PDFファイルの指定ページからテキストを抽出します。
ページ番号には抽出対象のページ番号を指定します。Allを指定するとすべてのページが対象となります。
抽出済データ用ユーザーデータ名には、抽出したテキストデータを格納するユーザーデータの名前を指定します。
領域指定ユーザーデータ名には、特定の領域のテキストを抽出するための座標情報をセットしたユーザーデータの名前を指定します。
方式には、テキストのまとまり(単語)の作り方を 1 か 2 で指定します。省略したときは 1 です。(Version 2.7.0から)
1:今までと同じ作り方です。
2:改善版です。文字の位置から行を作り、近い文字をまとめます(DocuWorks文書の DW_EXTRACT_TEXT と同じ作り方)。領域指定は、文字ごとに領域の中にあるかを判定します(まとまりの範囲が丸ごと領域の中にあるときは、そのまとまりの文字をすべて取ります)。抽出済データの最上位に Version(2) が追加されます。
領域指定を使わずに方式だけを指定するときは、領域指定ユーザーデータ名を空にします(例 {%PDF_EXTRACT_TEXT(All,抽出データ,,2)})。
所有者パスワードで内容のコピーが禁止されたPDFでは、エラーになります。(Version 2.7.0から)
領域指定は以下のような階層データをユーザーデータで作成して指定します。
領域指定
Page
All(ページ番号の指定も可)
項目名1(左下座標を指定)
X 左上X座標
Y 左上Y座標
BottomRightX 右下X座標
BottomRightY 右下Y座標
項目名2(幅と高さを指定)
X 左上X座標
Y 左上Y座標
Width 幅
Height 高さ
座標指定には以下の2つの方法があります:
方法1:X、Y、BottomRightX、BottomRightYで指定
方法2:X、Y、Width、Heightで指定
両方の方法で座標を指定した場合、BottomRightX、BottomRightYが優先されます。
工事名と図面名の座標を指定する場合

工事名はA棟と新築工事の間にスペースがあるため、単語の認識が2つに分かれます。
領域を工事名の左側の枠内の範囲にすれば分割された単語をすべて取得することができます。
{%SET_U(範囲指定,Page,All,工事名,X,192.85)}
{%SET_U(範囲指定,Page,All,工事名,Y,179.47)}
{%SET_U(範囲指定,Page,All,工事名,BottomRightX,253.55)}
{%SET_U(範囲指定,Page,All,工事名,BottomRightY,185.20)}
{%SET_U(範囲指定,Page,All,図面名,X,192.61)}
{%SET_U(範囲指定,Page,All,図面名,Y,186.88)}
{%SET_U(範囲指定,Page,All,図面名,BottomRightX,253.55)}
{%SET_U(範囲指定,Page,All,図面名,BottomRightY,193.09)}
領域指定ユーザーデータ名を指定しない場合、以下のような結果が取得されます:
FileName 図面サンプル.pdf PageCount 2 Pages 1 1 Text 図面番号 X 268.25 Y 179.66 Width 14.64 Height 3.42 2 Text 3 X 278.93 Y 190.12 Width 2.12 Height 3.70 ・ ・
領域指定ユーザーデータ名を指定した場合、以下のような結果が取得されます:
FileName ng.PDF PageCount 1 Pages 1 Rect 工事名 Texts 1 A社 2 新築工事 TextBlock 1 Text A社 X 194.61 Y 180.50 Width 6.06 Height 3.48 2 Text 新築工事 X 202.16 Y 180.44 Width 14.81 Height 3.54 X 192.85 Y 179.47 Width 60.70 Height 5.74 BottomRightX 253.55 BottomRightY 185.20 図面名 Texts 1 1階 2 平面詳細図 ・ ・
例1 sample.pdfの1ページ目からすべてのテキストを抽出する
#PDFファイルをオープン
{%PDF_OPEN(D:\Home\PdfDemo\Demo01\Sample.pdf)}
# PDFテキスト抽出
{%PDF_EXTRACT_TEXT(1,抽出データ)}
# 抽出したテキスト数を確認
{%WRITE_LOG(抽出したテキスト数: {%GET_USER_DATA_COUNT(抽出データ,Pages,1)})}
#クローズ
{%PDF_CLOSE()}
例2 処理中PDFファイルの全ページから工事名と図面名の領域を指定してテキストを抽出する
#PDFファイルをオープン
{%PDF_OPEN({%GET(FullPathFileName)})}
# 領域座標を設定
{%SET_U(範囲指定,Page,All,工事名,X,192.85)}
{%SET_U(範囲指定,Page,All,工事名,Y,179.47)}
{%SET_U(範囲指定,Page,All,工事名,BottomRightX,253.55)}
{%SET_U(範囲指定,Page,All,工事名,BottomRightY,185.20)}
{%SET_U(範囲指定,Page,All,図面名,X,192.61)}
{%SET_U(範囲指定,Page,All,図面名,Y,186.88)}
{%SET_U(範囲指定,Page,All,図面名,BottomRightX,253.55)}
{%SET_U(範囲指定,Page,All,図面名,BottomRightY,193.09)}
# PDFテキスト抽出
{%PDF_EXTRACT_TEXT(All,抽出データ)}
{%LOOP L1 {%GET_U(抽出データ,PageCount)}(
{%WRITE_LOG(Page:[L_IDX(L1)])}
# 指定領域毎のテキストを取得(複数に分かれた単語も連結)
{%SET_U(属性,工事名,{%JOIN(抽出データ,Pages,[L_IDX(L1)],Rect,工事名,Texts, )})}
{%SET_U(属性,図面名,{%JOIN(抽出データ,Pages,[L_IDX(L1)],Rect,図面名,Texts, )})}
{%WRITE_LOG(工事名:{%GET_U(属性,工事名)})}
{%WRITE_LOG(図面名:{%GET_U(属性,図面名)})}
)}
#クローズ
{%PDF_CLOSE()}
オープンしたPDFファイルの指定ページを画像にして文字を読み取り(OCR)、テキストを位置(座標)付きで抽出します。(Version 2.7.0から)
PDFのテキストは使わずにページの画像を読み取るので、スキャンしたイメージのPDFからも抽出できます。結果は PDFテキスト抽出(PDF_EXTRACT_TEXT)と同じ形で、抽出済データ用ユーザーデータにセットされます。PDF_EXTRACT_TEXT 用に作ったマクロ(JOIN・LOOP など)は、そのまま使えます。
識別キー・ページ番号・抽出済データ用ユーザーデータ名・領域指定ユーザーデータ名の指定方法は、PDF_EXTRACT_TEXT と同じです。領域を指定すると、その領域だけを読み取ります(部分OCR)。領域より少し広い範囲を読み取り、領域の中の文字だけでまとまりを作るので、領域の線にかかった文字が崩れて読み取られることはありません。
OCRオプション用ユーザーデータ名を指定すると、読み取りの設定を変えられます(下の表)。領域指定を使わずにOCRオプションだけを指定する場合は、領域指定ユーザーデータ名を空にします(例 {%PDF_OCR_TEXT(All,抽出データ,,OCR設定)})。
戻り値は空文字です。ログには「テキストを抽出しました。 PDFファイル識別子: 識別キー ページ: ページ番号」と出力されます。
文字の読み取りには、深層学習 OCR の PaddleOCR(PP-OCRv6_small)を使います(深層学習 OCR について)。DocuWorks の OCR は使わないので、DocuWorks Ver.9 の OCR の制限解除のライセンスは要りません。日本語と英数字を読み取ります。
このマクロを使うには、64 ビットの Windows が必要です(深層学習 OCR の部品が 64 ビットのため)。
テキストのまとまりの作り方は、XDWテキスト抽出(DW_EXTRACT_TEXT)と同じ(改善版)です。
読み取りには、1ページ(A4・300dpi)で1~2秒ほどかかります(パソコンの性能と、ページの文字の量によって変わります)。
ページに描かれた文字だけを読み取ります。PDFのテキストにあっても、紙面に表示されない文字(白い文字など)は読み取られません。
OCRオプション用ユーザーデータに、次のキーで値をセットします。キーが無い場合や値が空の場合は、既定値になります。
|
キー |
内容 |
既定値 |
|---|---|---|
|
Dpi |
ページを画像にする解像度(150~600)。文字が小さい文書は、大きくすると読み取れることがあります(時間は長くなります)。 |
300 |
|
AreaOnly |
領域指定がある場合の読み取り方。1:領域だけを読み取る。0:ページ全体を読み取ってから、領域に当てはめる。Auto:領域を広げた面積の合計がページの半分を超える場合はページ全体、超えない場合は領域だけを読み取る。 |
Auto |
|
Margin |
領域だけを読み取る場合に、領域を広げて読み取る幅(mm・0~50)。領域の中の文字だけでまとまりを作るので、結果は領域の中の文字だけです。 |
10 |
|
Timeout |
1回の読み取りの上限(秒・10~3600)。超えるとエラーになります。 |
180 |
PDF_EXTRACT_TEXT と同じ形で、最上位に Source(OCR)・Engine(読み取りに使ったOCR)・Version(2)・Warnings(警告)が加わります(XDW OCRテキスト抽出(DW_OCR_TEXT)と同じ)。文字が1つも読み取れないページ(白紙のページなど)は、Warnings に Code「NoText」がセットされます。
FileName D:\Sample\見積書_スキャン.pdf 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 ・ ・ Warnings
例 PDFファイルの1ページ目から、宛名と総金額の領域だけを OCR で読み取る
#PDFファイルをオープン
{%PDF_OPEN({%GET(FullPathFileName)})}
# 領域座標を設定
{%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)}
# PDF OCRテキスト抽出
{%PDF_OCR_TEXT(1,抽出データ,領域指定)}
# 指定領域毎のテキストを取得(複数に分かれた単語も連結)
{%WRITE_LOG(宛名:{%JOIN(抽出データ,Pages,1,Rect,宛名,Texts, )})}
{%WRITE_LOG(総金額:{%JOIN(抽出データ,Pages,1,Rect,総金額,Texts, )})}
#クローズ
{%PDF_CLOSE()}
PDFファイルの指定ページをイメージに変換して、QRコードを読み取ります。
読み取り結果は、DocuWorks文書の処理「QRコード読み取り(v2)」と同じ項目名・同じ値の形式でユーザーデータに格納されます。「QRコード読み取り(v2)」用に作ったマクロは、参照するユーザーデータの階層を変えるだけでそのまま使えます。
戻り値は読み取ったQRコードの総数です。検索文字で絞り込んだ後の件数で、全ページの合計になります。0件はエラーになりません(0を返します)。
|
引数 |
内容 |
|---|---|
|
ページ番号 |
読み取り対象のページ番号を指定します。1以上の整数、またはAll(全ページ)を指定します。PDFファイルのページ数を超えるページを指定するとエラーになります。 |
|
結果ユーザーデータ名 |
読み取り結果を格納するユーザーデータの名前を指定します。実行時に同名のユーザーデータがある場合は削除してから作り直します。 |
|
モード |
SpeedPriority(速度優先)、Standard(標準)、RecognitionPriority(認識優先)のいずれかを指定します。省略した場合はStandardになります。 |
|
文字コード |
SJIS、UTF-8、自動のいずれかを指定します。省略した場合はSJISになります。 |
|
オプションユーザーデータ名 |
詳細設定・範囲指定・検索文字をまとめた階層データを作成したユーザーデータの名前を指定します。指定したキーだけがモードの値を上書きします。 |
オプションユーザーデータは以下のような階層データをユーザーデータで作成して指定します。指定しなかったキーはモードの値のままになります。
オプションユーザーデータ名
Dpi ページをイメージに変換する解像度(72~600)。既定 300
TimeBudgetMs 処理時間の上限(ms)。0=無制限
BrightnessBorder 固定2値化しきい値(0~255)。0=自動
MinimumModuleSize 最小モジュールサイズ(px, 1~255)
MinFinderModuleSize ファインダー検出の最小モジュール(px, 0より大きい数値)
MaxSymbols 検出最大数。0=無制限
SearchString 検索文字(正規表現)。一致したQRコードだけを結果に残す
Range
StartX 範囲 X開始(%, 0~100の整数)
StartY 範囲 Y開始(%)
EndX 範囲 X終了(%) ※開始 < 終了
EndY 範囲 Y終了(%)
キーの値が空文字の場合は、指定しなかったものとして扱います(モードの値のままになります)。Rangeを指定する場合はStartX・StartY・EndX・EndYをすべて指定してください。
PDFのページには解像度の概念がないため、QRコードを読み取るときの解像度はDpiで指定します。読み取りに使った解像度は結果のDpiに格納されます。範囲指定をしても、結果の座標はページ全体を基準にした値になります。
結果ユーザーデータには以下のような内容が格納されます。読み取り対象にしたページは、QRコードが0件でもページのスレッドが作られます。
結果ユーザーデータ名
FileName PDFのファイル名
PageCount PDFの総ページ数
Count 読み取ったQRコードの総数(全ページ合計・絞り込み後。戻り値と同じ)
Pages
<ページ番号> ← 対象ページは0件でもスレッドを作る
<番号 1~n> ← 読み順(上→下、左→右)
Dpi イメージに変換した解像度(dpi)
Data QRコードの内容
Version 型番 1~40
Level 誤り訂正レベルの数値 0=L,1=M,2=Q,3=H
LeftTopX / LeftTopY / RightTopX / RightTopY
RightBottomX / RightBottomY / LeftBottomX / LeftBottomY
四隅の座標(mm・小数第2位で四捨五入・ページ左上が原点)
Dgree QRコードの回転角度(0~359)
DegreeForRotatePage 正立させる回転角度(0/90/180/270)
TotalNumber / SequenceNumber / CheckDigit 連結QR情報(非連結は0)
MaskPattern / CharacterSet / ErrorsCorrected / DetectorStrategy / IsStructuredAppend
Info ← Pages と同じ階層
Count 総件数
TimedOut いずれかのページで打ち切りが起きたら True
ElapsedMilliseconds 解析時間の合計(ms)
SuspectedRegionCount 読み漏らし候補の合計
Pages
<ページ番号>
Count / TimedOut / ElapsedMilliseconds / SuspectedRegionCount
SuspectedRegions
<番号>
Left / Top / Width / Height / CenterX / CenterY (mm)
FinderCount / Confidence
ページのスレッドの直下はQRコードの番号だけです。解析全体の情報はPagesと同じ階層のInfoに格納されるため、{%GET_USER_DATA_KEY_COUNT(結果ユーザーデータ名,Pages,ページ番号)}でページごとのQRコードの数が取得できます。
|
取りたいもの |
書き方 |
|---|---|
|
全体の件数 |
{%GET_U(QR結果,Count)} |
|
2ページ目の件数 |
{%GET_USER_DATA_KEY_COUNT(QR結果,Pages,2)} |
|
2ページ目の1件目の内容 |
{%GET_U(QR結果,Pages,2,1,Data)} |
|
2ページ目が打ち切られたか |
{%GET_U(QR結果,Info,Pages,2,TimedOut)} |
|
読み取り対象になったページ数 |
{%GET_USER_DATA_KEY_COUNT(QR結果,Pages)} |
0件・打ち切り(TimedOut)・読み漏らし候補ありは、いずれもエラーになりません。結果とInfoに記録されるので、判定はマクロで行ってください。
分割マークの機能はありません。分割マークはDocuWorks文書のページに付ける機能です。PDFの分割は{%PDF_SPLIT_PAGE(ページ,出力ファイルパス)}で行ってください。
詳細設定は、オプションユーザーデータで指定したキーだけがモードの値を上書きします。「QRコード読み取り(v2)」はチェックを入れると5項目すべてがモードの値を上書きします。
ページ番号にAllを指定して全ページを対象にできます。
解析全体の情報は、別のユーザーデータではなく結果ユーザーデータの中のInfoに格納されます。
文字コードは数値ではなく、SJIS・UTF-8・自動の語で指定します(READ_FILE・READ_CSV_FILEと同じ表記)。
例1 処理中のPDFファイルの全ページからQRコードを読み取り、1件目の内容を文書属性に入れる。
#PDFファイルをオープン
{%PDF_OPEN({%GET(FullPathFileName)})}
#全ページのQRコードを読み取る(認識優先・文字コードは自動判定)
{%SET_U(wk,QR件数,{%PDF_DECODE_QR(All,QR結果,RecognitionPriority,自動)})}
#1件も読めなければ業務エラーとして分岐用のフラグを立てる
{%IF({%GET_U(wk,QR件数)}=0,
{%SET_U(wk,結果,QRなし)}
,
{%SET_U(wk,結果,OK)}
{%SET_U(属性,管理番号,{%GET_U(QR結果,Pages,1,1,Data)})}
)}
#PDFファイルをクローズ
{%PDF_CLOSE()}
例2 範囲と検索文字を指定して読み取り、ページごとに件数を確認する。
#PDFファイルをオープン
{%PDF_OPEN({%GET(FullPathFileName)})}
#読み取り条件(右上25%・管理番号で始まるQRだけ・上限5秒)
{%SET_U(QR条件,Range,StartX,50)}
{%SET_U(QR条件,Range,StartY,0)}
{%SET_U(QR条件,Range,EndX,100)}
{%SET_U(QR条件,Range,EndY,50)}
{%SET_U(QR条件,SearchString,^管理番号)}
{%SET_U(QR条件,TimeBudgetMs,5000)}
#全ページのQRコードを読み取る
{%SET_U(wk,QR件数,{%PDF_DECODE_QR(All,QR結果,Standard,SJIS,QR条件)})}
#ページごとに件数と打ち切りを記録する
{%LOOP L1 {%GET_U(QR結果,PageCount)}(
{%WRITE_LOG(Page:[L_IDX(L1)] 件数:{%GET_USER_DATA_KEY_COUNT(QR結果,Pages,[L_IDX(L1)])} 打ち切り:{%GET_U(QR結果,Info,Pages,[L_IDX(L1)],TimedOut)})}
)}
#PDFファイルをクローズ
{%PDF_CLOSE()}
オープンされているPDFファイルから文書情報を取得します。
結果格納用ユーザーデータ名には、取得した情報を格納するユーザーデータの名前を指定します。指定したユーザーデータに既存の内容がある場合は置き換えられます。
結果格納用ユーザーデータの内容
|
名前 |
内容 |
|---|---|
|
Pages |
ページ数 |
|
Version |
PDFのバージョン(1.4、1.7 など) |
バージョンを取得できなかった場合は空文字が格納されます。
例1 PDFファイルのページ数とバージョンを取得してログに出力する。
#PDFファイルをオープン
{%PDF_OPEN({%GET(FullPathFileName)})}
#文書情報を取得
{%PDF_GET_DOCUMENT_INFO(DocInfo)}
{%WRITE_LOG(ページ数:{%GET_U(DocInfo,Pages)})}
{%WRITE_LOG(バージョン:{%GET_U(DocInfo,Version)})}
#クローズ
{%PDF_CLOSE()}
結果
ページ数:3
バージョン:1.4
例2 識別キーを使用して、同時にオープンした複数のPDFファイルのページ数を取得する。
#PDFファイルをオープン
{%SET_U(Pdf,Handle1,{%PDF_OPEN(D:\Home\PdfDemo\Demo01\Sample1.pdf)})}
{%SET_U(Pdf,Handle2,{%PDF_OPEN(D:\Home\PdfDemo\Demo01\Sample2.pdf)})}
#それぞれの文書情報を取得
{%PDF_GET_DOCUMENT_INFO(#Key,{%GET_U(Pdf,Handle1)},DocInfo1)}
{%PDF_GET_DOCUMENT_INFO(#Key,{%GET_U(Pdf,Handle2)},DocInfo2)}
{%WRITE_LOG(Sample1.pdf:{%GET_U(DocInfo1,Pages)}ページ)}
{%WRITE_LOG(Sample2.pdf:{%GET_U(DocInfo2,Pages)}ページ)}
#クローズ
{%PDF_CLOSE({%GET_U(Pdf,Handle1)})}
{%PDF_CLOSE({%GET_U(Pdf,Handle2)})}
PDF文書オープン処理名で指定されたPDF文書から、文書属性を取得します。
属性名は、255文字以内で指定してください。
未定義時の処理を省略した場合またはエラーを指定した場合は、存在しない属性名を指定した場合にエラーとなります。
未定義時の処理に空文字返却を指定した場合は、存在しない属性名を指定した場合に空文字が返却されます。
属性名に以下の名前を指定した場合は、概要タブの各項目を取得できます。
|
名前 |
内容 |
|---|---|
|
Author |
作成者 |
|
CreationDate |
作成日 |
|
Creator |
作成アプリケーション |
|
Keywords |
キーワード |
|
ModDate |
更新日 |
|
Producer |
PDF作成者 |
|
Subject |
サブタイトル |
|
Title |
タイトル |
Trappedは予約語のため使用できません。
例1 「文書名」という属性名で文書属性から値を取得する。
#PDFファイルをオープン
{%PDF_OPEN({%GET(FullPathFileName)})}
{%WRITE_LOG({%PDF_GET_DOCUMENT_ATTRIBUTE(文書名,空文字返却)})}
#クローズ
{%PDF_CLOSE()}
例2 概要のタイトルから値を取得する。
{%WRITE_LOG({%PDF_GET_DOCUMENT_ATTRIBUTE(Title)})}
PDF文書オープン処理名で指定されたPDF文書に、文書属性を設定します。
属性名は、255文字以内で指定してください。 属性値は、文字列を指定します。
作成日時(CreationDate)・更新日時(ModDate)には、日時として読める値(yyyy/MM/dd HH:mm:ss など)を指定してください。日時として読めない値を指定するとエラーになります。(Version 2.7.0から。以前は文字のまま書き込んでいました)
属性値に Shift_JIS に無い文字(é・® など)があっても、近い文字に置き換えずにそのまま書き込みます。(Version 2.7.0から)
所有者パスワードで変更が禁止されたPDFでは、エラーになります。(Version 2.7.0から)
属性名に以下の名前を指定した場合は、概要タブの各項目を設定できます。
|
名前 |
内容 |
|---|---|
|
Author |
作成者 |
|
CreationDate |
作成日 |
|
Creator |
作成アプリケーション |
|
Keywords |
キーワード |
|
ModDate |
更新日 |
|
Producer |
PDF作成者 |
|
Subject |
サブタイトル |
|
Title |
タイトル |
Trappedは予約語のため使用できません。
例1 1番目に取得したQRコードの内容を「文書名」という属性名で文書属性に設定する。
#PDFファイルをオープン
{%PDF_OPEN({%GET(FullPathFileName)})}
{%PDF_SET_DOCUMENT_ATTRIBUTE(文書名,{%GET_U(QRコード読み取り1,1,Data)})}
#クローズ
{%PDF_CLOSE()}
例2 システム日付を「処理日」という属性名で文書属性に設定する。
{%PDF_SET_DOCUMENT_ATTRIBUTE(処理日,{%DATE(yyyy/MM/dd)})}
例3 概要のタイトルに「サンプル」を設定する。
{%PDF_SET_DOCUMENT_ATTRIBUTE(Title,サンプル)}
属性名で指定された文書属性の存在チェックを行います。
指定した属性が存在する場合は、Trueを、存在しない場合はFalseを返却します。
例 文書属性「処理日」が存在する場合は、ログに「属性あり」を出力する。
{%PDF_SET_DOCUMENT_ATTRIBUTE(処理日,{%DATE(yyyy/MM/dd)})}
{%IF({%PDF_EXISTS_DOCUMENT_ATTRIBUTE(処理日)}=True,
{%WRITE_LOG(属性あり)}
,
{%WRITE_LOG(属性なし)}
)}
結果 属性あり
属性名で指定された文書属性を削除します。
所有者パスワードで変更が禁止されたPDFでは、エラーになります。(Version 2.7.0から)
例 文書属性「FAX番号」を削除する。
#PDFファイルをオープン
{%PDF_OPEN({%GET(FullPathFileName)})}
{%PDF_DELETE_DOCUMENT_ATTRIBUTE(FAX番号)}
#クローズ
{%PDF_CLOSE()}
オープン中のPDFからページを削除します。
ページには、2|3|4のように|で区切って複数のページを指定できます。
2-と指定すると2ページ目以降が削除されます。
2-5と指定すると2~5ページが削除されます。
-5と指定すると1~5ページが削除されます。
1|3-と指定すると1ページと5ページ目以降が削除されます。
1-|-5のように重複した表現があってもエラーにならず、すべての指定されたページの削除を行います。
すべてのページが削除されるような指定をした場合はエラーになります(「PDFファイルの全てのページを削除することはできません。 ページ: … PDFファイルのページ数: …」)。(Version 2.7.0から。以前は0ページのPDFになりました)
所有者パスワードでページの組み替えが禁止されたPDFでは、エラーになります。(Version 2.7.0から)
例 Sample.pdfから2ページ目以降を削除する
#PDFファイルをオープン
{%PDF_OPEN({%GET(FullPathFileName)})}
#2ページ目以降を削除
{%PDF_DELETE_PAGE(2-)}
#クローズ
{%PDF_CLOSE()}
オープン中のPDFを出力ファイルパスにページ分割したファイルを出力します。
ページには、1|2|3のように|で区切って複数のページを指定できます。
ページにAllを指定すると全ページを1ページ毎に分割します。
ページに2xを指定すると2ページ毎に分割します。3xは3ページ毎に分割します。
分割後のPDFは出力ファイルパスで指定された場所にファイル名 + _ + ページ番号(ゼロ埋め4桁)で出力を行います。
分割後のPDFのバージョンは、元のPDFのバージョンになります。(Version 2.7.0から。以前は常に1.3)
所有者パスワードで内容のコピーが禁止されたPDFでは、エラーになります。(Version 2.7.0から)
例 処理中のPDFを1ページ毎に分割して、分割後フォルダに出力する。
#PDFファイルをオープン
{%PDF_OPEN({%GET(FullPathFileName)})}
#1ページ毎に分割
{%PDF_SPLIT_PAGE(All,{%GET(FolderPath)}\分割済み\{%GET(FileName)})}
#クローズ
{%PDF_CLOSE()}
対象ファイルリストで指定されたファイルをマージして出力ファイルパスに出力します。
対象ファイルリストはユーザーデータ名を指定してください。ユーザーデータにはマージしたいフルパスファイル名を追加します。
対象ファイルリストに出力ファイルが含まれる場合はエラーになります。
マージタイプが先頭、または末尾の場合に、出力ファイルが存在しない場合は新規作成されます。
マージタイプが新規の場合に、出力ファイルが存在する場合はエラーになります。
マージタイプが新規の場合、作成したPDFのバージョンは束ねたPDFのバージョンになります。(Version 2.7.0から。以前は常に1.3)
所有者パスワードで内容のコピーが禁止されたPDFを束ねると、エラーになります。(Version 2.7.0から)
例1 処理中ファイルをmarge.pdfの先頭に束ねる。
{%ADD_USER_DATA(ファイルリスト,{%GET(FullPathFileName)})}
{%PDF_MERGE_FILES(ファイルリスト,{%GET(FolderPath)}\マージ済み\marge.pdf,先頭)}
例2 sample1.pdf、sample2.pdfをmarge.pdfの末尾に束ねる。
{%ADD_USER_DATA(ファイルリスト,D:¥Temp\sample1.pdf)}
{%ADD_USER_DATA(ファイルリスト,D:¥Temp\sample2.pdf)}
{%PDF_MERGE_FILES(ファイルリスト,{%GET(FolderPath)}\マージ済み\marge.pdf,末尾)}
以下のような順のmarge.pdfとなります。
marge.pdf
sample1.pdf
sample2.pdf
例3 sample1.pdf、sample2.pdfを束ねてmarge.pdfを新規作成する。
{%ADD_USER_DATA(ファイルリスト,D:¥Temp\sample1.pdf)}
{%ADD_USER_DATA(ファイルリスト,D:¥Temp\sample2.pdf)}
{%PDF_MERGE_FILES(ファイルリスト,{%GET(FolderPath)}\マージ済み\marge.pdf,新規)}
以下のようなmarge.pdfが新規作成されます。
sample1.pdf
sample2.pdf
PDFファイル名に指定されたPDFを読み込み、テキスト抽出支援ユーティリティのHTMLファイルをPDFと同じフォルダに出力します。
対象ページにはページ番号を指定します。Allを指定するとすべてのページが対象になります。
出力ファイル名を指定した場合は、指定した場所に出力します。
方式には、テキストのまとまり(単語)の作り方を、PDF_EXTRACT_TEXT と同じく 1(今までと同じ)か 2(改善版)で指定します。省略したときは 1 です。方式 2 で作成したツールが出力するマクロは、PDF_EXTRACT_TEXT の最後に 2 が付きます。出力ファイル名を省いて方式だけを指定するときは、出力ファイル名を空にします。(Version 2.7.0から)
DocuWorks文書(XDW)から作成する場合は、DW_CREATE_TOOL を使います。(Version 2.7.0から)
所有者パスワードで内容のコピーが禁止されたPDFでは、エラーになります。(Version 2.7.0から)
例 処理中PDFから1ページ目のテキスト抽出を行いSample.htmlを出力する。
{%PDF_CREATE_TOOL({%GET(FullPathFileName)},1)}
PDFファイル名に指定したPDFファイルのページを OCR で読み取り、テキスト抽出支援ツールのHTMLファイルを、ページごとにPDFファイルと同じフォルダに出力します。(Version 2.7.0から)
テキスト抽出支援ツールには、ページのイメージの上に、PDF OCRテキスト抽出(PDF_OCR_TEXT)と同じテキストのまとまりが赤枠で表示されます。ツールで領域を選ぶと、OCRの設定(解像度)と PDF_OCR_TEXT のマクロが生成されます。スキャンしたイメージのPDFからも作成できます。使い方はテキスト抽出支援ツールをご覧ください。
対象ページ・出力ファイル名の指定方法は、PDFテキスト抽出支援ユーティリティ作成(PDF_CREATE_TOOL)と同じです。
OCRオプション用ユーザーデータ名を指定すると、解像度(Dpi)と読み取りの上限(Timeout)を変えられます(PDF_OCR_TEXT のOCRオプション)。生成されるマクロのOCRの設定も、同じ解像度になります。このマクロを使うには、64 ビットの Windows が必要です(深層学習 OCR を使うため)。
戻り値は空文字です。ログには「PDFテキスト抽出支援ツールを作成しました。 PDFファイル名: PDFファイル名 ページ: 対象ページ htmlファイル名: 出力したファイル名」と出力されます。
例 処理中のPDFの1ページ目を OCR で読み取り、テキスト抽出支援ツール(PDFと同じフォルダの「PDFの名前_P0001.html」)を作成する。
{%PDF_CREATE_OCR_TOOL({%GET(FullPathFileName)},1)}