안녕하십니까...
제가 프린터로 삼보 스타일러스에 출력하려고 합니다.
그리고 출력루틴은 프린터의 제어코드를 사용하여 출력을 하려고 하는데요.
프린터에 있는 자체 폰트가 아닌 윈도우에 있는 폰트를 지정하여 출력을
하려고 합니다. 어떻게 해야되는 지 아시는 분이 계시면 꼬옥~ 답변주십시요..
부탁합니다요.
Printer.Canvas.TextOut으로 출력을 하였더니 잘 찍히는 부분이 많지만 간혹
출력된 글자가 조금 찌그러 들더군요.
그래서 그냥 여기저기를 뒤적이다 프린터를 제어하는 소스가 있길래 써볼려고
하는데..
WritePrinter(PrinterHandle, PChar(PrnStr), Length(PrnStr), PrintCount);
이놈입니다.
그런데 윈도우의 폰트를 지정하여 출력을 어떻게 해야되는지를 몰라서요...
> 안녕하십니까...
>
> 제가 프린터로 삼보 스타일러스에 출력하려고 합니다.
> 그리고 출력루틴은 프린터의 제어코드를 사용하여 출력을 하려고 하는데요.
> 프린터에 있는 자체 폰트가 아닌 윈도우에 있는 폰트를 지정하여 출력을
> 하려고 합니다. 어떻게 해야되는 지 아시는 분이 계시면 꼬옥~ 답변주십시요..
>
> 부탁합니다요.
>
> Printer.Canvas.TextOut으로 출력을 하였더니 잘 찍히는 부분이 많지만 간혹
> 출력된 글자가 조금 찌그러 들더군요.
> 그래서 그냥 여기저기를 뒤적이다 프린터를 제어하는 소스가 있길래 써볼려고
> 하는데..
>
> WritePrinter(PrinterHandle, PChar(PrnStr), Length(PrnStr), PrintCount);
> 이놈입니다.
>
> 그런데 윈도우의 폰트를 지정하여 출력을 어떻게 해야되는지를 몰라서요...
Printer 오브젝트를 쓰지 않고 직접 프린터로 출력할때의
폰트제어에 대한 자료가 없군요
아래는 제가 가지고 있던 건데 역시나 없네요
procedure PrintFile(const sFileName: string);
const
BufSize = 16384;
type
TDoc_Info_1 = record
pDocName: pChar;
pOutputFile: pChar;
pDataType: pChar;
end;
var
Count, BytesWritten: integer;
hPrinter: THandle;
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDeviceMode: THandle;
DocInfo: TDoc_Info_1;
f: file;
Buffer: Pointer;
begin
Printer.PrinterIndex := -1;
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
if not WinSpool.OpenPrinter(@Device, hPrinter, nil) then
exit;
DocInfo.pDocName := 'MyDocument';
DocInfo.pOutputFile := nil;
DocInfo.pDatatype := 'RAW';
if StartDocPrinter(hPrinter, 1, @DocInfo) = 0 then
begin
WinSpool.ClosePrinter(hPrinter);
exit;
end;
if not StartPagePrinter(hPrinter) then
begin
EndDocPrinter(hPrinter);
WinSpool.ClosePrinter(hPrinter);
exit;
end;
System.Assign(f, sFileName);
try
Reset(f, 1);
GetMem(Buffer, BufSize);
while not eof(f) do
begin
Blockread(f, Buffer^, BufSize, Count);
if Count > 0 then
begin
if not WritePrinter(hPrinter, Buffer, Count, BytesWritten) then
begin
EndPagePrinter(hPrinter);
EndDocPrinter(hPrinter);
WinSpool.ClosePrinter(hPrinter);
FreeMem(Buffer, BufSize);
exit;
end;
end;
end;
FreeMem(Buffer, BufSize);
EndDocPrinter(hPrinter);
WinSpool.ClosePrinter(hPrinter);
finally
System.Closefile(f);
end;
end;