printer4lazarus: cups: check PrintFile result and show error

git-svn-id: trunk@50174 -
This commit is contained in:
mattias 2015-10-26 10:28:40 +00:00
parent a46caecea3
commit 937c594c3f
3 changed files with 22 additions and 9 deletions

View File

@ -28,7 +28,6 @@ unit OSPrinters;
interface
{$IFDEF UNIX}
{$IFDEF DARWIN}
{$IFDEF LCLCarbon}

View File

@ -467,7 +467,7 @@ begin
end;
{$ENDIF}
//Print the file aFileName with a selected printer an options
//Print the file aFileName with a selected printer and options
function TCUPSPrinter.PrintFile(aFileName: String): longint;
var
aPrinterName : string;
@ -498,6 +498,11 @@ begin
end;
end;
function TCUPSPrinter.GetLastError: string;
begin
Result:=ippErrorString(cupsdyn.cupsLastError());
end;
function TCUPSPrinter.IsOptionValueValid(AKeyword, AValue: pchar): boolean;
var
Option: pppd_option_t;
@ -896,6 +901,8 @@ end;
//If not aborted, send PostScript file to printer.
//After, delete this file.
procedure TCUPSPrinter.DoEndDoc(aAborted: Boolean);
var
CupsResult: LongInt;
begin
inherited DoEndDoc(aAborted);
dec(FBeginDocCount);
@ -922,13 +929,19 @@ begin
{$IFDEF LogPrintoutFile}
CopyFile(FOutputFileName, 'printjob'+ExtractFileExt(FOutputFileName));
{$ENDIF}
{$IFNDEF DoNotPrint}
if Filename<>'' then
CopyFile(FOutputFileName, FileName)
else
PrintFile(FOutputFileName);
{$ENDIF}
DeleteFileUTF8(FOutputFilename);
try
{$IFNDEF DoNotPrint}
if Filename<>'' then
CopyFile(FOutputFileName, FileName)
else begin
CupsResult:=PrintFile(FOutputFileName+'1');
if CupsResult<=0 then
raise Exception.Create('CUPS printing: '+GetLastError);
end;
{$ENDIF}
finally
DeleteFileUTF8(FOutputFilename);
end;
end;
end;

View File

@ -168,6 +168,7 @@ type
--------------------------------------------------}
procedure SetJobState(aJobId : LongInt; aOp : ipp_op_t);
function PrintFile(aFileName: String): longint;
function GetLastError: string;
procedure DebugOptions(AOPtions:Pcups_option_t=nil; n:Integer=0);
function cupsGetOption(aKeyWord: string): String;
function CopyOptions(out AOptions: Pcups_option_t): Integer;