Что нового

Сколько листов в PDF и с какими размерами

  • Автор темы VitAl2013
  • Дата начала
V

VitAl2013

Гость
Вот накатал тут минипрогу. Делает то что в названии. Просьба протестить и поправить если чтото не так.
Код:
#include <GUIListView.au3>

Global $MediaBox[100]
Global $MediaBoxEx[1][1]
Global $MediaBoxExFinal[1][1]
do
$var = FileOpenDialog("Give me PDF file! Or push Cancel for exit.", "c:\", "PDF file (*.pdf)", 1)
if @error then
	Exit
EndIf
drawinfo($var)
_ArrayDisplay($MediaBoxExFinal, $var)
until GUIGetMsg() = -3

func drawinfo($way_to_file)
	$chFileHnd = FileOpen($way_to_file, 0)
	Do
	$chFileTxt = FileRead($way_to_file)
	until @error = 0
	
	$MediaBox = StringSplit($chFileTxt, "MediaBox", 1)
	_ArrayDelete ($MediaBox, 0)
	_ArrayDelete ($MediaBox, 0)
	ReDim $MediaBoxEx[UBound($MediaBox)][2]
	ReDim $MediaBoxExFinal[UBound($MediaBox)][3]
	For $i=0 to Ubound($MediaBox)-1 step 1
		$_2 = StringInStr($MediaBox[$i], " ", 0, 2)
		$_3 = StringInStr($MediaBox[$i], " ", 0, 3)
		$_res = StringInStr($MediaBox[$i], "]/Res", 0, 1)
		_ConsoleWriteEx( 'w='&$_3&'-'&$_2&'='&$_3-$_2)
		_ConsoleWriteEx( 'h='&$_res&'-'&$_3&'='&$_res-$_3)
		$MediaBoxEx[$i][0] = StringMid($MediaBox[$i], $_2, $_3-$_2)
		$MediaBoxEx[$i][1] = StringMid($MediaBox[$i], $_3, $_res-$_3)
	next
	For $i=0 to Ubound($MediaBox)-1 step 1
		if Number($MediaBoxEx[$i][0])-Int(Number($MediaBoxEx[$i][0]))=0 Then
			$MediaBoxExFinal[$i][0]=$MediaBoxEx[$i][0]/72
			$MediaBoxExFinal[$i][1]=$MediaBoxEx[$i][1]/72
			$MediaBoxExFinal[$i][2]="inch"
		Else
			$MediaBoxExFinal[$i][0]=Int($MediaBoxEx[$i][0]/2.8346)
			$MediaBoxExFinal[$i][1]=Int($MediaBoxEx[$i][1]/2.8346)
			$MediaBoxExFinal[$i][2]="mm"
		EndIf
	next	
;~ 	_ArrayInsert( $MediaBoxExFinal,0,UBound($MediaBox))
	FileClose($chFileHnd)
	Return $MediaBoxExFinal
EndFunc

Func _ConsoleWriteEx($s, $line = @ScriptLineNumber)
    ConsoleWrite($line & ": " & $s & @CRLF)
EndFunc
 

MorDrakAn

Новичок
Сообщения
1
Репутация
0
Большое спасибо :ok: 2й день ищу нечто подобное, но по запросу "количество страниц PDF" находились нефунциклирующие варианты :IL_AutoIt_1:
------------------------------
Нашел ошибку которая может проскочить
UBound($MediaBox) может возвращать 0
При этом строка
ReDim $MediaBoxEx[UBound($MediaBox)][2]
завершает скрипт с ошибкой
 
Верх