| 1 | Paul, |
| 2 | |
| 3 | After running pin.exe 60 or 70 times, writing my own PPDs, & learning |
| 4 | far more about this stuff than I ever wanted to know, I can now get |
| 5 | perfectly printed pages on my Epson Stylus C40UX. |
| 6 | |
| 7 | As it turns out, only a few minor changes were needed to get the PPD |
| 8 | from your package (stp-escp2-c40ux.5.0.ppd.gz) to work. Perhaps the |
| 9 | following will be of use to you or Bart or whomever: |
| 10 | |
| 11 | 1- The divide-by-zero trap is caused by this stuff in the PPDs: |
| 12 | |
| 13 | *DefaultResolution: None |
| 14 | *Resolution None/Automatic: "" |
| 15 | |
| 16 | The "*Resolution" keyword _must_ be followed by a numeric value (e.g. |
| 17 | 360x360). Using 'None' sets dots-per-inch to zero, causing a trap |
| 18 | when the driver tries to do some scaling operation. Changing |
| 19 | "*DefaultResolution"" to one of the other values listed & eliminating |
| 20 | the "*Resolution None" line fixes the issue. |
| 21 | |
| 22 | Fixing this causes a non-fatal conflict. For many printers, CUPS uses |
| 23 | its "*StpQuality" keyword to set DPI. Forcing *Resolution to be valid |
| 24 | (because the IBM driver demands it) causes whatever value *StpQuality |
| 25 | set previously to be overridden. These two entries will have to be |
| 26 | reconciled (knowing what "/cupsCompression" & "/cupsRowFeed" do would |
| 27 | help). |
| 28 | |
| 29 | 2- The entries which control DPI *have* to be set identically in the |
| 30 | driver's Properties pages & in the "Set Printer Options" web page. |
| 31 | If they're not, the output is scaled incorrectly. I had the driver |
| 32 | using 8pt type but it was printing out at 24pt. Eventually I found |
| 33 | that the driver was set to 360x360 while CUPS itself was set to |
| 34 | 360x120. |
| 35 | |
| 36 | 3- "*LanguageEncoding: UTF-8" is a non-issue - at least for Western |
| 37 | European languages. AFAICT, the first 256 characters of UTF-8 are |
| 38 | IsoLatin1. Change this manually & ppdenc works great. In any case, |
| 39 | the only non-CP850 character I found in my PPD (0xD7) translated to a |
| 40 | multiplication sign. It's used in some of the paper sizes (e.g. 4x6). |
| 41 | I used a search & replace to change them to lowercase 'x' before |
| 42 | running ppdenc. The only difference between before & after was |
| 43 | "IsoLatin1" became "OS2-850". |
| 44 | |
| 45 | 4- On the 'Output' page of the driver's job properties, "Use printer |
| 46 | device fonts" has to be unchecked (at least when printing plain-text |
| 47 | files). If not, I get this error: "[Job 38] /invalidfont in findfont". |
| 48 | OS/2's lpd then reports that it got an invalid size for the file it |
| 49 | received and aborts the print job. The primary downside to this is |
| 50 | that the PS files get monstrously large because they require the font |
| 51 | to be embedded. |
| 52 | |
| 53 | 5- PPD keywords that don't have any Postscript code associated with |
| 54 | them are not emitted by the driver, e.g. |
| 55 | *StpInkType CMYK/CMYK Colour: "" |
| 56 | Consequently, most of the entries on the 'Features' page of the |
| 57 | driver properties have no effect whatsoever (and 80% of each PPD is |
| 58 | inert filler). |
| 59 | |
| 60 | 6- My PPD had 60 forms listed but the driver can only handle 30 |
| 61 | entries - the rest are ignored. |
| 62 | |
| 63 | Rich Walsh |