Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2010, 19:48   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Множественное сохранение PDF файлов

Добрый вечер! Сделал перевод JPEG в PDF. Все работает нормально, но, есть одно "но". Мне нужно, чтобы каждый JPEG сохранялся в отдельную PDF-ку с таким же именем какое оно было у JPEG файла. А если в папке с файлами будет JPEG файл с таким именем "_тут какое-то число", то файлы с одинаковыми именами до "_" сохранялись в одну PDF-ку. Например, пусть в папке есть такие JPEG файлы:
1.jpeg
2.jpeg
1_1.jpeg
3.jpeg
2_1.jpeg
2_2.jpeg
2_3.jpeg
Должно получиться следующее:
1.pdf (внутри этой одной PDF-ки бывшие 1.jpeg и 1_1.jpeg)
2.pdf (внутри этой одной PDF-ки бывшие 2.jpeg, 2_2.jpeg, 2_3.jpeg)
3.pdf (внутри этой одной PDF-ки бывший 3.jpeg)
Как такое можно реализовать?
Вот код, которые переводит все JPEG файлы указанной папки в одну PDF. Его и нужно как-то переделать под решение моей задачи:
Код:
procedure TMainForm.BtnHelp1Click(Sender: TObject);
var
 k,i: integer;
begin
 MainForm.SaveDialog1.FileName:='*.pdf';
 if SaveDialog1.Execute then
  begin
   for i:=0 to MainForm.ListBox1.Count - 1 do
   begin
    k:=ListeJPGtoPDF(MainForm.ListBox1.Items, MainForm.SaveDialog1.FileName + '.pdf');
   end;
  end;
end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 12.11.2010, 20:05   #2
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Может стоит парсер использовать?
VintProg вне форума Ответить с цитированием
Старый 12.11.2010, 20:20   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Какой еще парсер? Мне кажется, что тут не нужен никакой парсер. Здесь просто в качестве сохряаняемых файлов как то передать в цикле все значения из ListBox-a....
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 12.11.2010, 20:31   #4
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Что делает данная процедура ListeJPGtoPDF?
VintProg вне форума Ответить с цитированием
Старый 12.11.2010, 20:36   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Она выполняет перевод JPEG файлов в PDF. Вот, чуть продвинулся в своих наработках . удалось сделать, чтобы сохранялся каждый JPEG файл в отдельную PDF-ку со своим именем идентичным имени JPEG файла:
==================
Добавлено:
Вот дополнил код, теперь к имени PDF файлов не будет добавляться расширение исходных JPEG файлов:
Код:
procedure TMainForm.BtnHelp1Click(Sender: TObject);
var
 k,i: integer;
begin
 MainForm.SaveDialog1.FileName:='*.pdf';
 MainForm.SaveDialog1.Title:='Èìåíà äëÿ ôàéëîâ çàäàâàòü íå íóæíî. Íàæìèòå ñðàçó "Ñîõðàíèòü".';
 MainForm.SaveDialog1.FileName:=DateToStr(Now);
 if SaveDialog1.Execute then
  begin
   for i:=0 to MainForm.ListBox1.Count - 1 do
   begin
    k:=ListeJPGtoPDF(MainForm.ListBox1.Items,Copy(MainForm.ListBox1.Items[i],1,
                                          Pos('.',MainForm.ListBox1.Items[i])-1) + '.pdf');
   end;
  end;
end;
Но, в каждую созданную PDF-ку кидаются все JPEG файлы. Может кто еще что-то подскажет?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 12.11.2010 в 20:51.
artemavd вне форума Ответить с цитированием
Старый 12.11.2010, 21:12   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Включаю телепатию.......ОК

1. Видимо список JPEG это MainForm.ListBox1.Items
2. Первый параметр видимо идет TStringList - список JPEG файлов, и вы при вызове ListeJPGtoPDF указываете MainForm.ListBox1.Items, т.е. весь список, все jpeg файлы. Может стоит сделать тогда типа
Код:
list: TStringList;
...
list := TStringList.Create;
...
list.Clear;
list.Add(MainForm.ListBox1.Items[i]);
k := ListeJPGtoPDF(list...
Надеюсь помог.
BOBAH13 вне форума Ответить с цитированием
Старый 12.11.2010, 21:39   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

ВОВАН13, а разве строка
Код:
list.Add(MainForm.ListBox1.Items[i]);
k := ListeJPGtoPDF(list...
не означает, что в list все равно передастся весь список из listbox со всеми файлами? Я пока не проверял, спасть собираюсь, а то у меня уже 3 часа ночи....
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 12.11.2010, 21:44   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

1. list.Clear; - очистка списка
2. list.Add(MainForm.ListBox1.Items[i]); - добавление текущего одного элемента, видимо пути
3. вызов ListeJPGtoPDF в котором указан список list - имеющий только один элемент.
BOBAH13 вне форума Ответить с цитированием
Старый 12.11.2010, 21:51   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Интересная ситуация получается). Теперь создаются PDF-ки так что в самой первой PDF-ке сохраняется один JPEG файл (как и должно быть), но во второй PDF-ке уже 2 JPEG файла, в третьей PDF-ке уже 3 JPEG файла и т.д. Вот такой вот код, применив (возможно неправильно), что сказал ВОВАН13, получился:
Код:
procedure TMainForm.BtnHelp1Click(Sender: TObject);
var
 k,i: integer;
 list: TStringList;
begin
 list:=TStringList.Create;
 list.Clear;
 MainForm.SaveDialog1.FileName:='*.pdf';
 MainForm.SaveDialog1.Title:='Èìåíà äëÿ ôàéëîâ çàäàâàòü íå íóæíî. Íàæìèòå ñðàçó "Ñîõðàíèòü".';
 MainForm.SaveDialog1.FileName:=DateToStr(Now);
 if SaveDialog1.Execute then
  begin
   for i:=0 to MainForm.ListBox1.Count - 1 do
   begin
    list.Add(MainForm.ListBox1.Items[i]);
    k:=ListeJPGtoPDF(list,Copy(MainForm.ListBox1.Items[i],1,Pos('.',MainForm.ListBox1.Items[i])-1) + '.pdf');
   end;
  end;
end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 12.11.2010, 21:53   #10
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Будьте более внимательны. Я писал так
Код:
list.Clear;
list.Add(MainForm.ListBox1.Items[i]);
k := ListeJPGtoPDF(list...
Может это моя ошибка, но под ... я имел ввиду какой то другой код, а где нет ... то это значит что строка следует за строкой.

Код:
procedure TMainForm.BtnHelp1Click(Sender: TObject);
var
 k,i: integer;
 list: TStringList;
begin
 list:=TStringList.Create;
 //list.Clear;
 MainForm.SaveDialog1.FileName:='*.pdf';
 MainForm.SaveDialog1.Title:='Èìåíà äëÿ ôàéëîâ çàäàâàòü íå íóæíî. Íàæìèòå ñðàçó "Ñîõðàíèòü".';
 MainForm.SaveDialog1.FileName:=DateToStr(Now);
 if SaveDialog1.Execute then
  begin
   for i:=0 to MainForm.ListBox1.Count - 1 do
   begin
     list.Clear;
    list.Add(MainForm.ListBox1.Items[i]);
    k:=ListeJPGtoPDF(list,Copy(MainForm.ListBox1.Items[i],1,Pos('.',MainForm.ListBox1.Items[i])-1) + '.pdf');
   end;
  end;
  list.Free;
end;
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СОХРАНЕНИЕ В ФОРМАТЕ *.PDF provodnikam Microsoft Office Word 10 20.02.2010 10:31
Загрузка файлов формата PDF или DJVU Maks1978 JavaScript, Ajax 11 05.02.2009 11:54
Печать pdf файлов из списка файлов в Excel АПС Microsoft Office Excel 5 15.04.2008 16:04
Импорт doc и pdf файлов в базу omi БД в Delphi 3 30.06.2007 00:37