投稿日 | : 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)