Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2009.11.22;
Скачать: [xml.tar.bz2];

Вниз

Не печатаются изображения на принтере   Найти похожие ветки 

 
Циркуль   (2008-10-29 18:03) [0]

Задача - распечатать несколько файлов изображений (сканы неких документов). Файлы в формате JPEG.

Делаю так:
В стринглисте SL  - список имен файлов этих самых изображений.


TmpImage: TImage;
SL: TStringList;

....

       TmpImage := TImage.Create(nil);
       try
         Printer.BeginDoc;
         try
           for I := 0 to SL.Count - 1 do
           begin
             TmpImage.Picture.LoadFromFile(SL[I]);
               Printer.Canvas.StretchDraw(Rect(0, 0, Printer.PageWidth, Printer.PageHeight), TmpImage.Picture.Graphic);
             if I < SL.Count - 1 then
               Printer.NewPage;
           end;
         finally
           Printer.EndDoc;
         end;
       finally
         TmpImage.Free;
       end;


Код отрабатывает, принтер выплевывает нужное количество чистых листочков. Не пойму где тут грабли :(


 
www   (2008-10-29 18:34) [1]

вообще-то область печати не с нуля начинается...


 
tesseract ©   (2008-10-29 19:55) [2]

Гм, а принтер выбран ? Printer.PageWidth какое значение показывает ?


 
Циркуль   (2008-10-29 20:02) [3]

Если бы он не был выбран, он бы не "печатал" чистые листки :)

PageWidth <> 0


 
tesseract ©   (2008-10-29 20:08) [4]


> Если бы он не был выбран, он бы не "печатал" чистые листки
> :)


Помню такое было с термопринтерами, вроде решал через API - отрисовывал именно через DIB всё. StretchDraw не работал 100%.


 
Цитатник   (2008-10-30 08:00) [5]

Цитата:
Sandman25   (08.05.03 16:10)
Из хелпа по Delphi6.
Note: Delphi canvases use device-dependent bitmaps to implement the Draw, StretchDraw, or CopyRect methods. Because of this, you can"t use these methods with most printers. Instead, to create graphic images on the printer"s canvas, create a device-independent bitmap and draw it directly to the canvas"s Handle property.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Navi ©   (11.05.03 08:02)
To Sandman25 - спасибо, раскопал. Мне было лень - я допер методом проб и ошибок.


 
Цитатник   (2008-10-30 08:05) [6]

Цитата:
LongIsland ©   (08.05.03 10:53)
procedure TfmMain.bnPrintClick(Sender: TObject);
var
 Info: PBitmapInfo;
 InfoSize, ImageSize: DWord;
 Image: Pointer;
begin
 if not dgPrint.Execute then Exit;
 Printer.BeginDoc;
 GetDIBSizes(imMain.Picture.Bitmap.Handle, InfoSize, ImageSize);
 Info:=AllocMem(InfoSize);
 try
   Image:=AllocMem(ImageSize);
   try
     GetDIB(imMain.Picture.Bitmap.Handle, 0, Info^, Image^);
     StretchDIBits(Printer.Canvas.Handle,
                   0, 0, Printer.PageWidth, Printer.PageHeight,
                   0, 0, imMain.Width, imMain.Height,
                   Image, Info^, DIB_RGB_COLORS, SRCCOPY);
   finally
     FreeMem(Image, ImageSize);
   end;
 finally
   FreeMem(Info, InfoSize);
 end;
 Printer.EndDoc;
end;
Таким образом у меня печатает на любой принтер и любые картинки, а StretchDraw может глючить


 
Циркуль   (2008-10-30 09:26) [7]

Спасибо, работает :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2009.11.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
4-1221721293
roughneck
2008-09-18 11:01
2009.11.22
Получить иконку связанную с недоступным в сети файлом


2-1254829215
den49
2009-10-06 15:40
2009.11.22
Работа с потоками


2-1255262251
relaxive
2009-10-11 15:57
2009.11.22
Как в режиме раельного времени работать с вводом/выводом консоли?


9-1183718609
Dib@zol
2007-07-06 14:43
2009.11.22
Скринсейвер


15-1253102880
Denis__
2009-09-16 16:08
2009.11.22
Linux вVirtualBox..





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский