Stevens Creek Software



Adding Printing Support to your Application

PalmPrint/SCS Print Server
Developer's FAQ

Why should I add printing to my application?

If your application is used by physicians to write prescriptions, or by field salespeople to take orders and print invoices, the answer will be obvious. But even if printing isn't an essential part of your application, many of your users will WANT to generate printed output directly from their Palm. Your application might lack a conduit which brings data back to the desktop to be printed. Even with a conduit, printing from the Palm can be a much faster way to produce hardcopy then HotSync'ing, opening up a desktop application, telling the application to print the information, and then waiting for your print spooler to send the data off to the printer. And, of course, your application might be used in the field, or while travelling, by users who want printed output. And there's always the final reason - competitive advantage.

Does it cost money to add printing support to my software?

No, only time (and generally a small amount). Our SDK is free.

What about licensing the software for my users? Isn't that expensive?

Not really:

  1. You might not need to pay anything. Especially if printing is an optional feature of your software, you can simply tell your users to purchase a copy of PalmPrint or SCS Print Server software if they wish to add printing. Tens of thousands of people already have copies of PalmPrint, so every one of those people will be able to take advantage of printing from your application at no cost whatsoever.
  2. Even if you do want to include a print driver with each copy of your software, it will probably cost far less than you think. SCS Print Server, which is the version of PalmPrint which provides printing services to your application without also printing from the Palm MemoPad, ToDo list, etc., sells for $19.95 in single-copy quantities. However you can purchase an "Application License" which provides a version of SCS Print Server keyed to your application for FAR less than that. Email for details.
  3. Once you add PalmPrint support to your application, your application will be added to the list of PalmPrint-enabled software on the PalmPrint web page, and viewed by more than 50,000 people every month. This alone might generate enough incremental business for you to pay any licensing costs.
  4. If you will be generating sufficient volume of business, we can set you up as a software referral partner. You put a link on your web site to a special order form on our web site, and when any of your users orders a copy of PalmPrint or SCS Print Server, you get a commission. Far from costing you money, you can end up making money.

Can't I write my own printing software?

No doubt you can. But take these things into consideration:

  1. Writing print drivers takes time. You are developing an application to meet someone's needs writing prescriptions, tracking patients, or whatever your application might be. Isn't your time better spent (and your financial returns maximized) by spending all your time on those needs? Every hour you spend writing printing software is an hour you don't spend concentrating on your specialty.
  2. PalmPrint or SCS Print Server provide drivers for an extremely wide range of printers/printer languages, including HP (PCL), Epson (ESC/P2), PostScript, bit map, and numerous barcode and receipt printers. Support is provided for both serial (and parallel, given an appropriate cable) and IrDA printing; Bluetooth printing will almost certainly be added in early 2001. This means that your users will have the widest possible choice of printers and printing methods, and that someone (Stevens Creek Software) will constantly be working to extend both the range of printers and printing methods as they become available. Is that something you want to try to duplicate, at the expense of enhancing the core aspects of your application?
  3. PalmPrint is a Palm Platinum Certified application. It has been extensively tested, both during Platinum testing and in four years of field testing by tens of thousands of users, for reliability.

Is it hard to add printing support to my application?

Generally it's almost trivial. If you have a fixed block of text to print, you just get a pointer to that text, and with single call to PalmPrint, you're done. If you need to iterate through a database, you can print one line (or several lines) at a time as you go through, but it's still pretty simple.Formatting is really the only issue that becomes time consuming. For simple applications (e.g., printing a memo), there's nothing to it; PalmPrint even takes care of word wrapping and page feeds at appropriate times. In other cases, formatting is something you need to think about, because the format of data on your Palm screen isn't likely to be the same (or even close!) to the format of the output you want on paper. If you need to format something like a receipt, with a header, "sold to" information, each line of the order, a footer, etc., the code does add up, but certainly there's nothing difficult about it.

Of course you can always add more complexity if you want to. You might want your formatting to change depending on the width of the paper (number of columns of output), for example, or you might want to allow your users the ability to define their own output formats. But even if advanced features like these are relevant to your application, they will rarely be essential for the initial release of a print-enabled version of your software, but instead can be saved for future upgrades.

In what languages or with what tools can I write my application and still add printing support with PalmPrint?

  1. Codewarrior
  2. GCC (or any other C/C++ environment)
  3. Satellite Forms
  4. Pendragon Forms (3.1)
  5. CASL
  6. NS Basic
  7. AppForge

Why is PalmPrint (and SCS Print Server) a separate application and not a "shared library"?

From the user's point of view, an application and a library are both "PRC files" that need to be installed in their Palm, so installation of the two is identical. The difference is that an application shows up on the Launcher screen and a shared library doesn't, and that the user can run the application (even SCS Print Server) by itself (that is, without running your application). The major reason we do this is to provide a UI which lets the user select the printer and printing method (IR or serial with baud rate) as well as the appropriate parameters (font, font size, margins, etc.). PalmPrint and SCS Print Server therefore provide not just a print driver functionality to your application, but also the desktop equivalent of both the Chooser (Mac) or Printers setting (Windows) and the Page Setup command.This relieves you of the need to include any of that in your application. The same thing could be done with a library, at the expense of adding even more menu choices or other UI to your application. And, of course, the fact that PalmPrint and SCS Print Server are separate applications allows the user to test their printing ability totally independently of your application. This means that if there are printing problems, it's a simple matter for your customer (or your technical support staff) to isolate the source of the problem to our application or yours.

What capabilities does PalmPrint or SCS Print Server provide my application?

  1. Printing blocks of text
  2. Printing one (or multiple) lines of text
  3. "Pass-through" mode to allow you to send any control characters (or, indeed, any bytes at all) to the printer
  4. Automatic word wrapping and page breaks (of course you can override these and provide your own)
  5. Access to learn (or change) the number of characters per line and the number of lines per page to allow you to format your output accordingly
  6. Control over the page margins (if you wish to override the settings set by the user within PalmPrint).
  7. Ability to set an indent for word-wrapped lines (lets you create "hanging paragraphs" such as the ones used in this table, perfect for lists).
  8. Switching between plain and bold
  9. Switching between Courier, Times, and Helvetica fonts
  10. Switching between 9, 10, and 12 pt. fonts
  11. Switching between portrait and landscape modes (only supported on HP and PostScript printers).
  12. Display of a printing progress window with Cancel button, and display of all error messages (Printer not found, etc.)

What printers are supported?

PalmPrint supports hundreds of different printers, by including a variety of print drivers:

  1. Plain text with and without word-wrapping (can be used to "print" to terminal emulation software on the desktop, and also for output to many barcode and receipt printers including the Eltron XPort (P2222) and TransPort (P2242), Extech MST IV, and the Comtec/Zebra Encore series)
  2. PCL (HP, Apple, Lexmark, and others, including the HP DeskJet 340, 350, and 990Cse, HP LaserJet 6P and 2100, Lexmark Optra R Plus, most Apple LaserWriters, and the Apple StyleWriter 6500)
  3. ESC/P2 (Epson, Canon, Citizen, and others, including the Canon BJC-50, 80, and 85, Citizen PD-04 and PN-60i, Epson LX-300 and Stylus Color 777)
  4. ESCPOS (many receipt printers, including the Datamax E-3202)
  5. PostScript (any PostScript printer)
  6. Specific drivers for Monarch 6015, Pentax PocketJet 200, and Seiko DPU-3445

What's the difference between PalmPrint and SCS Print Server?

From the point of view of your application, nothing whatsoever. Both provide exactly the same printing services to your application, and the same user control over printer settings. PalmPrint is the primary application we sell to end users, which provides them with the ability to print memos, to-do items, and anything copied to the clipboard (and, with the aid of our companion application SnailMailer, information from the Address Book). SCS Print Server is a "lite" version which omits those capabilities, and is the primary software we license to developers who wish to bundle printing capability with their own application.

Can I print graphics?

Until recently we have been concentrating on text printing because of our believe that the major applications for printing from a PalmOS handheld were concentrated in that area - prescriptions, invoices, emails, and so on. However we have recently begun work on adding graphics capability to the supported feature set. We recently made available a new beta version to support the Pentax PocketJet 200, which is a bitmap only printer (that is, it doesn't have built-in fonts) and therefore requires what is effectively graphics printing. This version also supports "graphical text" printing to HP printers as well (this allows us to potentially support any single-byte font set). In the next quarter we expect to make available an extension of this version which supports other kinds of graphics as well.

How do I start?

As an example of the simplest possible printing, here's all the code it takes (in addition to adding a Print button or menu to your application which will invoke this code) to print a simple block of text (such as a memo) from your application. Note that there is no error display code involving printing errors (other than possibly one to alert the user that PalmPrint or SCS Print Server is not installed on the Palm), because all such errors, as well as a user "Cancel" button, are provided by a PalmPrint status window which pops up over your application to let the user know what is happening (and then disappears at the end, of course).

From Codewarrior:

#define cmdPrintChars     32768

static void PrintChars(CharPtr theChars)
    DWord    result;
    LocalID  dbID;

    if (dbID) SysAppLaunch(0,dbID,0,cmdPrintChars,theChars,&result);

// And from somewhere else in your application...
PrintChars("This is my message to be printed");

From Satellite Forms it's even easier:

s="This is a string to print"

A complete SDK can be found online at, which provides details and sample code for taking advantage of all of the features available via PalmPrint (changing fonts, printing one line at a time, etc.).

I don't have an infrared printer. How can I test printing from my app?

Even if you do have an infrared printer, there's a much easier way to test the printed output from your application (it's the way we test all of our print-enabled applications). Put your Palm in its cradle, turn off the HotSync Manager, and activate some terminal emulation software (HyperTerm on Windows, AppleWorks on Mac, or whatever you have). Now within PalmPrint, set the output to "Plain Text" and "print" to the screen of your computer. You'll see exactly the character stream you're sending to the printer and can easily verify it's what you want no printer needed, and no paper wasted. If you need more explicit instructions, you'll find step-by-step instructions for this procedure in the last chapter of the PalmPrint manual which you can download from our web site.

I will need a copy of PalmPrint or SCS Print Server to test my app, won't I?

Yes, you will, and we're happy to provide you one. Just go to the PalmPrint developers page at, fill out the form telling about your app (whether existing or future), and we'll be glad to provide you a licensed copy of SCS Print Server at no charge (or you can upgrade to PalmPrint for a small fee). And, of course, even without that, you can always download and use a trial copy of PalmPrint or SCS Print Server.

What am I waiting for?

I don't know! Start today and join Land-J Systems, DDH Software, ThinkingBytes Technologies, Virtmed, WatchWare, iScribe, PDA Medic, Natara Software, Cutting Edge Software, Pendragon Software, PC America, Actual Software, OmniSky, JP Systems, Synergy Solutions, and many other commercial and shareware software vendors, as well as an equal number of in-house software developers, and "PalmPrint-enable" your application today. It could be as early as tomorrow (or even later today if you work fast!) that the print-enhanced version of your software will be ready to go!

Return to the main PalmPrint Developers page

Handheld Solutions for Real-world Problems
Products | Buy Now | Downloads | Support | Info for Resellers | Site Map | Contact Us | About Us