Форум: "Основная";
Текущий архив: 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