Erstellung eines virtuellen Druckers mit Delphi
Beispiele
◊ Sample Client application wird zu Test- und Entwicklungszwecken genutzt. Diese Anwendung zeigt an, wie man eine INI-Datei nutzt, um die Druckerauftrags-Informationen und -pfade in die generierten Dateien zu schreiben.
Sample Client Application downloaden:
Virtual Printer für Delphi
◊ Print Previewer - Beispielsanwendung, die die Features des virtuellen Druckers demonstriert. Print Previewer, der in benutzerdefinierten Client-Anwendungen benutzt wird, bietet detaillierte Informationen über gedruckte Dateien und zeigt die EMF-Dateien innerhalb des Formulars. Das Beispiel enthält den Code, der die Metadatei auf den Bildschirm ausgibt.
Print Previewer downloaden:
Virtual Printer für Delphi
◊ Printer Configuration - Beispiels-Dienstprogramm zur Konfiguration des virtuellen Druckers. Dieses Dienstprogramm ermöglicht das Festlegen solcher Parameter, wie Pfad der Client-Anwendung, Transfermodus des INI-Datei-Pfades und Ordner zum Speichern der generierten Dateien. (Der Drucker kann im EMF-, PDF-, TXT-, JPEG-, TIFF- oder BMP-Dateiformat drucken.)
Printer Configuration downloaden:
Virtual Printer für Delphi
◊ Wie druckt man die Dateien programmatisch mithilfe der ShellExecute - Funktion
Wie druckt man die Dateien programmatisch mithilfe der ShellExecute - Funktion
Das Code-Beispiel unten zeigt an, wie man die Dateien programmatisch entweder mit dem physikalischen oder virtuellen Drucker druckt, indem man die ShellExecute - Funktion benutzt. Es demonstriert auch, wie man den standardmäßigen Systemdrucker verändert.
function GetDefaultPrinter(szPrinter:PAnsiChar; var bufferSize:DWORD):
BOOL; stdcall; external 'winspool.drv' name 'GetDefaultPrinterA';
function SetDefaultPrinter(szPrinter:PAnsiChar):
BOOL; stdcall; external 'winspool.drv' name 'SetDefaultPrinterA';
procedure PrintDocumentUsingShellExecute (szPrinter: String, szDocumentPath: String)
var
szDefaultPrinter, szNamePrinterBuff: String;
bufferSize: DWord;
begin
// get the default printer
SetLength(szDefaultPrinter, MAX_PATH);
bufferSize:= MAX_PATH;
GetDefaultPrinter(Pchar(szDefaultPrinter), bufferSize);
szDefaultPrinter:= String (PChar(szDefaultPrinter));
//change the default printer
if(szPrinter <> szDefPrinter)
then SetDefaultPrinter(PChar(szPrinter));
// send the document to the print
ShellExecute(0, 'print', PChar(szDocumentPath), nil, nil, SW_HIDE);
//set default printer back to original
if(szPrinter <> szDefaultPrinter)
then SetDefaultPrinter(PChar(szDefaultPrinter));
end;
Es ist dann notwendig, diese Funktionen mit erforderlichen Parametern aufzurufen. Sie können, z.B., die MS Word- und PDF - Dokumente so drucken:
PrintDocumentUsingShellExecute('Your Virtual Printer', 'c:\Documents\AnyDocument.doc')
PrintDocumentUsingShellExecute('Your Virtual Printer', 'c:\ Documents \AnyDocument.pdf')