merhaba bartender ile oluşturduğum bir prn dosyam var
ShellExecute(Handle, 'print', PChar('c:\test.docx'), nil, nil, SW_HIDE) ;
ile yazıcıya çıktı gönderebiliyorum fakat ben
test.prn dosyamı gönderemiyorum
elimde hazır olan prn dosyasını yazıcıya nasıl gönderebilirim
yazıcıya prn dosyası gönderme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 140
- Kayıt: 11 Oca 2009 10:25
yazıcıya prn dosyası gönderme
bilmezler bilmediklerinide bilmezler ama kendilerini bilir sanırlar
Re: yazıcıya prn dosyası gönderme
Merhaba,
PRN dosyaları yazıcıların RAW formata dönüştürülmüş dosyalarıdır. Hangi yazıcı sürücüsü kullanılarak oluşturuldu ise bu yazıcıya gönderilmelidir. Bu tür dosyaları direk olarak Windows printer spooler servisine göndererek yazdırabilirsiniz. Aşağıdaki gibi bir kod kullanarak bunu yapmanız mümkün olabilir:
NOT: Kod Delphi 10.2.3 ile çalışmaktadır. Delphi 7 için ufak düzenlemeler gerekecektir.
PRN dosyaları yazıcıların RAW formata dönüştürülmüş dosyalarıdır. Hangi yazıcı sürücüsü kullanılarak oluşturuldu ise bu yazıcıya gönderilmelidir. Bu tür dosyaları direk olarak Windows printer spooler servisine göndererek yazdırabilirsiniz. Aşağıdaki gibi bir kod kullanarak bunu yapmanız mümkün olabilir:
Kod: Tümünü seç
uses
Winapi.WinSpool,
Printers;
function SpoolFile(const FileName, PrinterName: string): Integer;
var
Buffer: record
JobInfo: record // ADDJOB_INFO_1
Path: PChar;
JobID: DWORD;
end;
PathBuffer: array[0..255] of Char;
end;
SizeNeeded: DWORD;
Handle: THandle;
PrtName: string;
Ok: Boolean;
begin
// Flush job to printer
PrtName := PrinterName;
// Get Default printer name if not supplied
if PrtName = EmptyStr then PrtName := Printer.Printers[Printer.PrinterIndex];
Ok := False;
if OpenPrinter(PChar(PrtName), Handle, nil) then
begin
if AddJob(Handle, 1, @Buffer, SizeOf(Buffer), SizeNeeded) then
begin
if CopyFile(PChar(FileName), Buffer.JobInfo.Path, True) then
begin
if ScheduleJob(Handle, Buffer.JobInfo.JobID) then
begin
Ok := True;
end;
end;
end;
end;
if not Ok then
begin
Result := GetLastError();
end
else
begin
Result := 0;
end;
end;