New life for old PostScript printers using CUPS

I have the good fortune to own a Xerox DocuColor 3535 printer. In its day, it was a workhorse, delivering oversized tab pages in full color at blazing speeds (for the early 2000s).  Mine happens to be the one with the embedded Fiery Controller, which had a lot of features, but wasn’t considered as robust as the external Fiery EX3535 or the Creo Spire RIPs that were available at the same time. Nevertheless, this machine is a trooper, producing high quality output year after year.

Unfortunately for me but also very understandably, Xerox stopped supporting this printer a long, long time ago. As a result, the last supported MacOSX version that works with the printer is 10.5. Yikes! Fortunately for me, the Fiery Command Workstation Java app still works, and it allows me to download PostScript and PDF files to the printer. The result is a clunky workflow that requires me to print to PS files on my desktop, as PDF jobs above the Acrobat 5 days will fail due to transparency and other issues, and then manually load them to the printer. This workflow was acceptable, and since it let me eke another few years out of the printer, I was not complaining.

Until yesterday, when I needed to print an XFA PDF from Acrobat. What the heck is an XFA PDF, you ask? Well, let’s gather ’round the fire for a moment and we’ll talk about it.

All PDF files aren’t created equally. Acrobat and Reader are very good at hiding this from you, which is by design. From Adobe’s perspective, the user shouldn’t need to worry whether a digital document was made using traditional PDF methods such as Distiller, a print driver, using a PDF library, or some other standards compliant method. For most applications, PDF is a way to describe the content and geometry of a document. Its roots are in PostScript, so it is no surprise that PDF is often viewed as synonym for digital paper. Over time, PDF evolved to include many interactive features such as the ability to play video, run JavaScript, and even play Flash content. Even with the interactive features of a rich PDF, however, PDF is really the closest we can get to Harry Potter paper. The pages all have a definite size, the fonts don’t change when you reorient the reading application, and the experience is definitely not responsive like a web page. This is OK, though, as PDF in its current form for most people is really about paper replacement, and as such there is no equal to PDF.

Now, Adobe gave PDF to the world as a standard in 2007 as ISO 32000-1 to promote the broader adoption of the format and to encourage companies to build solutions that can consume PDF built using traditional methods. You can purchase a PDF of the PDF Standard at the ISO 32000-1:2008 specification download page or download a free PDF version of the PDF Spec at the Adobe Developer Connection. Kind of meta, right? Also included in the PDF specification is a section about forms. As you are likely aware, PDF files can also behave like forms, and there is a forms editing capability in Acrobat that’s designed to help convert a paper form into a digital form. Using Acrobat’s built-in tools, you can take a picture of or scan a paper form, prepare the form, type on it to complete it, and then send it for electronic signature. Pretty awesome, if all you want to do is replicate a paper process.

Now, deep in the PDF specification is a section about XFA, or XML Forms Architecture. XFA is a PDF variant that is the basis of JetForms’ Accelio’s Adobe’s  LiveCycle solution, which is now known as Adobe AEM Forms. The idea is that a document could be written not as something based on a page description like a sheet of digital paper, but rather as a structured array of content that could be rendered on the fly by Acrobat or other rendering technology. It was designed for forms, because in many cases, form responses were longer or larger than the space provided. With XFA, the form can just magically get longer to accommodate. It also allowed forms designers to include interactive and design features for the person who completes the form, such as buttons to add and delete sections or fields to a form, network connections to database solutions so that the form can have up-to-date content, and much more. This all sounds amazing, right?

While Acrobat can make a form using form fields, these Acrobat-made form fields are fixed on the page in location and dimension, and the average user can’t modify the layout of the page to accommodate more content. Acrobat can’t make an XFA form, but it can read, display and  XFA forms. In order to make XFA forms, you need to use the Adobe LiveCycle Forms Designer or make it through automation using AEM Forms. LiveCycle Designer was previously included as a component of LiveCycle and in other desktop software bundles, but it is now only available to LiveCycle and AEM Forms customers. Why, you ask? XFA is used heavily by Insurance, Financial Services, Health Care and Government customers who use the business process, security, digital signature, document automation, system integration, and other capabilities of LiveCycle or AEM Forms. In addition, while XFA is included in the PDF specification, few other companies have invested resources in developing solutions around XFA PDF. This includes reading and viewing and interacting with an XFA PDF, so the only way to read, view and interact with an XFA PDF is to use Acrobat or Reader on a desktop computer. This is just fine when the intent is to enable workers in an Enterprise to engage with Enterprise business process using complex forms, but for the general user, it’s overkill.

This doesn’t mean that companies don’t use LiveCycle Designer to make standalone forms, which takes us back to the original premise. The Boy Scouts of America uses LiveCycle Designer to produce a the forms that Scouts use to manage and make the final reports for their Eagle Scout project. This form is great, because the Scout can use it as a notebook for their project. It includes fields with text, tables and photographs, and it allows the Scout to add and remove fields as necessary to accommodate the details of their project. For my son, this document grew to 34 pages and over 30 MB due to the inclusion of many photographs of his project. Now, even though the form is electronic, the local group that reviews the Eagle Rank Advancement wants a printed binder that includes these 34 pages as well as some other content, which is why I needed to print the PDF in the first place.

Printing the PDF proved to be very challenging. My usual method of uploading the PDF to the Fiery didn’t work, since the Fiery doesn’t support XFA PDF. I knew this ahead of time, so I tried to convert to PostScript from Acrobat. This also didn’t work. I knew that I could print to my inkjet printer without issue, so I decided to see if I could print to the 3535.

I remembered that Apple’s printing system is based on CUPS, their open source *nix printing architecture. I also know that it supports a wide array of network connections and adheres to the PostScript Printer Description model of defining the capabilities and limitations of a printer. I knew that while the printer has a built-in AppleTalk server and a built-in port 9100 server, neither of these connections work with modern Mac OS. I also remembered that the printer makes a Windows printer, and I was unsuccessful in printing to this printer.

I wanted to look at the options for the printer, which means either using the embedded web server (which doesn’t support anything beyond Internet Explorer on a Mac. Seriously.) or using Command Workstation 5. The Printer Setup utility requires the Apple-provided Java 6, so I needed to install that in addition to Java 8 (which I use for other applications, including Adobe Experience Manager). Now that I had Java 6 installed and Command Workstation 5 installed, I found the LPD and IPP options buried under the Service2 tab of the Network Setup. Nice! I ensured that these were enabled and went back to my Mac to try an add the printer. With the proper PPD in hand (I downloaded the software installer from Xerox), I opened up System Preferences and then the Printers & Scanners option, then clicked the + button to add a printer. I tried first with IPP, and I was unable to add a printer. I next tried with LPD, and again was unable to add a printer. In both cases, you need to specify the IP address, the queue you want to target (in my case I want the hold queue), and the PPD. Then I remembered that the printing system is CUPS, and that CUPS has a console.

The web interface to CUPS is off by default. You can enable it by going to Terminal and running the command “cupsctl WebInterface=yes”

Now that the CUPS web interface is enabled, open http://localhost:631 and you will see CUPS in all its 1994-styled glory, complete with buttons and hyperlinks that all tell you exactly what they will do. This interface is designed to be USEFUL, not pretty, so don’t go all UX on me now. You want the Administration tab, so click it and then click on Add Printer under the Printers section. You will need to enter your administrator’s user name and password, which is expected. You will now see several sections, including your installed printers, printers that CUPS can see, and also a the bottom, the Other Network Printers section. You want to click the radio button (I told you it was antique) next to LPD/LPR Host or Printer, then click the Continue button.

Select LPD/LPR

Select LPD/LPR Host or Printer

On the next screen,  enter the complete URI for your printer, including protocol and queue. For me, I used “lpd://192.168.1.22/hold” There are three queues available on this device: “lpd://192.168.1.22/direct” “lpd://192.168.1.22/hold” and “lpd://192.168.1.22/print” Enter your URI, then click the Continue button.

Enter your URI with protocol and print queue

Enter your URI with protocol and print queue

On the sext screen, enter a name and description for the printer. The name needs to be web friendly, so no spaces or slashes or hashes. If you want, you can also share the printer so others in your house or work group can access the printer. If you do, then your computer will become a print spooler for the Xerox machine, so be prepared for network activity if you’re in a company or group with several folks who’ve been jonesing to print to your 3535. IN addition, you will need to go back to the CUPS Administration page and enable the “Share printers connected to this system” option, which will force a restart of CUPS on your computer. When you’ve finished debating the pros and cons of becoming a print server, click the Continue button.

Add a name and description to your printer.

Add a name and description to your printer.

Now, this is the part where you need your PPD. Click the Choose File button, and browse to your languishing PPD from the turn of the century.  Once you’ve selected click Create Printer.

The final step is to add your PPD.

The final step is to add your PPD.

Voila! You now have a functional printer that prints to the Xerox 3535 embedded Fiery hold queue. You should see a page asking you to set the default options for the printer, which are defined by the PPD. These will apply to every job you send if you do not override the defaults, so it’s a good idea to browse through the settings one by one and tune them to your specific setup. Once satisfied, click the Set Default Options button.

Set the default printer options for your printer

Set the default printer options for your printer

After you set the default options, you should send a test page. Return to the CUPS page and click on the Printers tab, then on your newly minted printer. You should see two drop-down menus under the printer status line. Click Maintenance and then choose Print Test Page. This will send a test page to your 3535’s hold queue. You’ll need to go to Command Workstation to verify that the page was sent, but can get instant satisfaction if you built a printer that points to the print queue instead of the hold queue.

Be sure to print a test page to validate your setup.

Be sure to print a test page to validate your setup.

All of this work was to print an XFA PDF, remember?  Heading back to Acrobat, I was able to print a copy of my son’s Eagle Scout paperwork lickety split on my very old, out of support PostScript laser printer. If you’ve got one of these or other older seemingly unsupported PostScript printers lying around, power them up and see if you can use CUPS and a PPD to get them back in service again.

Share on Facebook

Comments are closed.