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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2010, 13:50   #21
Gonzo
Форумчанин
 
Аватар для Gonzo
 
Регистрация: 07.03.2009
Сообщений: 123
По умолчанию

Цитата:
Сообщение от artemavd
Да пожалуйста, вот архив. В uses пропиши название модуля и можешь использовать процедуру ListeJPGtoPDF
спасиб тебе
Не говорите что мне делать, и я не скажу куда Вам идти.
Пишу программы на заказ на Delphi и Pascal
Форум разработчиков Pascal и Delphi
Gonzo вне форума Ответить с цитированием
Старый 20.11.2010, 19:55   #22
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Блин, не получается задать функции ListeJPGtoPDF путь куда сохранять PDF-ки. Она их сохраняет там же где и JPEG мои, а мне надо, чтобы она сохраняла по пути, который указан в
Код:

MainForm.RzStatusPane6.Caption
Код:
procedure TMainForm.BtnHelp1Click(Sender: TObject);
var
 k,i: integer;
 list: TStringList;
begin
 list:=TStringList.Create;
// 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');
//    k:=ListeJPGtoPDF(list,Copy(MainForm.ListBox1.Items[i],1,Pos('.',MainForm.ListBox1.Items[i])-1) + '.pdf');
    SaveFolderTree(MainForm.RzStatusPane6.Caption, MainForm.RzStatusPane6.Caption + 'Export_' + DateToStr(Now) + '.xml')
   end;
//  end;
  list.Free;
end;
Че там заменить надо в этой строке
Код:
k:=ListeJPGtoPDF(list,Copy(MainForm.ListBox1.Items[i],1,Pos('.',MainForm.ListBox1.Items[i])-1) + '.pdf');
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 21.11.2010, 00:10   #23
Gonzo
Форумчанин
 
Аватар для Gonzo
 
Регистрация: 07.03.2009
Сообщений: 123
По умолчанию

Цитата:
Сообщение от artemavd
Блин, не получается задать функции ListeJPGtoPDF путь куда сохранять PDF-ки. ..мне надо, чтобы она сохраняла по пути, который указан в MainForm.RzStatusPane6.Caption
Че там заменить надо в этой строке?
Код:
k:=ListeJPGtoPDF(list,Copy(MainForm.ListBox1.Items[i],1,Pos('.',MainForm.ListBox1.Items[i])-1) + '.pdf');
Ну и передавай ей параметром этот caption.
В чем проблема-то?

Нет ни у кого материалом по обратному преобразованию PDF->JPEG ?
Не говорите что мне делать, и я не скажу куда Вам идти.
Пишу программы на заказ на Delphi и Pascal
Форум разработчиков Pascal и Delphi
Gonzo вне форума Ответить с цитированием
Старый 21.11.2010, 05:15   #24
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

В том-то и дело, что я не могу правильно передать его, потому что там функции Copy и Pos. Кто знает как надо, подскажите плиз?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 21.11.2010, 05:20   #25
Prisioner
Google user
Пользователь
 
Регистрация: 20.09.2010
Сообщений: 27
По умолчанию

Код:
k:=ListeJPGtoPDF(list,MainForm.RzStatusPane6.Caption);
не?
Pascal/Delphi
ICQ: 2881228
Prisioner вне форума Ответить с цитированием
Старый 21.11.2010, 05:40   #26
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Нет, так не работает. Потому что у меня Copy и Pos позволяют сохранить JPEG-и в PDF формат и в качестве имен PDF-ок задавать имя JPEG файлов до расширения.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 21.11.2010, 06:15   #27
Prisioner
Google user
Пользователь
 
Регистрация: 20.09.2010
Сообщений: 27
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Нет, так не работает. Потому что у меня Copy и Pos позволяют сохранить JPEG-и в PDF формат и в качестве имен PDF-ок задавать имя JPEG файлов до расширения.
Если MainForm.RzStatusPane6.Caption хранит именно путь к папке (т.е. строку вида "D:\Папка1\Папка2\"), то тогда можно попробовать так:

Код:
k:=ListeJPGtoPDF(list,MainForm.RzStatusPane6.Caption + copy(ExtractFileName(MainForm.ListBox1.Items[i]),1,pos('.',ExtractFileName(MainForm.ListBox1.Items[i]))-1) + '.pdf'));
Если MainForm.RzStatusPane6.Caption содержит ссылку на некий файл, то тогда

Код:
k:=ListeJPGtoPDF(list,ExtractFilePath(MainForm.RzStatusPane6.Caption) + copy(ExtractFileName(MainForm.ListBox1.Items[i]),1,pos('.',ExtractFileName(MainForm.ListBox1.Items[i]))-1) + '.pdf'));
Pascal/Delphi
ICQ: 2881228
Prisioner вне форума Ответить с цитированием
Старый 21.11.2010, 06:31   #28
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Во, спасибо! . Теперь работает вроде. Поставлю Вам, Prisioner, "+" как смогу.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 21.11.2010, 14:18   #29
Gonzo
Форумчанин
 
Аватар для Gonzo
 
Регистрация: 07.03.2009
Сообщений: 123
По умолчанию

У меня есть обратная задача: PDF->JPEG
желательно без подключения эдабавских библиотек.
Если есть у кого материалы - поделитесь ссылкой.
Или может кто-то знает бесплатные или недорогие компоненты для этого?

Модерам: перенесите в отдельную тему если нужно.

Gonzo, создайте отдельную тему. Не нарушайте правило: одна тема - один вопрос. В моей теме обсуждался вопрос о сохранении файлов, а не о конвертации в форматы. Прошу быть внимательнее.
Не говорите что мне делать, и я не скажу куда Вам идти.
Пишу программы на заказ на Delphi и Pascal
Форум разработчиков Pascal и Delphi

Последний раз редактировалось artemavd; 21.11.2010 в 16:40.
Gonzo вне форума Ответить с цитированием
Старый 25.01.2011, 16:51   #30
Gonzo
Форумчанин
 
Аватар для Gonzo
 
Регистрация: 07.03.2009
Сообщений: 123
По умолчанию

При работе с модулем возникла проблема с заданием масштаба отображения полученного pdf-файла.
Необходимо полученный pdf файл отображать так, чтобы по горизонтали он полностью вписывался в окно.
Насколько я понял из спецификации pdf, за это отвечает параметр OpenAction (стр. 67 в спецификации). Вот код модуля где это фигурирует:
Код:
       // PDF version
       TStringStream(AStream).WriteString('%PDF-1.2'#10);

       // Catalog
       ObjectPosArray[ObjectIndex] :=AStream.Position;
       With TStringStream(AStream) do
       begin
            WriteString(Format('%d 0 obj'#10,[ObjectIndex+1]));
            WriteString('<<'#10);
            WriteString('/Type /Catalog'#10);

            WriteString('/Pages 2 0 R'#10);
            WriteString('/OpenAction [3 0 R /XYZ -32768 -32768 1 ]'#10); // View Option (100%)
            WriteString('/ViewerPreferences [FitWindow=True]'#10);
            WriteString('>>'#10);
            WriteString('endobj'#10);
       end;
Опираясь, опять же на спецификацию, OpenAction можете принимать следующие значения (стр. 184):
[ page /XYZ left top zoom ] //как сейчас
[ page /Fit ]
[ page /FitH top ]
[ page /FitV left ]
[ page /FitR left bottom right top ]
[ page /FitB ]
[ page /FitBH top ]
[ page /FitBV left ]
По описанию наиболее подходит [ page /FitH top ] - подгоняет ширину страницы к окну, top - координата верхнего края окна. Но такой код желаемого эффекта не даёт:
Код:
       // PDF version
       TStringStream(AStream).WriteString('%PDF-1.2'#10);

       // Catalog
       ObjectPosArray[ObjectIndex] :=AStream.Position;
       With TStringStream(AStream) do
       begin
            WriteString(Format('%d 0 obj'#10,[ObjectIndex+1]));
            WriteString('<<'#10);
            WriteString('/Type /Catalog'#10);

            WriteString('/Pages 2 0 R'#10);
            WriteString('/OpenAction [3 0 R /FitH 10 ]'#10);
            WriteString('/ViewerPreferences [FitWindow=True]'#10);
            WriteString('>>'#10);
            WriteString('endobj'#10);
       end;
пробовал по-разному: и подставлять другие параметры и вовсе опускать OpenAction - результат нулевой. Такое ощущение что это вовсе никак не обрабатывается. Пожалуйста, подскажите у кого какие мысли.
Не говорите что мне делать, и я не скажу куда Вам идти.
Пишу программы на заказ на Delphi и Pascal
Форум разработчиков Pascal и Delphi
Gonzo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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