Делфи. Переименование файла для автоматической перестановки страниц брошюры при потоковом сканировании

Как-то товарищ попросил меня отсканировать брошюрку страниц на 140 чтобы можно было читать в телефоне.

Я не стал заморачиваться - снял скрепки, сунул брошюрку в лоток Kyocera M2040dn - и за 5 минут получил скан в pdf формате.

И тут возникло НО - страницы шли в таком порядке: 140, 1, 2, 139, 138 , 3, 4, 137 и т.д.

Читать это невозможно.

Решил что нужно сохранить постранично в папку, пересортировать и снова собрать в книгу.

Я открыл pdf-файл FineReader-ом и сохранил в png-формате постранично в одну папку.

(Можно и при помощи других программ)

FineReader пронумеровал выходные файлы от mz-0001.png до mz-0140.png, но при этом в 1-м файле была 140-я страница, во 2-м - 1-я, потом 2-я, 139-я и т.д.

Значит нужно переименовать файлы, так чтобы в 1-м была 1-я страница, во 2-м - 2-я и т.д., а потом собрать их в pdf.

Но вручную переименовывать - долго и лень и можно ошибится.

Поэтому написал программу на Делфи:

program ReNum;

 

uses

  SysUtils,Forms;

 

{$R *.res}

var i,j,n,a1,b1,c1,d1,a2,b2,c2,d2:integer;

Procedure Ren(p1,p2:integer);

var name,name2,s,l:string;k:integer;

begin

   s:=inttostr(p1);l:=s;

   for k:=1 to 4-length(s) do

   l:='0'+l;

   name:=ExtractFilePath(Application.ExeName)+'mz - '+l+'.png';

   name2:=ExtractFilePath(Application.ExeName)+inttostr(p2)+'.png';

   RenameFile(name,name2);

end;

begin

  Application.Initialize;

  Application.Run;

  n:=140;

  j:=1;i:=1;

  while i<=n do

  begin

   a1:=j;a2:=n+1-i;

   b1:=j+1;b2:=i;

   c1:=j+2;c2:=i+1;

   d1:=j+3;d2:=n-i;

   j:=j+4;i:=i+2;

   Ren(a1,a2);   Ren(b1,b2);

   Ren(c1,c2);   Ren(d1,d2);

  end;

end.

 

Возможно не самое красивое решение, но вполне рабочее.

ВложениеРазмер
Исходники187.55 КБ

   Решение всегда есть! Надо только его найти! отлично!

--------
Ильфат Рифатович Исмагилов