Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.02.2016, 16:56
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 74
Репутация: 518
По умолчанию "Теневая" печать документа в PDF

Delphi6.
При составлении отчёта в виде текста и графика рисую на канве принтера сам отчёт и вывожу его на лазерный принтер. Всё работает ОК.
Возникла задача тоже самое делать скрытым образом от пользователя параллельно печатая в PDF. В принципе в PrintDialog выбирая PDFwriter можно сделать требуемое.. но часто забывают и остаётся лишь бумажная версия.
Сделал - вызываю дважды печать - первый раз с принтером по умолчанию "LaserJet" а второй раз "PDFwriter". Всё срабатывает, но надо вводить путь и имя файла для сохранения PDF - НО ЭТОГО НЕ должно быть видно - должно проходить незаметно для пользователя, имя файла - дата и время (сделал), путь - в папку спрограммой (тоже просто), но от появления диалога немогу избавится... как???
Таже проблема если беру XPSwriter - тоже самое, появляется диалог сохранения и погасить его незнаю как... ???
Можно попробывать FindWindow и хендл диалога и искать кнопку "ОК/SAVE" -но это изврат..
Спасибо.
Ответить с цитированием
  #2  
Старый 10.02.2016, 02:31
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А не проще выводить сначала в битмап, а уже потом на принтер и в файл сохранять? Зачем лишний драйвер в этом процессе?
Код:
Var
  Pic: TBitmap;
  Jpg: TJpegImage;
begin
 Pic := TBitmap.Create;
 Pic.SetSize(Printer.PageWidth, Printer.PageHeight);
 Pic.Canvas.Rectangle(100,100,300,300);
 Printer.BeginDoc;
 Printer.Canvas.Draw(0,0, Pic);
 Printer.EndDoc;
 Jpg := TJpegImage.Create;
 Jpg.Assign(Pic);
 Jpg.SaveToFile('F:\1\Page.jpg');
 Jpg.Free;
 Pic.Free;
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 10.02.2016, 17:32
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 74
Репутация: 518
По умолчанию

Спасибо.
Думал сохранять в картинку, но у меня как минимум 2 листа, тогда их надо как-то сшивать по имени : ххх1 и ххх2 ... ххх3.
И при последующей печати отчёта надо листать картинки.. вот если бы их в 1 файл засунуть, типо djvu или аналогичный многостраничный файл в котором по страницам буду писать как на принтер/параллельно принтеру.
В принципе кое что получилось методом ТЫКА )
Создал для PDF ещё один порт с полным путем в папку созранения и теперь при печати в PDF нет запроса имени файла но теряется цветовая палитра - всё в оттенках серого, а XPS по прежнему спрашивает. Но это не удобно, так как при переносе проги надо обязательно заходить под ADMINом и писать данный порт и терять настройки в случае печати из других приложений.
Пробывал брать Printer.GetPrinter и смотреть что получаю в параметре Port - полная каша, пытался сам писать этот параметр Printer.SetPrinter(... Port..) и в переменную Port по подобию настроек писать путь - ФИГ!!! проглатывает, в момент печати в списке задач на столбце "Порт" появляется мой путь как будто я задал его через настройки винды но печатает в "мои документы" - вообще бред ..
Может ещё какие настройки надо сделать помимо Printer.SetPrinter &&
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:06.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter