So, ich habe das jetzt erst mal so gelöst, dass eine Reihe von Standard-Dokumententypen einfach mit den Programmen des Libre-Office-Pakets gedruckt werden, die ja eigentlich bei jeder größeren Linux-Distro mit dabei sind.
Delphi-Quellcode:
procedure ExecACommand (cmd: string);
var
WrkProcess:TProcess;
begin
WrkProcess:=TProcess.Create(nil);
WrkProcess.Options:=[poNoConsole];
WrkProcess.CommandLine:=Cmd;
WrkProcess.Execute;
WrkProcess.Free;
end;
procedure PrintOutThisFile (fn: String);
var
ext: string;
begin
ext := lowercase (ExtractFileExt (fn));
if pos (ext, '.odt.txt.doc.rtf.docx.pas.dfm') <> 0 then begin
ExecACommand ('soffice --writer -p "' + fn + '"');
end;
if pos (ext, '.ods.xls.xlsx.csv') <> 0 then begin
ExecACommand ('soffice --calc -p "' + fn + '"');
end;
if pos (ext, '.ppt.pptx') <> 0 then begin
ExecACommand ('soffice --impress -p "' + fn + '"');
end;
if pos (ext, '.bmp') <> 0 then begin
ExecACommand ('soffice --draw -p "' + fn + '"');
end;
end;
procedure Tf_PrintFiles.bnPrintAllClick(Sender: TObject);
var
L: Integer;
pa: string;
begin
for L := 0 to lbPrint.Count -1 do begin
if lbPrint.checked[L] then begin
PrintOutThisFile (lbPrint.items[L]);
lbPrint.checked[L] := false;
end;
end;
end;
Gedacht ist diese Funktion z.B. wenn mann mehrere Dateien per Mail erhält (Textdokument, XLS und Powerpoint-Dateien), dann kann man die gewünschten Dateien auswählen und auf einmal zum Drucker schicken, man muss nicht jede einzelne Datei öffnen und die Druckfunktion aufrufen. Eine ungemeine Arbeitserleichterung (vgl. auch anl. Screenshot).