説明
PDF ファイルが画像だけか、検索できるテキストが存在するかをチェックする。
以下にJSObject を使用したサンプルを示す。
サンプル
- 参照設定を事前にする。
001 Sub CommandButton20_Click()
002 Dim objAcroApp As New Acrobat.AcroApp
003 Dim objAcroAVDoc As New Acrobat.AcroAVDoc
004 Dim objAcroPDDoc As Acrobat.AcroPDDoc
005 Dim lRet As Long
006 Dim jso As Object
007
008 'Acrobatアプリケーションを起動する。
009 lRet = objAcroApp.Show
010 'PDFファイルを開いて表示する。
011 lRet = objAcroAVDoc.Open("E:¥Test01.pdf", "")
012 'PDDocオブジェクトを取得する
013 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
014 'JavaScriptオブジェクトを作成する。
015 Set jso = objAcroPDDoc.GetJSObject
016
017 Dim lPage As Long
018 Dim i As Long
019 Dim strWord As String
020 Dim bFlg_TextFound As Boolean
021
022 '初期化
023 bFlg_TextFound = False
024 lPage = 0
025 'チェック
026 If Not jso Is Nothing Then
027 'JavaScriptオブジェクトは作成出来た。
028 Do While lPage < jso.numpages
029 'Debug.Print "jso.numpages=" & jso.numpages
030 For i = 1 To jso.getPageNumWords(lPage)
031 strWord = jso.getPageNthWord(lPage, i, True)
032 'Debug.Print "(" & strWord & ")"
033 'テキストは存在するか?
034 If strWord <> "" Then
035 'テキストが存在した。
036 bFlg_TextFound = True
037 Exit For
038 End If
039 Next i
040 If bFlg_TextFound = True Then Exit Do
041 lPage = lPage + 1
042 Loop
043 End If
044
045 'PDFファイルを閉じます。
046 lRet = objAcroAVDoc.Close(1)
047 'Acrobatアプリケーションを終了する。
048 lRet = objAcroApp.Hide
049 lRet = objAcroApp.Exit
050 If bFlg_TextFound = True Then
051 MsgBox "PDFファイル内にテキストが存在する。"
052 Else
053 MsgBox "PDFファイル内にテキストが存在しない。"
054 End If
055 End Sub
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
補足
- 上記サンプルは余分なロジックが入っている。
それは、jso.getPageNumWords(lPage)の値が1以上ならばその頁にテキスト文字が存在する事になる。
よって、Do While 内だけを
IF jso.getPageNumWords(lPage) > 0 Then
'テキストが存在した。
bFlg_TextFound = True
Exit Do
End If
lPage = lPage + 1 '※これが無いとループする
というロジックにしても良い。
動作確認環境
- WindowsXP Pro + SP2 + フルWindowsUpdate +
Acrobat 7.0.9 Pro + Office 2003
< 戻る >
こんにちは。
たびたび質問します。
PDF内にテキストがあるのはサンプルで確認できたのですが
画像とその画像の高さって求めれますか?
PDFをメモ帳でひらくとXObject に Heightがあります。
これが「1」となっているXObjectを削除したいと思ってます。
「画像とその画像の高さ」ですか?
一応、再チェックしましたが、OLEにはその様な機能は有りません。
Acrobat本体にその様な情報を表示する機能が無い場合、OLEにも無いと思ってください。
PDFTKにもそんな機能があった記憶は無いです。
iTextは今は全く手を付けていないので判りません。
「XLSOFT : easyPDF SDK(市販ツール)」と「ABCpdf(市販ツール)」も、これまた全く未調査(理由:金が無い)なので判りません。
一応気には留めておきます。
スイマセンが、現段階では良い返事は出来ません。
SaveAsメソッドでHTMLに出力するサンプルがあります。
http://pdf-file.nnn2.com/?p=230
これでイメージ保存フォルダに画像が保存されます。
これで何とか出来ませんか?