バッチ・ツール(自作スクリプト)(PDF Explorer マニュアル)

トップ目次へ
 グリッドに文書情報が表示されているときだけ、ツール画面が表示されます。

3 バッチ・ツール

バッチ・ツール
 グリッドに表示されている文書、または、そこでチェックされた選択文書に対して、一括処理するためのツールです。
 バッチ・ツールを選択して、「実行」ボタンを押すと、実行を開始します。
 バッチ・ツールは、8種類有ります。それぞれ、オプションを設定する画面を持っています。

3.8 自作スクリプト

自作スクリプトの実行メニュー  このツールを使うと、VBScript JScript を使って、バッチ・ツールを自分で作成することができます。
 スクリプトでは、PDFE が取得している PDF オブジェクトを、値として活用できます。

 バッチ・ツールで、「実行」ボタンを押すと、右のスクリプトの選択画面が表示されます。
 ここには、実用的なスクリプトが、既に「サンプル」として登録されています。
 このサンプルを参考に、編集して、「自作スクリプト」を作ることができます。
 作ったスクリプトは、右のスクリプト一覧から実行できますし、頻繁に使うスクリプトは、「ツール・バー」や「ツール・メニュー」に登録して、直接実行することもできます。

 「編集」ボタンを押すと、下のスクリプト・エディタが起動します。
 スクリプト・エディタで作成、編集して、スクリプトを「自作スクリプト」として登録します。
 
スクリプト・エディタ

用紙種類用紙サイズ(mm)用紙種類用紙サイズ(mm)
A1841*594B11030*728
A2594*420B2728*515
A3420*297B3515*364
A4297*210B4364*257
A5210*148B5257*182
A6148*105B6182*128
A7105*74B7128*91
 スクリプト・エンジンを追加すると、他のスクリプト言語を使うこともできます。
 Active Scripting
http://ja.wikipedia.org/wiki/Active_Scripting
 Windows Script Host
http://en.wikipedia.org/wiki/Windows_Script_Host#Available_scripting_engines
 WSH技術情報
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/techinfo.htm
 Script/TipsWSH
http://apis.jpn.ph/fswiki/wiki.cgi?page=Script%2FTipsWSH

 下は、PDF 文書中の A4 サイズと A3 サイズの、それぞれのページ数をカウントして、Excel に出力する、「自作スクリプト(VBScript)」の例です。
 

'ExportPageSize
' ページ・サイズ毎のページ数を MS Excel に出力する
' 2012/08/03
Option Explicit
Dim oXL
Dim oWB
Dim oSheet
Dim FieldsInfo
Dim nfields
Dim lines
Dim columns
Dim FieldInfo
Dim file
Dim value
Dim DataArray()
Dim oRng
Dim A4Count
Dim A3Count
Dim PagesCount
Dim PDFDocument
Dim PDFPage

Set oXL = pdfe.CreateObject("Excel.Application")
If Not oXL Is Nothing Then
   '新しい Excel workbook を作成
   Set oWB = oXL.Workbooks.Add
   Set oSheet = oWB.ActiveSheet

   '配列 DataArray を作成
   Set FieldsInfo = pdfe.MetadataFieldsInfo
   nfields = 6 + FieldsInfo.count '項目数
   ReDim DataArray(pdfe.SelectedFiles.Count, nfields - 1)    '0オリジン
   '項目名を設定
   DataArray(0, 0) = "ファイル名"
   DataArray(0, 1) = "ページ数"
   DataArray(0, 2) = "ファイルSize"
   DataArray(0, 3) = "A4ページ数"
   DataArray(0, 4) = "A3ページ数"
   columns = 5
   '既定の項目名を設定
   For Each FieldInfo In FieldsInfo
      DataArray(0, columns) = FieldInfo.Caption
      columns = columns + 1
   Next

   '配列 DataArray に metadata を設定
   lines = 1
   For Each file In pdfe.SelectedFiles
      DataArray(lines, 0) = right(file.FileName,len(file.FileName)-instrrev(file.FileName,"\"))
      DataArray(lines, 1) = file.NumPages
      DataArray(lines, 2) = file.FileSize

      columns = 5
      For Each value In file.Metadata
         DataArray(lines, columns) = CStr(value)
         columns = columns + 1
      Next
      lines = lines + 1
   Next

   Call PageCount()

   ' DataArray を Excel active sheet に貼り付け
   oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(pdfe.SelectedFiles.Count+1,nfields)).Value = DataArray

   ' Make sure Excel Is visible And give the user control
   ' of Microsoft Excel's lifetime.
   oXL.Visible = True
   oXL.UserControl = True

   ' オブジェクトを解放する
   Set oRng = Nothing
   Set oSheet = Nothing
   Set oWB = Nothing
   Set oXL = Nothing

' If MS Excel Not found
Else
   MsgBox "Excel が見つかりません!"
End If


Sub PageCount()
   lines = 1
   For Each PDFDocument In pdfe.SelectedFiles

      A4Count = 0
      A3Count = 0
      PagesCount = 0

      PagesCount = PagesCount + PDFDocument.NumPages
      For Each PDFPage In PDFDocument.Pages
         If (PDFPage.Width >= 179 And PDFPage.Width <= 253 _
            and PDFPage.Height >= 253 And PDFPage.Height <= 358) or _
            (PDFPage.Height >= 179 And PDFPage.Height <= 253 _
            and PDFPage.Width >= 253 And PDFPage.Width <= 358) Then
            A4Count = A4Count + 1
         Elseif (PDFPage.Width >= 253 And PDFPage.Width <= 358 _
            and PDFPage.Height >= 358 And PDFPage.Height <= 507) or _
            (PDFPage.Height >= 253 And PDFPage.Height <= 358 _
            and PDFPage.Width >= 358 And PDFPage.Width <= 507) Then
            A3Count = A3Count + 1
         End If
      Next
      DataArray(lines, 3) = A4Count
      DataArray(lines, 4) = A3Count
      lines = lines + 1
   Next
End Sub



 下の例は、動的計算項目の項目(最小サイズ、最大サイズ)を、Excel の出力項目として追加した例です。

'ExportPageSize2
' ページ・サイズ毎のページ数を MS Excel に出力する
' Calculated Columns の読み込みを追加
' 2012/08/04
Option Explicit
Dim oXL
Dim oWB
Dim oSheet
Dim FieldsInfo
Dim nfields
Dim lines
Dim columns
Dim FieldInfo
Dim file
Dim value
Dim DataArray()
Dim oRng
Dim A4Count
Dim A3Count
Dim PagesCount
Dim PDFDocument
Dim PDFPage

Set oXL = pdfe.CreateObject("Excel.Application")
If Not oXL Is Nothing Then
   '新しい Excel workbook を作成
   Set oWB = oXL.Workbooks.Add
   Set oSheet = oWB.ActiveSheet

   '配列 DataArray を作成
   Set FieldsInfo = pdfe.MetadataFieldsInfo
   nfields = 8 + FieldsInfo.count '項目数
   ReDim DataArray(pdfe.SelectedFiles.Count, nfields - 1)    '0オリジン
   '項目名を設定
   DataArray(0, 0) = "ファイル名"
   DataArray(0, 1) = "ページ数"
   DataArray(0, 2) = "ファイルSize"
   DataArray(0, 3) = "A4ページ数"
   DataArray(0, 4) = "A3ページ数"
   DataArray(0, 5) = "最小サイズ"
   DataArray(0, 6) = "最大サイズ"
   columns = 7
   '既定の項目名を設定
   For Each FieldInfo In FieldsInfo
      DataArray(0, columns) = FieldInfo.Caption
      columns = columns + 1
   Next

   '配列 DataArray に metadata を設定
   lines = 1
   For Each file In pdfe.SelectedFiles
      DataArray(lines, 0) = Right(file.FileName, Len(file.FileName) - InStrRev(file.FileName, "\"))
      DataArray(lines, 1) = file.NumPages
      DataArray(lines, 2) = file.FileSize

      columns = 7
      For Each value In file.Metadata
         DataArray(lines, columns) = CStr(value)
         columns = columns + 1
      Next
      lines = lines + 1
   Next

   Call PageCount()
   Call PageSizes() 

   ' DataArray を Excel active sheet に貼り付け
   oSheet.Range(oSheet.Cells(1,1), oSheet.Cells(pdfe.SelectedFiles.Count+1,nfields)).Value = DataArray

   ' Make sure Excel Is visible And give the user control
   ' of Microsoft Excel's lifetime.
   oXL.Visible = True
   oXL.UserControl = True

   ' オブジェクトを解放する
   Set oRng = Nothing
   Set oSheet = Nothing
   Set oWB = Nothing
   Set oXL = Nothing

' If MS Excel Not found
Else
   MsgBox "Excel が見つかりません!"
End If


Sub PageCount()
   lines = 1
   For Each PDFDocument In pdfe.SelectedFiles
   
      A4Count = 0
      A3Count = 0
      PagesCount = 0

      PagesCount = PagesCount + PDFDocument.NumPages
      For Each PDFPage In PDFDocument.Pages
         If (PDFPage.Width >= 179 And PDFPage.Width <= 253 _
            And PDFPage.Height >= 253 And PDFPage.Height <= 358) Or _
            (PDFPage.Height >= 179 And PDFPage.Height <= 253 _
            And PDFPage.Width >= 253 And PDFPage.Width <= 358) Then
            A4Count = A4Count + 1
         ElseIf (PDFPage.Width >= 253 And PDFPage.Width <= 358 _
            And PDFPage.Height >= 358 And PDFPage.Height <= 507) Or _
            (PDFPage.Height >= 253 And PDFPage.Height <= 358 _
            And PDFPage.Width >= 358 And PDFPage.Width <= 507) Then
            A3Count = A3Count + 1
         End If
      Next
      DataArray(lines, 3) = A4Count
      DataArray(lines, 4) = A3Count
      lines = lines + 1
   Next
End Sub

Sub PageSizes()
   lines = 1
   For Each File In pdfe.SelectedFiles
   
      DataArray(lines, 5) = file.Metadata.Calculated(1)
      DataArray(lines, 6) = file.Metadata.Calculated(2)
      
      lines = lines + 1
   Next
End Sub

マニュアルのトップに戻る
Copyright © 2004-2012 WATANABE Makoto. All rights reserved.