Hi Thomas,
I think you can copy the spool file in both calls, since the spooler is
configured not to delete the job (function
CreateWin2kcompatibleSplFile). The problem is to detect the name for the
spool file. Print Mirror uses a ExtEscape-Call to it's own driver to get
the jobid. In DOCUMENTEVENT_ENDDOCPOST the job has perhaps finished
and the driver is not alive any more (so leave it in DOCUMENT_ENDDOC)
Be aware, that parts of the function are called on the client side when
printing (CREATEDC, STARTDOC, ...) and some on the server side
(SENDPAGE, ENDDOC, ...).
Perhaps you can read the EMF-File with ReadPrinter. In printprocessors
this works, but you have to open the printer in a special way. E.g. for
printer "Test" with job "4711" you have to call
OpenPrinter ("Test, Job 4711", ...)
but you have the same problem to get the jobid.
Dieter
Thomas Freudenreich schrieb:
> Hi Dieter
> Danke fuer die hilfreiche Antwort.
>
> In the files I found you did the copying in DOCUMENTEVENT_ENDDOC not
> DOCUMENTEVENT_ENDDOCPOST ? Should I change it to DOCUMENTEVENT_ENDDOCPOST ?
>
> And is there a totally different approach ? Maybe the EMF is somewhere in
> memory , that we did'nt need to copy files. What is
> BOOL ReadPrinter(
> HANDLE hPrinter, // handle to printer object
> LPVOID pBuf, // data buffer
> DWORD cbBuf, // size of data buffer
> LPDWORD pNoBytesRead // bytes received
> );
> doing ? I guess I saw somebody wroting that it gives you the EMF Output.
> But by reading the manual it seems to me that this has more the meaning of
> reading the physical printer ports ( Busy, Paper Out ...) ?
>
> Thomas
>
>
>
>
>
>
>
>
>> Hi Thomas,
>>
>> search for PrintMirror at www.sourceforge.net.
>>
>> You can't get the emf-file in the driver. You have
>> to write a print processor (sample in ddk) or use the driver-UI
>> entry-points "DrvDocumentEvent" parameters DOCUMENTEVENT_ENDDOCPOST.
>> Look at printmirror. It uses emf-files this way.
>>
>> Dieter
>>
>> Thomas Freudenreich schrieb:
>>> I've sucessfully wrote (sample) the code to copy the emf-Spoolfiles away in
>>> an printprocessor. Because I needed an modified printerdriver, too I want
>>> to put this code in the printerdriver ( plottersample by microsoft, because
>>> I need a kind of plotterdriver ). I thought a good place where DrvEndDoc (
>>> in the sample in page.c ) but in there the spoolfiles are not finished
>>> (size 0 if debug and look at the spooldirectory). Maybe DrvSendPage. Or is
>>> it impossible to get the emf-output in the printdriver itself ?
>>>
>>> Thomas