|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
"Теневая" печать документа в PDF
Delphi6.
При составлении отчёта в виде текста и графика рисую на канве принтера сам отчёт и вывожу его на лазерный принтер. Всё работает ОК. Возникла задача тоже самое делать скрытым образом от пользователя параллельно печатая в PDF. В принципе в PrintDialog выбирая PDFwriter можно сделать требуемое.. но часто забывают и остаётся лишь бумажная версия. Сделал - вызываю дважды печать - первый раз с принтером по умолчанию "LaserJet" а второй раз "PDFwriter". Всё срабатывает, но надо вводить путь и имя файла для сохранения PDF - НО ЭТОГО НЕ должно быть видно - должно проходить незаметно для пользователя, имя файла - дата и время (сделал), путь - в папку спрограммой (тоже просто), но от появления диалога немогу избавится... как??? Таже проблема если беру XPSwriter - тоже самое, появляется диалог сохранения и погасить его незнаю как... ??? Можно попробывать FindWindow и хендл диалога и искать кнопку "ОК/SAVE" -но это изврат.. Спасибо. |
#2
|
||||
|
||||
А не проще выводить сначала в битмап, а уже потом на принтер и в файл сохранять? Зачем лишний драйвер в этом процессе?
Код:
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
|
|||
|
|||
Спасибо.
Думал сохранять в картинку, но у меня как минимум 2 листа, тогда их надо как-то сшивать по имени : ххх1 и ххх2 ... ххх3. И при последующей печати отчёта надо листать картинки.. вот если бы их в 1 файл засунуть, типо djvu или аналогичный многостраничный файл в котором по страницам буду писать как на принтер/параллельно принтеру. В принципе кое что получилось методом ТЫКА ) Создал для PDF ещё один порт с полным путем в папку созранения и теперь при печати в PDF нет запроса имени файла но теряется цветовая палитра - всё в оттенках серого, а XPS по прежнему спрашивает. Но это не удобно, так как при переносе проги надо обязательно заходить под ADMINом и писать данный порт и терять настройки в случае печати из других приложений. Пробывал брать Printer.GetPrinter и смотреть что получаю в параметре Port - полная каша, пытался сам писать этот параметр Printer.SetPrinter(... Port..) и в переменную Port по подобию настроек писать путь - ФИГ!!! проглатывает, в момент печати в списке задач на столбце "Порт" появляется мой путь как будто я задал его через настройки винды но печатает в "мои документы" - вообще бред .. Может ещё какие настройки надо сделать помимо Printer.SetPrinter && |