[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/09/12(Tue) 11:22
投稿者名:しん
Eメール:
URL :
タイトル:
PDFファイルの用紙サイズ取得について
初めて投稿させていただきます。よろしくお願いします。

OS XP Pro  VB6.0 SP5
現在PDFファイルから印刷時の用紙サイズを読み込むプログラムを作ろうとしています。
PDFにはMediaBox(必ずある筈)、CropBox(ないPDFもある)の情報が入っているので
初めにCropBoxの情報を読みに行き、無い場合にMediaBoxの値を読み込む処理を行う以下の様なものを作ったのですが、
PDFファイル容量が大きくて、CropBoxがない場合に処理に時間が掛かり過ぎて困っています。
なにか処理を早くする方法がないか色々検索をしたのですが、中々良い方法が発見出来ずに悩んでいます。
なにか他に良い方法があればアドバイスをお願い致します。

以下ソース抜粋
        intFNo = FreeFile
        Open "サイズを測りたいpdf" For Binary As #intFNo

        blnFindCrp = False
        blnFindMed = False
        While Not EOF(intFNo) And Not blnFind
            strBuf = Input(1, #intFNo)
            If strBuf = "C" Then
                strBuf = Input(1, #intFNo)
                If strBuf = "r" Then
                    strBuf = Input(1, #intFNo)
                    If strBuf = "o" Then
                        strBuf = Input(1, #intFNo)
                        If strBuf = "p" Then
                            strBuf = Input(1, #intFNo)
                            If strBuf = "B" Then
                                strBuf = Input(1, #intFNo)
                                If strBuf = "o" Then
                                    strBuf = Input(1, #intFNo)
                                    If strBuf = "x" Then
                                ''CropBoxが見つかったらblnFindCrpを真にする
                                        blnFindCrp = True
                                        Do
                                            If IsNumeric(strBuf) Then Exit Do
                                            strBuf = Input(1, #intFNo)
                                        Loop
                                        strSize(i) = strBuf
                                            For i = 0 To UBound(strSize)
                                                Do
                                                    strBuf = Input(1, #intFNo)
                                                    If IsNumeric(strBuf) Or strBuf = "." Then
                                                        strSize(i) = strSize(i) & strBuf
                                                    End If
                                                Loop While IsNumeric(strBuf) Or strBuf = "."
                                            Next i
                                        If blnFindCrp = True Then GoTo nops
  ************中略************
'このあとにMediaBoxで同じ処理を実行してます

nops:
        Close #intFNo
        MsgBox "X1=" & CDbl(strSize(0)) * 0.35 & " Y1=" & CDbl(strSize(1)) * 0.35 & " X2=" & CDbl(strSize(2)) * 0.35 & _
                " Y2=" & CDbl(strSize(3)) * 0.35 & vbCrLf & "X=" & (CDbl(strSize(2)) * 0.35 - CDbl(strSize(0)) * 0.35) & " Y=" _
                & (CDbl(strSize(3)) * 0.35 - CDbl(strSize(1)) * 0.35)