Re: catch EMF in Driver
- From: "Christoph Lindemann" <clindemann2@xxxxxxxxxxxxxxxxx>
- Date: Fri, 27 Oct 2006 11:33:34 +0200
You have to look for the "end of file" record (a 0 length page record),
which indicates the end of the spoolfile data.
http://undocprint.printassociates.com/formats/winspool/spl
--
Christoph Lindemann
Undocumented Printing
http://undocprint.printassociates.com/
"Dieter" <dieter.riekert@xxxxxxxxxxx> wrote in message
news:ehlfu7$doc$00$1@xxxxxxxxxxxxxxxxxxxx
Hi Thomas,
sorry I don't know what the two functions are for.
(Copies
You have to ask Vivid Aravind, printmirror was developed by him.
When using ReadPrinter check the size of the read data with the size
of the generated spoolfile. I use this function too in a print processor
and there it reads too much data. But perhaps this problems won't occur
in printer driver environment.
Dieter
Hi Dieter
I'm trough now. I put some information (JobID etc) in the Devicestruct
that
I read later in DOCUMENTEVENT_ENDDOC. Because my Driver is based on
MS-Plotter thats all the I copied from your project.
Except ... I also did CreateWin2kcompatibleSplFile in
DOCUMENTEVENT_CREATEDCPRE. In that you have a PatchIAT and FixUpDevmode ?
What is this for ? The driver works on my machine but I may have to do
something special in other cases that I did'nt know until now. Thats why
I
ask.
Next weekend I will give ReadPrinter a try ( see answer from Christoph )
Thomas
Am Fri, 20 Oct 2006 07:48:43 +0200 schrieb Dieter:
Hi DieterYes, with clientside I mean the address space of the printing
Thanks a lot, if I can put the code in the printerdriver that should be
enough for me.
With clientside you mean the application that prints and serverside is
the
spooler which sends the data to the printer ?
application. It's possible to show Dialogs and set breakpoints to debug
the client app (even in TMS environments). "Serverside" is called by the
spooler-process.
I did'nt found any really clear explanation of the printing process.
Sometime ago I wrote a device driver for my company and even in the
books
for that, they factor out printerdriver.
Good Luck
Dieter
Thomas
Am Thu, 19 Oct 2006 22:19:14 +0200 schrieb Dieter:
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
.
- Follow-Ups:
- Re: catch EMF in Driver
- From: Dieter
- Re: catch EMF in Driver
- References:
- catch EMF in Driver
- From: Thomas Freudenreich
- Re: catch EMF in Driver
- From: Dieter
- Re: catch EMF in Driver
- From: Thomas Freudenreich
- Re: catch EMF in Driver
- From: Dieter
- Re: catch EMF in Driver
- From: Thomas Freudenreich
- Re: catch EMF in Driver
- From: Dieter
- Re: catch EMF in Driver
- From: Thomas Freudenreich
- Re: catch EMF in Driver
- From: Dieter
- catch EMF in Driver
- Prev by Date: Change printing defaults for all uses
- Next by Date: Re: catch EMF in Driver
- Previous by thread: Re: catch EMF in Driver
- Next by thread: Re: catch EMF in Driver
- Index(es):
Relevant Pages
|