[WinPrnDev] Re: Creating a Printer Driver

  • From: "Jason Harrison" <jharrison@xxxxxxxxxxx>
  • To: <winprndev@xxxxxxxxxxxxx>
  • Date: Fri, 26 Mar 2010 09:17:33 -0700

Hi Sam,

 

Unfortunately, my knowledge of XPS support on Server 2003/2008 is limited.  I 
haven't played with that side of things yet.

 

Transferring the SPL or XPS file, or as you have lately suggested a PDF file, 
is the best route.  Best sure to test font embedding,
as with XPS it is required, but SPL and PDF it is optional.

 

Regarding the SPL/EMF font issue: SPL files are record of EMF pages plus font 
records.  Playing back just the EMF pages likely to
miss the font records. The specification for SPL files can be downloaded from 
Microsoft.  But all you probably have to do is move
the SPL file from one machine to another, and sent the SPL file to spooler of 
the second machine.

 

Because the SPL file is "printer driver" specific, you will more likely have to 
set your student's printer driver up to be
"conservative" and not use features like JPEG or PNG image encodings.  This is 
all explained in the Windows Driver Kit for GDI print
path drivers.

 

The Windows GDI print path will then need to transform the EMF records (in the 
SPL file) to PCL or PS based on the server's printer
driver, etc.

 

-Jason 

 

--

Jason Harrison
Sr Software Developer
PDFTron Systems, Inc.
www.pdftron.com
Tel:  1-604-730-8989
Fax: 1-604-676-2477
Email: jharrison@xxxxxxxxxxx

  _____  

CONFIDENTIALITY NOTICE: This message (and any attachment to it) is intended 
only for the use of the individual or entity to which it
is addressed in the header, and may contain information that is privileged, 
confidential and exempt from disclosure under applicable
law. Any reproduction, distribution, modification or use of the contents of 
this message (and any attachment to it) by any
individual or entity other than the intended recipient is prohibited. If you 
have received this communication in error, please
notify us immediately and delete the original.

  _____  

P Please think before you print!

 

From: winprndev-bounce@xxxxxxxxxxxxx [mailto:winprndev-bounce@xxxxxxxxxxxxx] On 
Behalf Of Sam Elamin
Sent: Friday, March 26, 2010 2:26 AM
To: winprndev@xxxxxxxxxxxxx
Subject: [WinPrnDev] Re: Creating a Printer Driver

 

Jason


I am not using Windows 7 to develop my print driver, I am working on a windows 
XP enviroment. Are you saying working on a windows 7
might be better?

 
but that would mean when I am transferring the Spool file, the server has to 
have windows 7 running on it which is a constraint that
we cant budge on because most sites would still be working on server 2003 or 
2008.


But even though its porbably going to be a windows-to-windows transfer, they 
are most probably be on different networks will that be
a problem?

  _____  

From: jharrison@xxxxxxxxxxx
To: winprndev@xxxxxxxxxxxxx
Subject: [WinPrnDev] Re: Creating a Printer Driver
Date: Thu, 25 Mar 2010 12:37:32 -0700

Well, both SPL files (the windows GDI print path spool file containing EMF 
pages) and the XPS file (the XPS print path spool file)
contain fonts installed on the printing computer and used in the printed 
document, in my opinion, the XPS spool files have much
better font embedding.  

 

When you send the SPL file across the network using Windows Network Printing to 
a server hosting the printer, the spooler on the
server should extract the fonts and install them temporarily, and the print out 
should look right.  However, you are talking about
using some other transport mechanism that might not get the spool file to be 
interpreted in the same way.  For example, since the
font formats/etc are in the spool file, and not the individual EMF pages, 
playing the EMF pages to the printer is unlikely to work.
But copying the file to the printer port might work.  I don't have any 
experience with that.

 

XPS files however don't have this historic problem of "pages" versus "the spool 
file."  Things are much more clearer and the Windows
7 SDK as the function StartXpsPrintJob which goes from xps file to printer in 
pretty much one step.

 

If you're going from windows to windows, then the XPS print path is likely to 
be easier to work with.  Though there is a lot of
"black magic" involved at the printer driver level, the printer driver 
installation level, etc.

 

-Jason

 

--

Jason Harrison
Sr Software Developer
PDFTron Systems, Inc.
www.pdftron.com
Tel:  1-604-730-8989
Fax: 1-604-676-2477
Email: jharrison@xxxxxxxxxxx

  _____  

CONFIDENTIALITY NOTICE: This message (and any attachment to it) is intended 
only for the use of the individual or entity to which it
is addressed in the header, and may contain information that is privileged, 
confidential and exempt from disclosure under applicable
law. Any reproduction, distribution, modification or use of the contents of 
this message (and any attachment to it) by any
individual or entity other than the intended recipient is prohibited. If you 
have received this communication in error, please
notify us immediately and delete the original.

  _____  

P Please think before you print!

 

From: winprndev-bounce@xxxxxxxxxxxxx [mailto:winprndev-bounce@xxxxxxxxxxxxx] On 
Behalf Of Sam Elamin
Sent: Thursday, March 25, 2010 9:21 AM
To: winprndev@xxxxxxxxxxxxx
Subject: [WinPrnDev] Re: Creating a Printer Driver

 

Jason



I dont understand the problem, do you mean XPS based printer driver would 
contain fonts while an SPL wouldnt?


Also yes this project is a proof of concept mainly aimed at a windows platform, 
we already have a web based print solution that
allows students to upload documents.


Now we are trying to implement it as a print driver so people can just go, 
"file, print to". To make it a much more fluid process.


Now what I am lost in is why use an XPS based driver? what do you mean by XPS 
contains fonts because from what i can see from your
email.


Both SPL and XPS contain fonts, but what fonts are you talking about exactly?.


Regards
Sam

  _____  

From: jharrison@xxxxxxxxxxx
To: winprndev@xxxxxxxxxxxxx
Subject: [WinPrnDev] Re: Creating a Printer Driver
Date: Thu, 25 Mar 2010 08:33:01 -0700

Actually the SPL file format is well documented by Microsoft, as is EMF.  You 
can find the descriptions at msdn.microsoft.com

 

However, because SPL files can contain fonts, etc, it is probably a much better 
idea to use and XPS based printer driver because the
XPS will contain all of the fonts and can be sent to a printer on the server 
much more easily and reliably than a SPL file can.

 

However, if the students that Sam alludes to are using Mac or Linux computers 
(laptops?) then he'll have to support that format too.

 

It might be better to use a simple web page that allows students to upload the 
original document to be printed, and a script on the
windows server side that downloads the document and calls ShellExecuteEx to 
print it.  The server would have to be Windows (if
you're using ShellExecuteEx) but the remote computers could be anything.

 

But as we eluded, unless all of the use cases and requirements have been fully 
discussed ahead of time, this could pose a security
risk, or miss implementing a required feature. On the other hand if this is 
just a proof of concept/experiment then the cost of
failure is much lower.

 

-Jason

 

--

Jason Harrison
Sr Software Developer
PDFTron Systems, Inc.
www.pdftron.com
Tel:  1-604-730-8989
Fax: 1-604-676-2477
Email: jharrison@xxxxxxxxxxx

  _____  

CONFIDENTIALITY NOTICE: This message (and any attachment to it) is intended 
only for the use of the individual or entity to which it
is addressed in the header, and may contain information that is privileged, 
confidential and exempt from disclosure under applicable
law. Any reproduction, distribution, modification or use of the contents of 
this message (and any attachment to it) by any
individual or entity other than the intended recipient is prohibited. If you 
have received this communication in error, please
notify us immediately and delete the original.

  _____  

P Please think before you print!

 

From: winprndev-bounce@xxxxxxxxxxxxx [mailto:winprndev-bounce@xxxxxxxxxxxxx] On 
Behalf Of Abdul Qader
Sent: Thursday, March 25, 2010 2:33 AM
To: winprndev@xxxxxxxxxxxxx
Subject: [WinPrnDev] Re: Creating a Printer Driver

 

Sam,

 

The SPL file is the spool file created by the spooler service . It can have two 
formats EMF and RAW. A RAW format is just a bit by
bit description of ever pixel and so it would be dumped to the printer by the 
driver.

In case of EMF format all the commands that we use to paint the window are 
stored .So by using the EMF you can play the commands to
the desired context to reproduce the whole image that you had created in your 
window.

Technically extracting the EMF from the spool file is undocumented. You can 
find the details in Windows Graphics Programming written
by Feng Yuan . 

 

Abdul

On Thu, Mar 25, 2010 at 2:54 PM, Sam Elamin <hussam_88@xxxxxxxxxxx> wrote:

Abdul




I am trying to understand what you are saying.


Do you mean the spool file by "SPL"? and what do you mean by the EMF? what does 
the Virtual Print Processor exactly do?

I am sorry for my complete ignorance but I am very new to the Print Driver 
world (2 days to be exact) so these terms are all new to
me.


Regards

Sam

  _____  

Date: Thu, 25 Mar 2010 11:12:18 +0530


Subject: [WinPrnDev] Re: Creating a Printer Driver

From: abqader.iqbal@xxxxxxxxx
To: winprndev@xxxxxxxxxxxxx


Sam,

 

You can get the SPL files from the Printers folder.You will need to extract the 
EMF from the spool file and play the EMF on the
corresponding context.

So you will need to create a Virtual Print Processor.The path where the spool 
files are stored are kept in the registry.

The PrintProcessor exports some calls of which PrintDocumentonPrintProcessor is 
what you need to look out for.

 

Please let me know if you need more info on this.We had implemeted some thing 
close to what you did.

 

Thanks

Abdul

On Tue, Mar 23, 2010 at 9:48 PM, Sam Elamin <hussam_88@xxxxxxxxxxx> wrote:

Hello Everyone


I am trying to develop a printer driver which will be installed on a client 
side, what i need this driver to do is just save the
path of documents sent to it to a string and forward that string to an ASP.NET 
application which will upload the document to a print
server.


now i already have the upload client working so here is the scenario which the 
printer will work on.


Document "X" is printed to a printer with the installed driver (Printer "A")


Printer "A" will then get the path of the given document and save it to string 
"Path", "Path" will then be sent to a Webpage which
will upload it.




I kept it as basic as possible because i just want to know if it could be done?


Regards
Sam

 

  _____  

Do you have a story that started on Hotmail? Tell us now

 

 

  _____  

Not got a Hotmail account? Sign-up now - Free

 

 

  _____  

We want to hear all your funny, exciting and crazy Hotmail stories. Tell us now 
<http://clk.atdmt.com/UKM/go/195013117/direct/01/> 

 

  _____  

Do you have a story that started on Hotmail? Tell us 
<http://clk.atdmt.com/UKM/go/195013117/direct/01/>  now

Other related posts: