Introduction: Use Any GDI Printer With GNU/Linux

Most GDI printers are not supported using GNU/Linux.

Here is a way to use your printer anyway.

Step 1: Lucky Users

Before going further, check that your printer doesn't support a printing description language as postscript or PCL or something else that is supported under Linux.

If you are lucky then use the appropriate driver.

Some GDI printers are supported, so if it's your case, you should use this instead, check the list here :

http://www.linuxprinting.org/show_printer.cgi?recnum=Generic-GDI_Printer

Step 2: Choose a Virtual Machine and Install It

If you are unlucky, then you can use a virtual machine like :

- Bochs http://bochs.sourceforge.net/ (GPL)
- VMware http://www.vmware.com (Commercial, free VM player)
- Win4Lin 9x http://www.win4lin.com (Commercial)
- Win4Lin Pro http://www.win4lin.com (Commercial)

Install the virtual machine you want to use, then Microsoft Windows in this virtual machine using their respective documentation.

Step 3: Local Printer That Use a USB or Parallel Port

Under Linux, share your printer using Samba (http://www.samba.org/)

To do this you have to edit the /etc/samba/smb.conf file and add those sections :

# printers is between square brackets
[printers]
comment = All Printers
path = /var/spool/samba
browseable = yes
# to allow user 'guest account' to print.
guest ok = yes
writable = no
printable = yes
create mode = 0700
use client driver = yes

# print$ is between square brackets
[print$]
path = /var/lib/samba/printers
browseable = yes
write list = @adm root
guest ok = yes
inherit permissions = yes

Adapt the path to your configuration if needed.

Restart samba or start it if it wasn't already done (as root) :

/etc/init.d/samba restart

Now, from the Virtual Machine install then the printer as a network printer, if your host IP has the 192.168.1.10 address from the VM then you should enter

\\192.168.1.10\printer_share_name

Step 4: The Printer Is Now Ready to Be Used From Your Virtual Machine

So now, you have to print something from GNU/Linux, choose a PDF printer and write to a file what you want to print.

From your virtual machine, open the file you've just created using Acrobat Reader or FoxIt Reader or whatever you like as a PDF reader and send it to your GDI printer.

Step 5: Full Example of Printing

1. Print to a .pdf file from GNU/Linux

2. Open the .pdf file from the virtual machine (Win4Lin) using a PDF Reader

3. Select "Print" from the "File" menu

4. Go to your printer and check the result

Step 6: Use the Printer Directly From Linux

In order to have something even better, you can follow this procedure :

http://mywebpages.comcast.net/heretrythis/hp3100/psemuxp.html