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

Вниз

Вывод потока на принтер.   Найти похожие ветки 

 
Курдль ©   (2004-03-12 11:15) [0]

Есть ли более высокоуровневый вариант вывода потока на принтер, чем нижеуказанный?
Кстати, этот пример тоже только "взбадривает" принтер, а не печатает на нем :)

procedure PrintBuffer(PrinterIndex:integer; Title:string;
Buffer: PChar; BufferSize: integer);
var
Handle : THandle;
DocInfo: TDocInfo2;
S1,S2,S3: array[0..255] of Char;
N: dword;
begin
Printer.PrinterIndex := PrinterIndex;
Printer.GetPrinter(S1, S2, S3, Handle);
if not OpenPrinter(S1, Handle, nil) then begin
  ShowMessage("Îøèáêà ïå÷àòè " + IntToStr(GetLastError));
  Exit
end;
FillChar(DocInfo,Sizeof(DocInfo),0);
with DocInfo do begin
  pDocName := PChar(Title);
  pDataType := "RAW";
end;
N :=StartDocPrinter(Handle, 0, @DocInfo);
StartPagePrinter(Handle);
WritePrinter(Handle, Buffer, BufferSize, N);
EndPagePrinter(Handle);
EndDocPrinter(Handle);
ClosePrinter(Handle);
end;


 
CyberStorm   (2004-03-12 11:46) [1]

Есть

Var
F:TextFile;
Begin
AssignFile(F,"prn");Rewrite(F);
WriteLN(F,"sdhgkjhsdjkghsd");
CloseFile(F);
End.


 
Курдль ©   (2004-03-12 11:52) [2]

А что, WriteLn начала работать с потоками?
И не кажется ли AssignFile(F,"prn"); несколько корявым для 2004 года?


 
имя   (2004-03-12 11:54) [3]

Удалено модератором


 
CyberStorm   (2004-03-12 11:56) [4]

Да ради бога :)
переделай под TFileStream


 
CyberStorm   (2004-03-12 12:09) [5]

Var
F:TFileStream;
Buffer:string;
begin
        Buffer:="shgjkshjkgdfkgjdflkjglfdgldfgjdfldfgdfg";
        F:=TFileStream.Create("LPT1",fmCREATE);
        F.Write(Buffer[1],Length(Buffer));
        F.Free;
end;


 
Курдль ©   (2004-03-12 12:12) [6]

Вот этого я и добиваюсь - корректно отправить метафайл на принтер. Рисовать его при помощи Draw и StretchDraw не хочется из принципиальных соображений.

Следующий код вызывает зависание проги:

procedure TForm1.Button4Click(Sender: TObject);
var stm: TFileStream;
begin
 stm := TFileStream.Create("prn", fmOpenWrite);
 try
   FMetafile1.SaveToStream(stm);
 finally
   stm.Free;
 end;
end;


 
CyberStorm   (2004-03-12 12:22) [7]

Дык с этого и надо было начинать, что хочешь вывести метафайл.
Он у тебя печататься и не должен напрямую, рисуй на канвасе как показывал выше, токо так будет правильно работать


 
Курдль ©   (2004-03-12 12:34) [8]


> Он у тебя печататься и не должен напрямую, рисуй на канвасе
> как показывал выше, токо так будет правильно работать

Не! Это не интересно! Должен быть какой-то выход!
Не для того EMF придумывали, чтобы его банально рисовать.
Если метафайл можно упихать в поток, то остается грамотно поток услать на принтер. А я этого не умею :(


 
CyberStorm   (2004-03-12 12:47) [9]

Есть, кстати, драйвера у некоторых принтеров работающие только в RAW формате (это внутренний формат конкретного принтера несовместимый ни с чем) - с такими как будешь работать?
Принтер то не понимает ту кодировку графических примитивов, которая находится в EMF-файле и которую ты пытаешся скормить через порт напрямую процессору принтера, обычно в драйвере принтера есть предпроцессор который перекодирует данные в доступные аппаратной части принтера.



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

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

Наверх





Память: 0.46 MB
Время: 0.044 c
7-1076403470
Димос
2004-02-10 11:57
2004.04.04
Очистка корзины


14-1078899215
Manfred
2004-03-10 09:13
2004.04.04
Полный справочник по Win32API.


9-1062677029
Sapersky
2003-09-04 16:03
2004.04.04
Замкнутые сплайны


14-1078917811
Krotn
2004-03-10 14:23
2004.04.04
Характеристики Fm, TV, ИК волн.


14-1078424670
Ig
2004-03-04 21:24
2004.04.04
Выборы Президента России 2004





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский