[WinPrnDev] Re: Duplicate Print jobs

  • From: Alex Egorov <alex@xxxxxxxxxxxxxx>
  • To: winprndev <winprndev@xxxxxxxxxxxxx>
  • Date: Thu, 3 Oct 2013 08:11:48 +0400

This is normal, some time you can read several bytes per one read operation
:)


On Thu, Oct 3, 2013 at 1:41 AM, Octavian Rinciog <octavian.rinciog@xxxxxxxxx
> wrote:

> Thank you Alex and Christoph for your advices.
>
> Right now I realised that the jobs are modified when I read from them.
>
> For example, I have a .spl file that, when is generated, has 838KB. When I
> first read from this job using ReadPrinter the .spl file goes to 788KB and
> multiple calls of ReadPrinter copy only 50KB (the buffer is 1024B).
>
> Do you know why is happening this?
> And also could you recommend me a proper way to copy the initial job ?
> În data de 01.10.2013 23:35, "Christoph Lindemann" <christoph@xxxxxxxxxxxx>
> a scris:
>
>  The print processor EMF/SPL functions can only be used in the context of
>> a print processor.
>> You could of course implement a new print processor, and use that with
>> the printer instead of winprint. But some drivers depend on features of
>> their own custom print processors.
>>
>> As Alex described, copy the SPL file and then parse it yourself.
>> Then replay the EMF page by page on a device context of the second
>> printer.
>>
>> You need to take into account any devmode changes and the EMF bounds to
>> setup the DC for the target printer. Orientation could for example change
>> during job.
>>
>> Also make sure to install the embedded fonts and subset fonts. Do not
>> print different jobs concurrently from different threads. Or else your
>> fonts can get wrong, when different fonts with same name are loaded at the
>> same time. The font table is process wide, and the last loaded font with a
>> particular name will be used for all threads. So you need to serialize that
>> (alternatively rewrite the fonts and font references in EMF with unique
>> names. This is a lot of work)
>>
>> /christoph
>>
>> On 01/10/2013, at 21.11, Alex Egorov <alex@xxxxxxxxxxxxxx> wrote:
>>
>> No, in my software I wait using FindFirstPrinterChangeNotification, set
>> print job to pause, make copy of the print job to file, resume print job
>> and parse file. I don't know more useful method, no know - file system
>> level filter driver, but can't write drivers.
>>
>>
>> On Tue, Oct 1, 2013 at 10:02 PM, Octavian Rinciog <
>> octavian.rinciog@xxxxxxxxx> wrote:
>>
>>> Thanks, but I was asking if there is some API that does this, because
>>> as I understand, the info is already there. (Maybe some calls of
>>> PrintDocumentOnPrintProcessor).
>>>
>>> 2013/10/1 Alex Egorov <alex@xxxxxxxxxxxxxx>:
>>> > http://www.undocprint.org/formats/winspool/emf
>>> >
>>> >
>>> > On Tue, Oct 1, 2013 at 8:10 PM, Octavian Rinciog
>>> > <octavian.rinciog@xxxxxxxxx> wrote:
>>> >>
>>> >> Thank you Alex for your advice.
>>> >> I'm wondering you  know how to extract the EMF records from the SPL
>>> >> file and save them in a file.
>>> >>
>>> >>
>>> >>
>>> >> 2013/10/1 Alex Egorov <alex@xxxxxxxxxxxxxx>:
>>> >> > With different drivers this is impossible,
>>> >> > If source printer have print jobs with NT EMF format than
>>> >> > this is possible but with some advanced work with print job content.
>>> >> > You should manually extract EMF content and send it to another
>>> printer,
>>> >> > but EMF content can be readed without any second printer.
>>> >> >
>>> >> >
>>> >> > On Tue, Oct 1, 2013 at 4:27 PM, Octavian Rinciog
>>> >> > <octavian.rinciog@xxxxxxxxx> wrote:
>>> >> >>
>>> >> >> 2013/10/1 Alex Egorov <alex@xxxxxxxxxxxxxx>:
>>> >> >> > How do you get print job handle?
>>> >> >>
>>> >> >> The source print job handle is obtained using the following calls:
>>> >> >>
>>> >> >>     _stprintf_s(jobStr, _T("%s,Job %i"), szPrinterName, iIndex);
>>> >> >>     if (!OpenPrinter(jobStr, &hPrinterJob, NULL))
>>> >> >>     {
>>> >> >>         return FALSE;
>>> >> >>     }
>>> >> >>
>>> >> >>
>>> >> >> > How big your bufsize? (Can't be more than 64k)
>>> >> >> My bufsize is 1024B. The spl file is copied very good (The two
>>> files
>>> >> >> has the same dimension and hash).
>>> >> >>
>>> >> >> Anyway, I'm not sure that copying the spl file is the proper way to
>>> >> >> implement my task, because in the general case the two printers
>>> have a
>>> >> >> different driver.
>>> >> >>
>>> >> >>
>>> >> >> --
>>> >> >> Octavian Rinciog
>>> >> >>
>>> >> >> ---
>>> >> >> Questions? First check the UndocPrint pages at
>>> >> >> http://www.undocprint.org/winspool
>>> >> >>
>>> >> >> To unsubscribe, visit the List Server page at
>>> >> >> //www.freelists.org/list/winprndev
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> > --
>>> >> > Alex Egorov
>>> >> > http://usefulsoft.com
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> Octavian Rinciog
>>> >> ---
>>> >> Questions? First check the UndocPrint pages at
>>> >> http://www.undocprint.org/winspool
>>> >>
>>> >> To unsubscribe, visit the List Server page at
>>> >> //www.freelists.org/list/winprndev
>>> >
>>> >
>>> >
>>> >
>>> > --
>>> > Alex Egorov
>>> > http://usefulsoft.com
>>>
>>>
>>>
>>> --
>>> Octavian Rinciog
>>> ---
>>> Questions? First check the UndocPrint pages at
>>> http://www.undocprint.org/winspool
>>>
>>> To unsubscribe, visit the List Server page at
>>> //www.freelists.org/list/winprndev
>>>
>>
>>
>>
>> --
>> Alex Egorov
>> http://usefulsoft.com
>>
>>


-- 
Alex Egorov
http://usefulsoft.com

Other related posts: