c2esp27~rc1/ppd/Kodak_Hero_5.1.ppd000644 001750 001750 00000017475 12254101537 016712 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for KODAK HERO 5.1 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2013 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KHERO51.ppd" *Product: "(KODAK HERO 5.1 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company KODAK HERO 5.1 AiO" *ShortNickName: "KODAK HERO 5.1 AiO" *NickName: "KODAK HERO 5.1 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMY *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK HERO 5.1 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsBackSide: "Rotated" *cupsVersion: 1.4 *cupsModelNumber: -1 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2espC" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x300dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsColorProfile 600x600dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x600dpi *Resolution 300x300dpi/300x300: "<>setpagedevice" *Resolution 600x600dpi/600x600: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: CMY *ColorModel Gray/Grayscale: "<>setpagedevice" *ColorModel CMY/Color: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *Duplex/2-Sided Printing: PickOne *OrderDependency: 10 AnySetup *Duplex *DefaultDuplex: None *Duplex None/Off (1-Sided): "<>setpagedevice" *Duplex DuplexNoTumble/Long-Edge (Portrait): "<>setpagedevice" *Duplex DuplexTumble/Short-Edge (Landscape): "<>setpagedevice" *CloseUI: *Duplex *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KHERO51.ppd, 07997 bytes. c2esp27~rc1/ppd/000775 001750 001750 00000000000 12253710332 013576 5ustar00paulpaul000000 000000 c2esp27~rc1/ppd/Kodak_Hero_6.1.ppd000644 001750 001750 00000020106 12254101537 016674 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for KODAK HERO 6.1 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2013 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KHERO61.ppd" *Product: "(KODAK HERO 6.1 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company KODAK HERO 6.1 AiO" *ShortNickName: "KODAK HERO 6.1 AiO" *NickName: "KODAK HERO 6.1 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMY *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK HERO 6.1 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsBackSide: "Rotated" *cupsVersion: 1.4 *cupsModelNumber: -1 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2espC" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x300dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsColorProfile 600x600dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x600dpi *Resolution 300x300dpi/300x300: "<>setpagedevice" *Resolution 600x600dpi/600x600: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: CMY *ColorModel Gray/Grayscale: "<>setpagedevice" *ColorModel CMY/Color: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *Duplex/2-Sided Printing: PickOne *OrderDependency: 10 AnySetup *Duplex *DefaultDuplex: None *Duplex None/Off (1-Sided): "<>setpagedevice" *Duplex DuplexNoTumble/Long-Edge (Portrait): "<>setpagedevice" *Duplex DuplexTumble/Short-Edge (Landscape): "<>setpagedevice" *CloseUI: *Duplex *OpenUI *InputSlot/Media Source: PickOne *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: MainTray *InputSlot MainTray/MainTray: "<>setpagedevice" *InputSlot PhotoTray/PhotoTray: "<>setpagedevice" *CloseUI: *InputSlot *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KHERO61.ppd, 08262 bytes. c2esp27~rc1/ppd/Kodak_ESP_C31x_Series.ppd000644 001750 001750 00000016751 12254101537 020165 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak ESP C310 Series AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2013 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESPC31x.ppd" *Product: "(Kodak ESP C310 Series AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak ESP C310 Series AiO" *ShortNickName: "Kodak ESP C310 Series AiO" *NickName: "Kodak ESP C310 Series AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMY *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP C310 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsVersion: 1.4 *cupsModelNumber: -1 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2espC" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x300dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsColorProfile 600x600dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x600dpi *Resolution 300x300dpi/300x300: "<>setpagedevice" *Resolution 600x600dpi/600x600: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: CMY *ColorModel Gray/Grayscale: "<>setpagedevice" *ColorModel CMY/Color: "<>setpagedevice" *CloseUI: *ColorModel *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESPC31x.ppd, 07657 bytes. c2esp27~rc1/c2espcommon.h000664 001750 001750 00000005665 12246674343 015442 0ustar00paulpaul000000 000000 /* * * Kodak ESP Cxxx (OPL?) Control Language filters for the Common UNIX * Printing System (CUPS). * common functions for c2esp, c2espC filters header file * * copyright Paul Newall May 2010 - Sept 2012. VERSION 3 (first used in c2esp26) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #include //FlushBackChannel, and the side channel functions and constants #include //files #include //time functions used for debugging /* * Constants... */ #define DEBUGFILES 0 /* DEBUGFILES 1 creates files in /tmp to help debug */ #define TESTING 0 /* TESTING 1 suppresses the output to the printer */ #define ESC 255 #define NL 10 /* * Globals... */ char BackBuf[32000]; //for the back channel replies from the printer int ColourPercent, BlackPercent; //to store the detected marker levels time_t KeepAwake(time_t Start, int Interval, FILE *PrintFile); void SetupLogging(char *ExtCallerName, int ExtDoBack, char *ExtLogFileName); void CloseLogging(); void DoLog(char *PrintFormat, int I1, int I2); //prints a line with 2 integers to the log file and the cups error log void DoLogString(char *PrintFormat, char *String); //prints a line with a string to the log file and the cups error log /* DoOutJob used to enable one call to send to the specified job file and to stdout (if not testing) And log the result */ void DoOutJob(FILE *OutFile, char *PrintFormat, int I1, int I2); /* FlushBackChannel gets rid of any previous reply that could cause confusion */ int FlushBackChannel(char *IdString, float DrainTime); //returns 1 if sucessful /* GoodExchange sends a command gets reply from the printer on the back channel and compares it with the expected reply It returns the number of bytes read if the reply was the one expected, otherwise -(the number of bytes read) if the reply did not match Expect, or 0 if there was no reply */ int GoodExchange(FILE *PrintFile, char *Command, char *Expect, int DoBack, unsigned int SleepTime, float ReplyTime); int MarkerPercent(char *Buf, int GetColour); /* GetColour = 1 for "Color" or 0 for "Black" */ void MarkerSetup(); void SetPaperSize(char Size[], int PaperPoints); //converts length of page in cups header (in points) into a string that the printer recognises void DisplayHeader(cups_page_header2_t *header); /* * Show page device dictionary in stderr and LogFile */ int HeaderInvalid(cups_page_header2_t *header); /* checks the header has sensible values and returns 1 if they are not sensible */ c2esp27~rc1/ppd/Kodak_ESP_1.2.ppd000644 000000 000000 00000016665 12254101537 016453 0ustar00rootroot000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for KODAK ESP 1.2 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2013 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP12.ppd" *Product: "(KODAK ESP 1.2 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company KODAK ESP 1.2 AiO" *ShortNickName: "KODAK ESP 1.2 AiO" *NickName: "KODAK ESP 1.2 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMY *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP 1.2 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsVersion: 1.4 *cupsModelNumber: -1 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2espC" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x300dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsColorProfile 600x600dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x600dpi *Resolution 300x300dpi/300x300: "<>setpagedevice" *Resolution 600x600dpi/600x600: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: CMY *ColorModel Gray/Grayscale: "<>setpagedevice" *ColorModel CMY/Color: "<>setpagedevice" *CloseUI: *ColorModel *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP12.ppd, 07605 bytes. c2esp27~rc1/c2espcommon.c000664 001750 001750 00000034017 12246674323 015424 0ustar00paulpaul000000 000000 /* * Kodak ESP Cxxx (OPL?) Control Language filters for the Common UNIX * Printing System (CUPS). * common functions for c2esp, c2espC filters * * copyright Paul Newall May 2010 - Sept 2012. VERSION 4 (first used in c2esp26) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #include "config.h" #include #include #include //FlushBackChannel, and the side channel functions and constants #include //files #include //for chmod #include //time functions used for debugging #if HAVE_CUPSFILTERS == 1 #include //has the dither functions #else #include //has the dither functions #endif #include "c2espcommon.h" //the common library /* * Constants... */ //unsigned char NL = 10; /* * Globals... */ char CallerName[50]; /* String that identifies the calling program */ int DoBack; /* Enables the back channel comms */ char BackBuf[32000]; //for the back channel replies from the printer int BackBufLen=sizeof(BackBuf)-1; FILE *LogFile = NULL; //file descriptor for log file time_t StartTime; int BlackPercent, ColourPercent; time_t KeepAwake(time_t Start, int Interval, FILE *PrintFile) { // Keeps the printer connection awake by sending DeviceStatus query not sooner than the specified interval in seconds // Usage: Start = KeepAwake(Start, Interval); if(time(NULL) - Start > Interval) { DoLog("Keeping printer awake by DeviceStatus?\n",0,0); GoodExchange(PrintFile, "DeviceStatus?", "0101,DeviceStatus.ImageDevice", DoBack, 1, 1.0); return (time(NULL)); } else return (Start); } void SetupLogging(char *ExtCallerName, int ExtDoBack, char *ExtLogFileName) { strcpy(CallerName,ExtCallerName); DoBack=ExtDoBack; if(strlen(ExtLogFileName)>0) { remove(ExtLogFileName); //to be sure I only see the latest LogFile = fopen(ExtLogFileName, "w"); //open the log file sleep(3); //does this help chmod to work? chmod(ExtLogFileName, S_IRUSR | S_IWUSR | S_IROTH ); //let anyone read it setbuf(LogFile, NULL); fprintf(LogFile, "KodakPrintLog %s\n",ExtCallerName); } StartTime = time(NULL); } void CloseLogging() { if(LogFile) { DoLog("Closing log\n",0,0); fclose(LogFile); } } void DoLog(char *PrintFormat, int I1, int I2) { //prints a line with 2 integers to the log file and the cups error log char CupsFormat[200]; strcpy(CupsFormat, "DEBUG: "); strcat(CupsFormat,CallerName); strcat(CupsFormat,":%d : "); strncat(CupsFormat,PrintFormat,150); //crop PrintFormat to avoid FAILING WITH BUFFER OVERFLOW // add \n if not \n at the end of cupsformat if(CupsFormat[strlen(CupsFormat)-1] != NL) strcat(CupsFormat,"\n"); fprintf(stderr, CupsFormat, time(NULL)-StartTime, I1, I2); if (LogFile != NULL) fprintf(LogFile, CupsFormat, time(NULL)-StartTime, I1, I2); } void DoLogString(char *PrintFormat, char *String) { //prints a line with a string to the log file and the cups error log char CupsFormat[200]; strcpy(CupsFormat, "DEBUG: "); strcat(CupsFormat,CallerName); strcat(CupsFormat,":%d : "); strncat(CupsFormat,PrintFormat,150); //crop PrintFormat to avoid FAILING WITH BUFFER OVERFLOW fprintf(stderr, CupsFormat, time(NULL)-StartTime, String); if (LogFile != NULL) fprintf(LogFile, CupsFormat, time(NULL)-StartTime, String); } /* DoOutJob used to enable one call to send to the specified job file and to stdout (if not testing) And log the result */ void DoOutJob(FILE *OutFile, char *PrintFormat, int I1, int I2) { int BytesRead = 0; //int because cupsBackChannel can return -1 char Display[80]; char LogFormat[200]; int i; if (OutFile) fprintf(OutFile, PrintFormat, I1, I2); //to the specified file #if TESTING == 0 strcpy(LogFormat, "-> "); #else strcpy(LogFormat, "-block- "); #endif strcat(LogFormat,PrintFormat); DoLog(LogFormat, I1, I2); //and the log #if TESTING == 0 fprintf(stdout, PrintFormat, I1, I2); //and to the output fflush(stdout); if(DoBack) { BytesRead = cupsBackChannelRead(BackBuf, BackBufLen, 0.5); //read the reply from printer if(BytesRead >= 1) { if(BytesRead\n", IdString); return(1); } else { if(status == CUPS_SC_STATUS_TIMEOUT) DoLogString("\n", IdString); else if(status == CUPS_SC_STATUS_IO_ERROR) DoLogString("\n", IdString); else if(status == CUPS_SC_STATUS_NOT_IMPLEMENTED) DoLogString("\n", IdString); else DoLogString("\n", IdString); return(0); } } else return(0); } /* GoodExchange now matches against substrings in the reply so we can cope with queued messages better. Thanks to Gordon for this improvement to GoodExchange 4/11/11 The UnexpectedLogLimit added 11/11/11 Note that strtok() replaces the delimiters by null bytes, so you can't search the buffer easily afterwards. It returns the nubmer of bytes read if the reply includes the one expected, otherwise -(the number of bytes read) if the reply did not include Expect, or 0 if there was no reply */ int GoodExchange(FILE *PrintFile, char *Command, char *Expect, int DoBack, unsigned int SleepTime, float ReplyTime) { int BytesRead = 0; //int because cupsBackChannel can return -1 char Display[80]; int i; int UnexpectedCount = 0; const int UnexpectedLogLimit = 5; //stops the log file being filled with Status replies due to keep awake. char * Token1; char * TokenList; const char * Delimiters = ";&"; // ; for normal replies & for device.status? requests.... // don't actually need the info but nice to be able to read it all..... int ReturnSign = -1; //assume we won't find the string we want int BlackPercentFound, ColourPercentFound; #if TESTING == 0 DoLogString("-> %s\n", Command); //now also sends to stderr #else DoLogString("-block- %s\n", Command); //now also sends to stderr #endif if(PrintFile) fprintf(PrintFile, "%s", Command); //to the global print file #if TESTING == 0 fprintf(stdout, "%s", Command); //printer command fflush(stdout); //force a packet to the printer so it can reply sleep(SleepTime); //give it a chance to reply before trying to read the reply (may not be needed) if(DoBack) { BytesRead = cupsBackChannelRead(BackBuf, BackBufLen, ReplyTime); //read the reply from printer if(BytesRead < 1) { DoLog("No reply\n",0,0); return 0; } else { BackBuf[BytesRead]=0; //add null terminator NB BytesRead==-1 if nothing read //fprintf(stderr,"thisline->%s\n",BackBuf); // search for any special replies here before strtok changes the buffer BlackPercentFound=MarkerPercent(BackBuf,0); ColourPercentFound=MarkerPercent(BackBuf,1); if(BlackPercentFound >= 0) BlackPercent=BlackPercentFound; if(ColourPercentFound >= 0) ColourPercent=ColourPercentFound; TokenList = BackBuf; Token1 = strtok(TokenList , Delimiters); while (Token1 != NULL) { for(i=0;i<79;++i) Display[i] = Token1 [i]; //copy the first 79 chars to Display if (strncmp(Token1 , Expect, strlen(Expect) -1) == 0) //reduce string length by 1 as ; removed { DoLogString("Expected reply = %s\n", Display); ReturnSign = 1; } else { // limit the number of unexpected replies that are logged if(UnexpectedCount <= UnexpectedLogLimit) DoLogString("Unexpected reply = %s\n", Display); ++UnexpectedCount; //ReturnSign defaults to unexpected unless changed by a single occurance of expected... //so don't alter it here! } Token1 = strtok(NULL , Delimiters); } return (ReturnSign * BytesRead); } } return 0; #endif } int MarkerPercent(char *Buf, int GetColour) /* GetColour = 1 for "Color" or 0 for "Black" */ { /* search for the ink data in the buffer. Returns -1 if not found */ char *MarkerLevelString; if(GetColour) MarkerLevelString = strstr(Buf, "DeviceStatus.Printer.InkLevelPercent.Color="); else MarkerLevelString = strstr(Buf, "DeviceStatus.Printer.InkLevelPercent.Black="); if (MarkerLevelString) { //DoLog("Found marker level",0,0); MarkerLevelString = strstr(MarkerLevelString, "="); if (MarkerLevelString) { if(strncmp(MarkerLevelString + 1,"F",1)==0) { DoLog("Found marker %d level Full = %d",GetColour,100); return (100); } else { DoLog("Found marker %d level %d",GetColour, atoi(MarkerLevelString + 1)); return (atoi(MarkerLevelString + 1)); } } } else { //DoLog("Failed to find marker %d level",GetColour,0); return -1; } return -1; } void MarkerSetup() { fprintf(stderr, "ATTR: marker-colors=black,magenta\n"); //displays ink drops in printer manager fprintf(stderr, "ATTR: marker-names=black,colour\n"); } void SetPaperSize(char Size[], int PaperPoints) { //converts length of page in cups header (in points) into a string that the printer recognises strcpy(Size, "MediaSize=na_letter_8.5x11in;"); //default switch (PaperPoints) { case 421 : // A6 strcpy(Size, "MediaSize=iso_a6_105x148mm;"); break; case 432 : // Photo 4x6" strcpy(Size, "MediaSize=na_index4x6_4x6in;"); break; case 504 : // Photo 5x7" strcpy(Size, "MediaSize=na_5x7_5x7in;"); break; case 540 : // Monarch Envelope break; case 595 : // A5 strcpy(Size, "MediaSize=iso_a5_148x210mm;"); break; case 624 : // DL Envelope strcpy(Size, "MediaSize=iso_dl_110x220mm;"); break; case 649 : // EnvC5 Envelope strcpy(Size, "MediaSize=iso_c5_162x229mm;"); break; case 684 : // Env10 Envelope strcpy(Size, "MediaSize=na_number10_4.125x9.5in;"); break; case 709 : // B5 Envelope strcpy(Size, "MediaSize=iso_b5_176x250mm;"); break; case 720 : // Photo 8x10" strcpy(Size, "MediaSize=na_govtletter_8x10in;"); break; case 756 : // Executive strcpy(Size, "MediaSize=na_executive_7.25x10.5in;"); break; case 792 : // Letter strcpy(Size, "MediaSize=na_letter_8.5x11in;"); break; case 842 : // A4 strcpy(Size, "MediaSize=iso_a4_210x297mm;"); break; case 1008 : // Legal strcpy(Size, "MediaSize=na_legal_8.5x14in;"); break; case 1191 : // A3 break; case 1224 : // Tabloid break; } } void DisplayHeader(cups_page_header2_t *header) { /* * Show page device dictionary... */ DoLog("StartPage...\n",0,0); DoLogString("MediaClass = \"%s\"\n", header->MediaClass); DoLogString("MediaColor = \"%s\"\n", header->MediaColor); DoLogString("MediaType = \"%s\"\n", header->MediaType); DoLogString("OutputType = \"%s\"\n", header->OutputType); DoLog("AdvanceDistance = %d\n", header->AdvanceDistance,0); DoLog("AdvanceMedia = %d\n", header->AdvanceMedia,0); DoLog("Collate = %d\n", header->Collate,0); DoLog("CutMedia = %d\n", header->CutMedia,0); DoLog("Duplex = %d\n", header->Duplex,0); DoLog("HWResolution = [ %d %d ]\n", header->HWResolution[0], header->HWResolution[1]); DoLog("ImagingBoundingBox = [ %d %d", header->ImagingBoundingBox[0], header->ImagingBoundingBox[1]); DoLog(" %d %d ]\n", header->ImagingBoundingBox[2], header->ImagingBoundingBox[3]); DoLog("InsertSheet = %d\n", header->InsertSheet,0); DoLog("Jog = %d\n", header->Jog,0); DoLog("LeadingEdge = %d\n", header->LeadingEdge,0); DoLog("Margins = [ %d %d ]\n", header->Margins[0], header->Margins[1]); DoLog("ManualFeed = %d\n", header->ManualFeed,0); DoLog("MediaPosition = %d\n", header->MediaPosition,0); DoLog("MediaWeight = %d\n", header->MediaWeight,0); DoLog("MirrorPrint = %d\n", header->MirrorPrint,0); DoLog("NegativePrint = %d\n", header->NegativePrint,0); DoLog("NumCopies = %d\n", header->NumCopies,0); DoLog("Orientation = %d\n", header->Orientation,0); DoLog("OutputFaceUp = %d\n", header->OutputFaceUp,0); DoLog("PageSize = [ %d %d ]\n", header->PageSize[0], header->PageSize[1]); DoLog("Separations = %d\n", header->Separations,0); DoLog("TraySwitch = %d\n", header->TraySwitch,0); DoLog("Tumble = %d\n", header->Tumble,0); DoLog("cupsWidth = %d\n", header->cupsWidth,0); DoLog("cupsHeight = %d\n", header->cupsHeight,0); DoLog("cupsMediaType = %d\n", header->cupsMediaType,0); DoLog("cupsBitsPerColor = %d\n", header->cupsBitsPerColor,0); DoLog("cupsBitsPerPixel = %d\n", header->cupsBitsPerPixel,0); DoLog("cupsBytesPerLine = %d\n", header->cupsBytesPerLine,0); DoLog("cupsColorOrder = %d\n", header->cupsColorOrder,0); DoLog("cupsColorSpace = %d\n", header->cupsColorSpace,0); DoLog("cupsCompression = %d\n", header->cupsCompression,0); } int HeaderInvalid(cups_page_header2_t *header) { /* checks the header has sensible values and returns 1 if they are not sensible */ if(header->HWResolution[0] != 300 && header->HWResolution[0] != 600) { DoLog("Header error: x resolution %d\n",header->HWResolution[0],0); return 1; } return 0; } c2esp27~rc1/myopldecode.c000644 001750 001750 00000061227 12254101426 015470 0ustar00paulpaul000000 000000 /* * Copyright (C) 2003-2006 Rick Richardson * Modified by Paul Newall 2010 * To decode the file for Kodak ESP nnnn AOI printers Converts the output for the printer into readable text and optionally an image file. Useful for understanding files from other drivers, or for checking a driver in development. * - * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * * Authors: Rick Richardson * and Paul Newall */ /* future mods: fix possible problem with filename length not being checked and maybe longer than the string allocated. Added 28/8/11 start including support for ESP Cxxx series */ #include #include #include #include #include #include /* for jbig */ #include /* for gzip */ #include #include "zlib.h" #define SET_BINARY_MODE(file) #define CHUNK 16384 /* * Global option flags */ int Version=21; int Debug = 0; int PrintOffset = 0; int PrintHexOffset = 0; int Stripe; //counts the stripes char *DecFile = NULL; char DefaultDecFile[512]; int DecFileGiven = 0; int sourcecount=0; int GZIPTokToRaster(FILE *source, FILE *dest,int width,int height,int bytesperpixel) { /* converts source file of inflated GZIP data to a raster file dest */ int i,prevcode=0,prevvalue=0; int repeats = 1; int RGBbuffer[15000]; //to reorder the rrrgggbbb data into rgbrgbrgb /* get dimensions colour etc */ int scale=255; int reply=0; int CODE_BLANKS=0x0001; int CODE_STREAM=0x0000; int code=0; int value=0; int pixelcount=0; // start dest file if(bytesperpixel == 3) fprintf(dest, "P6 %d %d %d\n",width,height,scale); else fprintf(dest, "P5 %d %d %d\n",width,height,scale); while ((reply != EOF) && (pixelcount",repeats,sourcecount,code,value); repeats=1; } else ++repeats; //fprintf(stdout,"\n",code,value); if (code == CODE_BLANKS) { for(i=0;i"); } else if (code == CODE_STREAM) { if(bytesperpixel == 3) { for(i=0;(i",value); } else fprintf(stdout,"",sourcecount);//unknown purpose prevcode=code; prevvalue=value; } fprintf(stdout,"\n",pixelcount,width*height); return 0; } /* for gzip functions for inflating gzip data are taken directly from zpipe Version 1.4 11 December 2005 Mark Adler */ /* Decompress from file source to file dest until stream ends or EOF. inf() returns Z_OK on success, Z_MEM_ERROR if memory could not be allocated for processing, Z_DATA_ERROR if the deflate data is invalid or incomplete, Z_VERSION_ERROR if the version of zlib.h and the version of the library linked do not match, or Z_ERRNO if there is an error reading or writing the files. */ int inf(FILE *source, FILE *dest) { int ret; unsigned have; z_stream strm; unsigned char in[CHUNK]; unsigned char out[CHUNK]; /* allocate inflate state */ strm.zalloc = Z_NULL; strm.zfree = Z_NULL; strm.opaque = Z_NULL; strm.avail_in = 0; strm.next_in = Z_NULL; ret = inflateInit(&strm); if (ret != Z_OK) return ret; /* decompress until deflate stream ends or end of file */ do { strm.avail_in = fread(in, 1, CHUNK, source); if (ferror(source)) { (void)inflateEnd(&strm); return Z_ERRNO; } if (strm.avail_in == 0) break; strm.next_in = in; /* run inflate() on input until output buffer not full */ do { strm.avail_out = CHUNK; strm.next_out = out; ret = inflate(&strm, Z_NO_FLUSH); assert(ret != Z_STREAM_ERROR); /* state not clobbered */ switch (ret) { case Z_NEED_DICT: ret = Z_DATA_ERROR; /* and fall through */ case Z_DATA_ERROR: case Z_MEM_ERROR: (void)inflateEnd(&strm); return ret; } have = CHUNK - strm.avail_out; if (fwrite(out, 1, have, dest) != have || ferror(dest)) { (void)inflateEnd(&strm); return Z_ERRNO; } } while (strm.avail_out == 0); /* done when inflate() says it's done */ } while (ret != Z_STREAM_END); /* clean up and return */ (void)inflateEnd(&strm); return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR; } /* report a zlib or i/o error */ void zerr(int ret) { fputs("zpipe: ", stderr); switch (ret) { case Z_ERRNO: if (ferror(stdin)) fputs("error reading stdin\n", stderr); if (ferror(stdout)) fputs("error writing stdout\n", stderr); break; case Z_STREAM_ERROR: fputs("invalid compression level\n", stderr); break; case Z_DATA_ERROR: fputs("invalid or incomplete deflate data\n", stderr); break; case Z_MEM_ERROR: fputs("out of memory\n", stderr); break; case Z_VERSION_ERROR: fputs("zlib version mismatch!\n", stderr); } } void debug(int level, char *fmt, ...) { /* Prints the list of variables to stderr using fmt, if Debug>=level */ va_list ap; if (Debug < level) return; va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); } int error(int fatal, char *fmt, ...) { va_list ap; fprintf(stderr, fatal ? "Error: " : "Warning: "); if (errno) fprintf(stderr, "%s: ", strerror(errno)); va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); if (fatal > 0) exit(fatal); else { errno = 0; return (fatal); } } void usage(void) { fprintf(stderr, "Usage:\n" " myopldecode [options] < opl-file\n" "\n" " Decode a Kodak Raster Object (opl) stream into human readable form.\n" "\n" " A Kodak Raster Object stream is the printer langauge used by some Kodak\n" " printers, such as the ESP 5250.\n" "\n" "\n" "Options:\n" " -d basename Basename of .pbm file for saving decompressed planes\n" " -o Print file offsets\n" " -h Print hex file offsets\n" " -D lvl Set Debug level [%d]\n" , Debug ); exit(1); } void print_bih(unsigned char bih[20]) { /* prints the header of a bih */ unsigned int i, xd, yd, l0; char hdr[] = "\n\t\t\t\t"; if (!PrintOffset && !PrintHexOffset) hdr[strlen(hdr)-1] = 0; xd = (bih[4] << 24) | (bih[5] << 16) | (bih[6] << 8) | (bih[7] << 0); yd = (bih[8] << 24) | (bih[9] << 16) | (bih[10] << 8) | (bih[11] << 0); l0 = (bih[12] << 24) | (bih[13] << 16) | (bih[14] << 8) | (bih[15] << 0); for(i=0;i<20;++i) { printf("%3x",bih[i]); } printf("%sDL = %d, D = %d, P = %d, - = %d, XY = %d x %d", hdr, bih[0], bih[1], bih[2], bih[3], xd, yd); printf("%sL0 = %d, MX = %d, MY = %d", hdr, l0, bih[16], bih[17]); printf("%sOrder = %d %s%s%s%s%s", hdr, bih[18], bih[18] & JBG_HITOLO ? " HITOLO" : "", bih[18] & JBG_SEQ ? " SEQ" : "", bih[18] & JBG_ILEAVE ? " ILEAVE" : "", bih[18] & JBG_SMID ? " SMID" : "", bih[18] & 0xf0 ? " other" : ""); printf("%sOptions = %d %s%s%s%s%s%s%s%s", hdr, bih[19], bih[19] & JBG_LRLTWO ? " LRLTWO" : "", bih[19] & JBG_VLENGTH ? " VLENGTH" : "", bih[19] & JBG_TPDON ? " TPDON" : "", bih[19] & JBG_TPBON ? " TPBON" : "", bih[19] & JBG_DPON ? " DPON" : "", bih[19] & JBG_DPPRIV ? " DPPRIV" : "", bih[19] & JBG_DPLAST ? " DPLAST" : "", bih[19] & 0x80 ? " other" : ""); printf("%s%u stripes, %d layers, %d planes", hdr, ((yd >> bih[1]) + ((((1UL << bih[1]) - 1) & xd) != 0) + l0 - 1) / l0, bih[1] - bih[0], bih[2]); } void print_config(unsigned char *c) { char hdr[] = "\n\t\t\t\t"; if (!PrintOffset && !PrintHexOffset) hdr[strlen(hdr)-1] = 0; if (c[1] == 1) { printf("%sfmt=%d np=%d", hdr, c[0], c[1]); printf("%sBLACK: X=%d, Y=%d, unk=%d, #=%d(%d)", hdr, (c[2]<<8) + c[3], (c[4]<<8) + c[5], c[6], 1 << c[7], c[7]); } else if (c[1] == 4) { printf("%sfmt=%d np=%d", hdr, c[0], c[1]); printf("%sYEL: X=%d, Y=%d, unk=%d, #=%d(%d)", hdr, (c[2]<<8) + c[3], (c[4]<<8) + c[5], c[6], 1 << c[7], c[7]); printf("%sMAG: X=%d, Y=%d, unk=%d, #=%d(%d)", hdr, (c[8]<<8) + c[9], (c[10]<<8) + c[11], c[12], 1 << c[13], c[13]); printf("%sCYA: X=%d, Y=%d, unk=%d, #=%d(%d)", hdr, (c[14]<<8) + c[15], (c[16]<<8) + c[17], c[18], 1 << c[19], c[19]); printf("%sBLK: X=%d, Y=%d, unk=%d, #=%d(%d)", hdr, (c[20]<<8) + c[21], (c[22]<<8) + c[23], c[24], 1 << c[25], c[25]); } else error(1, "config image data is not 8 or 26 bytes!\n"); } void proff(int curOff) { if (PrintOffset) printf("%d: ", curOff); else if (PrintHexOffset) printf("%6x: ", curOff); } int fgetoplsmt(char *smt, int size, int *datalen, FILE *stream) { /* opl statement fetcher, will work properly if compressed data contains ; or ? or # since it does not read the compressed data. Get a string terminated by ; or ? or # from stream The string is returned in smt with a null terminator. size is the size of smt. if the string is followed by an integer delimited by # and =, datalen returns the integer (length of the data) smt will not contain any compressed data, you must read that later. The function returns 1 if sucessful, 0 if EOF encountered, or size is exceeded. */ int c; /* for reading bytes one at a time */ char *s = smt; /* s will move along the string */ int maxdatalen = 100000; *datalen = 0; while (((c = fgetc(stream)) != EOF) && (s-smt < size)) { *s++ = c; if (c == ';' || c == '?' || c == '#') break; } if (c == '#') //expect an int next, terminated by =, that gives the no of bytes in the following data { while (((c = fgetc(stream)) != EOF) && (s-smt < size) && (*datalen < maxdatalen)) { if ((c >= '0') && (c <= '9')) /* c is a digit */ { *s++ = c; /* maybe not add to string ? */ *datalen *= 10; *datalen += c - '0'; } else break; } } *s++ = 0; /* null termimator for string */ if ((c == EOF) || (s-smt >= size)) return (0); else return (1); } char * fgetcomma(char *s, int size, int *datalen, FILE *stream) { //get a string terminated by ; or ? from stream //the string is returned in s //size is not used? //if the string has an integer delimited by # and =, datalen returns the integer (length of the data) //extents might be 10 chars per line, so s should be > 12800 chars int c; char *os = s; *datalen = 0; while ((c = fgetc(stream)) != EOF) { *s++ = c; if (c == ';' || c == '?') break; if (c == '#') //expect an int next, terminated by =, that gives the no of bytes in the following JBIG { while ((c = fgetc(stream)) != EOF) { *s++ = c; if (c == '=') break; else { *datalen *= 10; *datalen += c - '0'; } } break; } } if (c == EOF) return (NULL); *s++ = 0; return (os); } int jbig_write_file( int pn, int page, struct jbg_dec_state *pstate, FILE *dfp) //attempts to write image, finished or not { printf("\n"); // size_t cnt; int rc; int h, w, x1, x2, y, wBytes, len; unsigned char *image=NULL; //h = jbg_dec_getheight(pstate); h=pstate->l0 * (Stripe); //band height may not be right with multiple stripes w = jbg_dec_getwidth(pstate); image = jbg_dec_getimage(pstate, 0); //is the first plane 1 or 0? //len = jbg_dec_getsize(pstate); wBytes=(w+7)/8; len = ((w+7)/8)*h; if (image !=NULL) { char buf[512]; sprintf(buf, "%s-p%02d-s%02d.pbm", DecFile, page, Stripe); printf("\n", buf); dfp = fopen(buf, "w"); if (dfp) { fprintf(dfp, "P4\n%8d %8d\n", w, h); rc = fwrite(image, 1, len, dfp); fclose(dfp); } else return (1); //look for zone widths printf("\n"); for(y=0;y\n", pstate->d, (int) pstate->ii[0]); } jbg_dec_free(pstate); return (0); } int jbig_zone_widths( int pn, int page, struct jbg_dec_state *pstate, FILE *dfp) //attempts to detect the colour zone widths { printf(""); // size_t cnt; //int rc; int h, w, x1, x2, y,wBytes; unsigned char *image=NULL; h=pstate->l0 * (Stripe); //band height may not be right with multiple stripes w = jbg_dec_getwidth(pstate); image = jbg_dec_getimage(pstate, 0); wBytes=(w+7)/8; //len = ((w+7)/8)*h; if (image !=NULL) { printf("\n"); for(y=0;y\n", pstate->d, (int) pstate->ii[0]); } jbg_dec_free(pstate); return (0); } int jbig_decode1(unsigned char ch, int pn, int page, struct jbg_dec_state *pstate, FILE *dfp) //called for every char in the JBIG { size_t cnt; int rc; // printf("."); rc = jbg_dec_in(pstate, &ch, 1, &cnt); if (rc == JBG_EOK || rc == JBG_EOK_INTR) //the image is finished { int h, w, len; unsigned char *image=NULL; printf("\n\n"); //debug(0, "JBG_EOK: %d\n", pn); h = jbg_dec_getheight(pstate); w = jbg_dec_getwidth(pstate); image = jbg_dec_getimage(pstate, 0); //is the first plane 1 or 0? len = jbg_dec_getsize(pstate); if (image !=NULL) { char buf[512]; sprintf(buf, "%s-%02d-%d.pbm", DecFile, page, pn); printf("<\ndecode1 writing raster to %s...>\n", buf); dfp = fopen(buf, "w"); if (dfp) { fprintf(dfp, "P4\n%8d %8d\n", w, h); rc = fwrite(image, 1, len, dfp); fclose(dfp); } } else debug(0, "Missing image %dx%d!\n", h, w); ++Stripe; printf("\n",Stripe); // jbg_dec_free(pstate); } else //its a data byte { if(rc == JBG_EAGAIN) printf("%3x",ch); else printf("\n", jbg_strerror(rc)); //add some error message } return (rc); } void decode(FILE *fp) { int bitsperpixel,h,w,c,i; int rc=0; int FirstData; //the position of the first data byte in compressed data. In JBIG data the first stripe has a 20 bytes header, and FirstData=21. FILE *dfp = NULL; FILE *ifp = NULL; FILE *rfp = NULL; int pageNum = 1; int curOff = 0; struct jbg_dec_state s[5]; unsigned char bih[20]; int bihlen = 0; int pn = 1;//was 0 but I took out the ++pn int totSize = 0; char buf[15000]; int datalen; //size of image , size of BIE char cmpmethod[20]; char colourspace[20]; char zname[512]; //for compressed filename char iname[512]; //for inflated filename char rname[512]; //for inflated filename Stripe = 0; while (fgetcomma(buf, sizeof(buf), &datalen, fp)) //get a string in buf terminated by ; or ? and return datalen { proff(curOff); curOff += strlen(buf); if (strncmp(buf, "RasterObject.Data", 17) == 0) { printf("RasterObject.Data#%d=\n", datalen); curOff += datalen + 1; totSize += datalen; if (strncmp(cmpmethod, "JBIG", 4) == 0) { /* Handle JBIG data */ printf(""); printf("\n",Stripe); // In Kodak jbig files the header is the first 20 bytes in the data of the first stripe. if(Stripe == 0) { rc = fread(bih, bihlen = sizeof(bih), 1, fp); print_bih(bih); printf("\n"); // getc(fp); //is this for the ; at the end of the header? if (DecFileGiven) { //initialize the JBIG decode size_t cnt; jbg_dec_init(&s[pn]); rc = jbg_dec_in(&s[pn], bih, bihlen, &cnt); if (rc == JBG_EIMPL) error(1, "JBIG uses unimpl feature\n"); h = jbg_dec_getheight(&s[pn]); w = jbg_dec_getwidth(&s[pn]); printf("\n",w,h); } } //in kodak jbig files there's data following the header if (datalen > 20 && Stripe == 0) FirstData = 21; else FirstData = 1; unsigned char ch; //jbg_dec_maxsize(&s[pn], s[pn].xd, s[pn].l0); //set the size to the size of one stripe printf("\n",FirstData, datalen); h = jbg_dec_getheight(&s[pn]); w = jbg_dec_getwidth(&s[pn]); for(i=FirstData;i<=datalen;++i) { c = getc(fp); ch = c; if(i==FirstData) { printf("\n"); printf("\n",DecFile,ch,pn,pageNum); } if (DecFileGiven) jbig_decode1(ch, pn, pageNum, &s[pn], dfp); } c = getc(fp); //for the ; at the end of the data? if(c == ';') { printf("\n"); } else printf("\n"); //jbig_write_file(pn, pageNum, &s[pn], dfp); ++Stripe; printf("\n",Stripe); } // end of handle JBIG /* GZIP section */ else if (strncmp(cmpmethod, "GZIPTok", 7) == 0) { printf("\n"); if(Stripe == 0) { if (DecFileGiven) { //initialize the GZIP decode /* for now just write to a file */ sprintf(zname, "%s-p%02d.z", DecFile, pageNum); sprintf(iname, "%s-p%02d.out", DecFile, pageNum); printf("\n", zname); dfp = fopen(zname, "w"); } } FirstData = 1; //unsigned char ch; //ch may not be needed 17/12/13 printf("\n", datalen); for(i=FirstData;i<=datalen;++i) { c = getc(fp); //ch = c; //ch may not be needed 17/12/13 if(i==FirstData) { printf("\n"); printf("\n",DecFile,pn,pageNum); } //printf("\n",i); /* for now just write to a file */ if (DecFileGiven && dfp) rc = putc(c,dfp); } if (dfp) fclose(dfp); c = getc(fp); //for the ; at the end of the data? if(c == ';') { printf("\n"); /*inflate the file */ printf("\n", zname,iname); dfp = fopen(zname, "r"); ifp = fopen(iname, "w"); if (dfp && ifp) { rc = inf(dfp, ifp); fclose(dfp); fclose(ifp); } else printf(""); if (rc == Z_OK) { printf("\n"); /* check we can decode this type */ if(bitsperpixel==8) // if((bitsperpixel==8) && (strncmp(colourspace, "Mono;", 5) == 0)) { ifp = fopen(iname, "r"); if(strncmp(colourspace, "Mono;", 5) == 0) { sprintf(rname, "%s-p%02d.pgm", DecFile, pageNum); rfp = fopen(rname, "w"); GZIPTokToRaster(ifp,rfp,w,h,1); printf("\n", iname,rname); } else { sprintf(rname, "%s-p%02d.ppm", DecFile, pageNum); rfp = fopen(rname, "w"); GZIPTokToRaster(ifp,rfp,w,h,3); printf("\n", iname,rname); } if (ifp) fclose(ifp); if (rfp) fclose(rfp); } else { printf("\n", bitsperpixel, colourspace); } } else printf("\n"); } else printf("\n"); ++Stripe; printf("\n",Stripe); } //end of handle GZIP else { //unknown compression method printf("\n",cmpmethod); } } //end of compressed data else { printf("%s\n", buf); if (strncmp(buf, "LockPrinter", 11) == 0) { } else if (strncmp(buf, "Event=StartOfJob", 16) == 0) { } else if (strncmp(buf, "DeviceStatus", 12) == 0) { } else if (strncmp(buf, "DeviceSettings.System", 21) == 0) { } else if (strncmp(buf, "DeviceSettings", 14) == 0) { } else if (strncmp(buf, "DeviceStatus", 11) == 0) { } else if (strncmp(buf, "Event=EndOfPage", 15) == 0) { Stripe = 0; ++pageNum; } else if (strncmp(buf, "RasterObject.BitsPerPixel", 25) == 0) { sscanf(buf+26, "%d", &bitsperpixel); debug(1, "bitsperpixel=%d\n", bitsperpixel); } else if (strncmp(buf, "RasterObject.Planes", 19) == 0) { int pl; sscanf(buf+20, "%x", &pl); debug(1, "planes=%x\n", pl); } else if (strncmp(buf, "RasterObject.Compression", 24) == 0) { sscanf(buf+25, "%s", cmpmethod); debug(1, "compression=%s\n", cmpmethod); printf("\n",cmpmethod); } else if (strncmp(buf, "RasterObject.Colorspace", 23) == 0) { sscanf(buf+24, "%s", colourspace); debug(1, "colourspace=%s\n", colourspace); printf("\n",colourspace); } else if (strncmp(buf, "RasterObject.Width", 18) == 0) { // int w; sscanf(buf+19, "%d", &w); debug(1, "width=%d\n", w); } else if (strncmp(buf, "RasterObject.Height", 19) == 0) { //int h; sscanf(buf+20, "%d", &h); debug(1, "height=%d\n", h); } else if (strncmp(buf, "RasterObject.Extent=true", 19) == 0) { int Commas = 0; for(i=0;i\n",(Commas)/2,h); } //end of non data items } } //end of while there are statements //try to identify the width of the colour zones //jbig_zone_widths(pn, pageNum, &s[pn], dfp); //try to write the file if (strncmp(cmpmethod, "JBIG", 4) == 0) { jbig_write_file(pn, pageNum-1, &s[pn], dfp); jbg_dec_free(&s[pn]); } else if (strncmp(cmpmethod, "GZIPTok", 7) == 0) { /* write file and close the decompression */ } } //end of function decode int main(int argc, char *argv[]) { extern int optind; extern char *optarg; int c; printf("myopldecode version %d\n\n",Version); sprintf(DefaultDecFile,"myopldecode"); DecFile = DefaultDecFile; DecFileGiven =1; while ( (c = getopt(argc, argv, "d:hoD:?h")) != EOF) switch (c) { case 'd': DecFile = optarg; printf("\n", DecFile); DecFileGiven =1; break; case 'o': PrintOffset = 1; break; case 'h': PrintHexOffset = 1; break; case 'D': Debug = atoi(optarg); break; default: usage(); exit(1); } argc -= optind; argv += optind; if (argc > 0) { FILE *fp; fp = fopen(argv[0], "r"); if (!fp) error(1, "file '%s' doesn't exist\n", argv[0]); for (;;) { decode(fp); c = getc(fp); ungetc(c, fp); if (feof(fp)) break; } fclose(fp); } else { for(;;) { decode(stdin); printf("Returned from decode\n"); c = getc(stdin); ungetc(c, stdin); if (feof(stdin)) break; } } printf("\n"); exit(0); } c2esp27~rc1/KodakESP_C_07.drv000644 001750 001750 00000021454 12254021353 015704 0ustar00paulpaul000000 000000 // // // Driver info file for PPDs. For ESP Cxxx series and for Hero series // // 1 dec 2013: ShortNickName added to stop ppdc warnings. // NickName and ShortNickName changed to ModelName to help Ubuntu auto identify printers. // It seems that the ShortNickName is used to build the database for system-config-printer? // But if there is no ShortNickName, NickName is used instead? // The first word of ShortNickName gets used for the maker in the database? // ppdc still gives warnings when short nickname is >31 chars (ESP41 and ESP61) // but it still builds the ppd files. I have not found a work around for this. // Include necessary files... #include #include // Common stuff for all drivers... Attribute "cupsVersion" "" "1.4" Attribute "FileSystem" "" "False" Attribute "LandscapeOrientation" "" "Plus90" Attribute "TTRasterizer" "" "Type42" Copyright "Copyright 2011-2013 by Paul Newall" Font * Version "1.6" // Kodak { Manufacturer "Eastman Kodak Company" //was Eastman Kodak DriverType custom ManualCopies Yes ColorDevice Yes Throughput 8 Attribute "cupsSNMPSupplies" "" "False" // hope to stop the "may not be connected" message VariablePaperSize Yes MinSize 36 36 MaxSize 1080 86400 Filter application/vnd.cups-raster 50 /usr/lib/cups/filter/c2espC Filter application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp Attribute "cupsCommands" "" "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" ColorDevice Yes Attribute DefaultColorSpace "" "CMY" // HWMargins 14.03 14.25 14.03 14.25 //5mm all round HWMargins 3 3 3 3 //1mm all round // option "MediaSize" PickOne AnySetup 30 MediaSize Executive MediaSize Letter MediaSize Legal *MediaSize A4 MediaSize A5 MediaSize A6 MediaSize 8x10 MediaSize Photo4x6 MediaSize EnvISOB5 MediaSize EnvC5 MediaSize EnvDL MediaSize Env10 option "Resolution" PickOne AnySetup 20 Choice 300x300dpi/300x300 "<>setpagedevice" *Choice 600x600dpi/600x600 "<>setpagedevice" //res/media dens gamma 3x3matrix ColorProfile 300x300dpi/- 1.0 1.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 ColorProfile 600x600dpi/- 1.0 1.0 //gamma 1.5 to 1.7 was good for dithered in ESP5250 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 Attribute "marker-colors" "" "black magenta" option "ColorModel" PickOne AnySetup 10 //ColorModel name colorspace colororder compression // Choice CMY/Color "<>setpagedevice" // *Choice Gray/BlackAndWhite "<>setpagedevice" ColorModel Gray/Grayscale k chunky 0 *ColorModel CMY/Color cmy chunky 0 // Kodak ESP C110 Series without duplex or photo tray { ModelName "Kodak ESP C110 Series AiO" Attribute NickName "" "Kodak ESP C110 Series AiO" //The NickName is used in ubuntu to make the printer database Attribute ShortNickName "" "Kodak ESP C110 Series AiO" Attribute Product "" "(Kodak ESP C110 Series AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP C110 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_C11x_Series.ppd" PCFileName "KESPC11x.ppd" ModelNumber C110 } // Kodak ESP C310 Series without duplex or photo tray { ModelName "Kodak ESP C310 Series AiO" Attribute NickName "" "Kodak ESP C310 Series AiO" //The NickName is used in ubuntu to make the printer database Attribute ShortNickName "" "Kodak ESP C310 Series AiO" Attribute Product "" "(Kodak ESP C310 Series AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP C310 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_C31x_Series.ppd" PCFileName "KESPC31x.ppd" ModelNumber C310 } // Kodak ESP Hero Series without duplex or photo tray { ModelName "KODAK HERO 3.1 AiO" Attribute NickName "" "KODAK HERO 3.1 AiO" //The NickName is used in ubuntu to make the printer database Attribute ShortNickName "" "KODAK HERO 3.1 AiO" Attribute Product "" "(KODAK HERO 3.1 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK HERO 3.1 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_Hero_3.1.ppd" PCFileName "KHERO31.ppd" ModelNumber Hero3.1 } // Kodak ESP Hero Series with duplex and without photo tray { ModelName "KODAK HERO 5.1 AiO" Attribute NickName "" "KODAK HERO 5.1 AiO" //The NickName is used in ubuntu to make the printer database Attribute ShortNickName "" "KODAK HERO 5.1 AiO" Attribute Product "" "(KODAK HERO 5.1 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK HERO 5.1 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_Hero_5.1.ppd" PCFileName "KHERO51.ppd" ModelNumber Hero5.1 Duplex rotated } // Kodak ESP Hero Series with duplex and photo tray. 6.1, 7.1, 9.1 { ModelName "KODAK HERO 6.1 AiO" Attribute NickName "" "KODAK HERO 6.1 AiO" //The NickName is used in ubuntu to make the printer database Attribute ShortNickName "" "KODAK HERO 6.1 AiO" Attribute Product "" "(KODAK HERO 6.1 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK HERO 6.1 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_Hero_6.1.ppd" PCFileName "KHERO61.ppd" ModelNumber Hero6.1 Duplex rotated InputSlot 0 MainTray InputSlot 1 PhotoTray } // Kodak ESP Hero Series with duplex and photo tray. 6.1, 7.1, 9.1 { ModelName "KODAK HERO 7.1 AiO" Attribute NickName "" "KODAK HERO 7.1 AiO" //The NickName is used in ubuntu to make the printer database Attribute ShortNickName "" "KODAK HERO 7.1 AiO" Attribute Product "" "(KODAK HERO 7.1 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK HERO 7.1 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_Hero_7.1.ppd" PCFileName "KHERO71.ppd" ModelNumber Hero9.1 Duplex rotated InputSlot 0 MainTray InputSlot 1 PhotoTray } // Kodak ESP Hero Series with duplex and photo tray. 6.1, 7.1, 9.1 { ModelName "KODAK HERO 9.1 AiO" Attribute NickName "" "KODAK HERO 9.1 AiO" //The NickName is used in ubuntu to make the printer database Attribute ShortNickName "" "KODAK HERO 9.1 AiO" Attribute Product "" "(KODAK HERO 9.1 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK HERO 9.1 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_Hero_9.1.ppd" PCFileName "KHERO91.ppd" ModelNumber Hero9.1 Duplex rotated InputSlot 0 MainTray InputSlot 1 PhotoTray } // Kodak ESP Series without duplex or photo tray { ModelName "KODAK ESP 1.2 AiO" Attribute NickName "" "KODAK ESP 1.2 AiO" //The NickName is used in ubuntu to make the printer database Attribute ShortNickName "" "KODAK ESP 1.2 AiO" Attribute Product "" "(KODAK ESP 1.2 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP 1.2 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_1.2.ppd" PCFileName "KESP12.ppd" ModelNumber ESP1.2 } // Kodak ESP Series without photo tray with duplex { ModelName "KODAK ESP 2.2 AiO" Attribute NickName "" "KODAK ESP 2.2 AiO" //The NickName is used in ubuntu to make the printer database Attribute ShortNickName "" "KODAK ESP 2.2 AiO" Attribute Product "" "(KODAK ESP 2.2 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP 2.2 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_2.2.ppd" PCFileName "KESP22.ppd" ModelNumber ESP2.2 } // Kodak ESP Series without duplex or photo tray { ModelName "KODAK ESP 3.2 AiO" Attribute NickName "" "KODAK ESP 3.2 AiO" //The NickName is used in ubuntu to make the printer database Attribute ShortNickName "" "KODAK ESP 3.2 AiO" Attribute Product "" "(KODAK ESP 3.2 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP 3.2 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_3.2.ppd" PCFileName "KESP32.ppd" ModelNumber ESP3.2 } // Kodak ESP Series without photo tray with duplex { ModelName "KODAK ESP 4.2 AiO" Attribute NickName "" "KODAK ESP 4.2 AiO" //The NickName is used in ubuntu to make the printer database Attribute ShortNickName "" "KODAK ESP 4.2 AiO" Attribute Product "" "(KODAK ESP 4.2 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP 4.2 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_4.2.ppd" PCFileName "KESP42.ppd" ModelNumber ESP4.2 } } c2esp27~rc1/ppd/Kodak_ESP_41xx_Series.ppd000644 001750 001750 00000017274 12254101537 020254 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak ESP Office 4100 Series AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2012 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP41xx.ppd" *Product: "(Kodak ESP Office 4100 Series AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak ESP Office 4100 Series AiO" *ShortNickName: "Kodak ESP Office 4100 Series AiO" *NickName: "Kodak ESP Office 4100 Series AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMYK *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *cupsInkChannels: "4" *cupsInkLimit: "2.0" *cupsBlackGeneration: "0.0 0.0" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP Office 4100 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsVersion: 1.4 *cupsModelNumber: 4100 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2esp" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x1200dpi/-: "1 1 1 0 0 -0.10000000149 1 0 0 -0.300000011921 1" *cupsColorProfile 600x1200dpi/-: "1 1.399999976158 1 -0.10000000149 0 -0.10000000149 1 0 0 -0.40000000596 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x1200dpi *Resolution 300x1200dpi/300x1200: "<>setpagedevice" *Resolution 600x1200dpi/600x1200: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: RGB *ColorModel RGB/Color: "<>setpagedevice" *ColorModel Gray/BlackAndWhite: "<>setpagedevice" *CloseUI: *ColorModel *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP41xx.ppd, 07868 bytes. c2esp27~rc1/c2esp.postinst000775 001750 001750 00000006501 11664544063 015654 0ustar00paulpaul000000 000000 #!/bin/sh # postinst script for c2esp, copied from m2300w's # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package # # quoting from the policy: # Any necessary prompting should almost always be confined to the # post-installation script, and should be protected with a conditional # so that unnecessary prompting doesn't happen if a package's # installation fails and the `postinst' is called with `abort-upgrade', # `abort-remove' or `abort-deconfigure'. if [ "$1" = "configure" ]; then # Do the following only if CUPS is running and the needed CUPS tools # are available if which lpstat > /dev/null 2>&1 && \ which lpinfo > /dev/null 2>&1 && \ which lpadmin > /dev/null 2>&1 && \ LC_ALL=C lpstat -h /var/run/cups/cups.sock -r | grep -v not > /dev/null 2>&1; then # Update the PPD files of all already installed print queues # Line below was driverregexp='c2esp:' changed to work with c2espC also driverregexp='c2esp' gennicknameregexp='' [ ! -z "$gennicknameregexp" ] && \ gennicknameregexp="; $gennicknameregexp" gennicknameregexp='s/\s*\(recommended\)//'"$gennicknameregexp" tempfiles= trap 'rm -f $tempfiles; exit 0' 0 HUP INT QUIT ILL ABRT PIPE TERM tmpfile1=`mktemp -t updateppds.XXXXXX` tempfiles="$tempfiles $tmpfile1" lpinfo -h /var/run/cups/cups.sock -m | grep -E $driverregexp > $tmpfile1 cd /etc/cups/ppd for ppd in *.ppd; do [ -r "$ppd" ] || continue queue=${ppd%.ppd} #added # echo $queue >&2 lpstat -h /var/run/cups/cups.sock -p "$queue" >/dev/null 2>&1 || continue nickname=`grep '\*NickName:' "$ppd" | cut -d '"' -f 2 | perl -p -e 's/\n$//' | perl -p -e "$gennicknameregexp" | perl -p -e 's/(\W)/\\\\$1/g'` lang=`grep '\*LanguageVersion:' "$ppd" | cut -d ' ' -f 2 | perl -e 'print lc(<>)' | perl -p -e 's/[\r\n]//gs'` ppdfound="0" englishppduri="" tmpfile2=`mktemp -t updateppds.XXXXXX` tempfiles="$tempfiles $tmpfile2" cat $tmpfile1 | perl -p -e "$gennicknameregexp" | grep -E '^\S+\s+.*'"$nickname"'$' | cut -d ' ' -f 1 > $tmpfile2 while read newppduri; do [ "$ppdfound" = "0" ] && lpadmin -h /var/run/cups/cups.sock -p "$queue" -m $newppduri 2>/dev/null || continue newlang=`grep '\*LanguageVersion:' "$ppd" | cut -d ' ' -f 2 | perl -e 'print lc(<>)' | perl -p -e 's/[\r\n]//gs'` [ "$newlang" = "$lang" ] && ppdfound="1" [ "$newlang" = "english" ] && englishppduri="$newppduri" done < $tmpfile2 [ "$ppdfound" = "0" ] && [ ! -z "$englishppduri" ] && lpadmin -h /var/run/cups/cups.sock -p "$queue" -m $englishppduri 2>/dev/null && ppdfound="1" [ "$ppdfound" = "1" ] && echo PPD for printer $queue updated >&2 done fi elif [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-remove" ] || [ "$1" = "abort-deconfigure" ]; then : else echo "postinst called with unknown argument \`$1'" >&2 exit 0 fi #DEBHELPER# exit 0 c2esp27~rc1/ppd/Kodak_Hero_3.1.ppd000644 001750 001750 00000016675 12254101537 016711 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for KODAK HERO 3.1 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2013 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KHERO31.ppd" *Product: "(KODAK HERO 3.1 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company KODAK HERO 3.1 AiO" *ShortNickName: "KODAK HERO 3.1 AiO" *NickName: "KODAK HERO 3.1 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMY *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK HERO 3.1 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsVersion: 1.4 *cupsModelNumber: -1 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2espC" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x300dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsColorProfile 600x600dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x600dpi *Resolution 300x300dpi/300x300: "<>setpagedevice" *Resolution 600x600dpi/600x600: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: CMY *ColorModel Gray/Grayscale: "<>setpagedevice" *ColorModel CMY/Color: "<>setpagedevice" *CloseUI: *ColorModel *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KHERO31.ppd, 07613 bytes. c2esp27~rc1/INSTALL.in000644 001750 001750 00000020233 12016727017 014454 0ustar00paulpaul000000 000000 INSTALLATION ------------ (Debian and ubuntu now have packages in repositories you can install) There may be a more recent version available as a .deb file on sourceforge. There may be a more recent source code version available as a .tar.gz file on sourceforge. The general procedure will be like this if you compile from source. (see below for details for different distros): Download: You download the compressed archive file Unpack: You uncompress the archive to get several files required to install the driver. (This is one of those files, so you have probably done that already) (Optional) Install packages needed for this driver to work: You may need to install some packages before you can install the driver. Most distros have some package manager that you use to do this. (Optional) Uninstall: If you have already installed a previous version of this driver, it might be helpful to uninstall it. If not, ignore this step. Compile: You need to convert the program, written in c, into something your computer can run. Compiling will be done by a command like "make" Install driver, PPD files, and extra files: Various files need to be copied to folders where the system can find them. This will be done with a command like "make install" Create printers: This is where you tell cups about the new printer. Then it should be possible to print. Detailed versions follow for different distros: UBUNTU NOTES ------------ (in the following NN in the filename c2espNN means the 2 digits of the release no) (so for release 0.4, you would type c2esp04 ) Download: You download the compressed archive file from http://sourceforge.net/projects/cupsdriverkodak/ It is usually convenient to store the dowloaded file in your home directory. Unpack: You uncompress the archive to get several files required to install the driver. If you double click on the dowloaded .tar.gz file, the archive manager should open. Use the extract button to extract files from the archive. The goal is to get a folder called something like c2esp04 (the last 2 digits depend on the version of the driver)in some place you specify, for example in your home folder. This folder should contain the files in the archive. (Optional) Install packages needed for this driver to work: You may need to install some packages if you do not already have them, before you can install the driver. I'm assuming you know how to do that (with synaptic package manager). You will need the following: build-essential cups libcups2-dev libcupsimage2-dev libcupsdriver1-dev For cups versions 1.6 or later the cups dependencies may be different You need to open a terminal for the following steps: ctrl-alt-t will start terminal When the terminal starts you will be in your home folder. You need to navigate to the folder where you unpacked the driver. (in the following NN in the filename c2espNN means the 2 digits of the release no) (so for release 0.4, you would type c2esp04 ) For example (in this example "$" represents the prompt, you type what follows the $: $ cd c2espNN (Optional) Uninstall: If you have already installed a previous version of this driver, it might be helpful to uninstall it. If not, ignore this step. To uninstall, you type: $ sudo make uninstall The sudo indicates that you want to do some kind of system modification that you would normally be prevented from doing. So you get asked for the password the first time you use sudo. Compile: You need to convert the program, written in c, into something your computer can run. To compile, you type: $ make You may get messages suggesting you need to install some package (see the (Optional) Install packages section above) You may get some warnings, you can probably ignore those. You may get some error messages, if so it's unlikely you can continue. Install driver, PPD files, and extra files: Various files need to be copied to folders where the system can find them. To install, you type: $ sudo make install The sudo indicates that you want to do some kind of system modification that you would normally be prevented from doing. So you get asked for the password the first time you use sudo. Create printers: This is where you tell cups about the new printer. Turn the printer on. (in ubuntu 10.xx) Menu: System/Administration/Printing A printer configuration window should open. Click the "new" button, and wait while the system searches for printers, you should get a "Select device" window. Navigate to the printer (network printer or USB printer). I find I have to wait for several seconds after clicking on a network printer for it to be highlighted. If you are setting up a new version of c2esp, you may have more than one version of the printer to choose from. From c2esp11 and later there is more than one ppd file: model 5200 has no duplex, model 5500 has duplex. From c2esp13 and later there are 4 ppd files 5200 non duplex / 5500 duplex, dithered / non dithered Select the file that best matches your printer model. Dithered is better quality, uses more memory and is slower. From c2esp18 and later there is one ppd per printer model. Dithered/non dithered are choices in the colour options. Click "Forward" and wait again for the "Describe printer" window. Change the names if you wish, and click the "Apply" button. Print test page if you wish, but you might do this first: If you right click the newly created printer in the printer configuration window, you can set up some default properties like: Colour or b/w, resolution, paper size etc. (under printer options) I generally make 2 printers, one colour and one b/w. But that's not essential. Also in the printer configuration window, you can see some messages showing progress of the print job. (in ubuntu 11.0x) I think you need to use the web interface for cups, point web browser to http://localhost:631/admin Then follow a similar sequence to above to create a printer queue. Now there is a script to try and update ppds of existing print queues, if you are updating c2esp $ sudo make forceppd (in ubuntu 11.10 and later) c2esp is included in this disto, so the printer should just work (you may need to create print queue as described for ubuntu 11.0x Then it should be possible for you to print. SIXTY FOUR BIT ------ There are three ways that I know to install in 64 bit. 1. This way is potentially the easiest, I have not tested it: jolting, made a repository from version c2esp08 Install it like this in terminal: sudo add-apt-repository ppa:jolting/cupsdriverkodak sudo apt-get update sudo apt-get install c2esp 2. You download the latest tar file (currently c2esp26) and extract it somewhere convenient for you then make and install it. You can find instructions in the extracted tar file, or in some other topics in help. Also you can find some tips from people who have done this in other topics in help. 3. Debian and Ubuntu now include c2esp as an installable package. DEBIAN NOTES ------------ BEWARE, THESE DEBIAN NOTES ARE JUST A GUESS THEY ARE UNTESTED. Install build-essential, cupsys FIRST: $ su # apt-get install build-essential # apt-get install cupsys $ wget -O c2espNN.tar.gz http://
$ tar zxf c2espNN.tar.gz $ cd c2espNN $ make $ su # make install $ firefox http://localhost:631 UNINSTALLING ------------ This will uninstall everything from your system. $ su # make uninstall BUG REPORTS ----------- DEVELOPER AND DEBUGGING TIPS ---------------------------- c2esp creates some files in /tmp if it was compiled with DEBUGFILES = 1 KodakPrintLog - may help to identify where c2esp goes wrong KodakPrintFile - a copy of what gets sent to the printer RasForComp.pbm - the raster data, before it gets compressed and sent to the printer In /etc/cups/cupsd.conf Change LogLevel warn to LogLevel debug to get much more information in /var/log/cups/error_log All the logging output that would go into the file KodakPrintLog now goes into cups/error_log. This allows users who install a binary package to get logging data without needing to recompile. Since cups/error_log gets quite large, the command c2esplog is provided to extract the lines relevant to c2esp from cups/error_log. c2esp27~rc1/ppd/Kodak_ESP_52xx_Series.ppd000644 000000 000000 00000017222 12254101537 020261 0ustar00rootroot000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak ESP 5200 Series AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2012 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP52xx.ppd" *Product: "(Kodak ESP 5200 Series AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak ESP 5200 Series AiO" *ShortNickName: "Kodak ESP 5200 Series Aio" *NickName: "Kodak ESP 5200 Series AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMYK *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *cupsInkChannels: "4" *cupsInkLimit: "2.0" *cupsBlackGeneration: "0.0 0.0" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP 5200 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsVersion: 1.4 *cupsModelNumber: 5250 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2esp" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x1200dpi/-: "1 1 1 0 0 -0.10000000149 1 0 0 -0.300000011921 1" *cupsColorProfile 600x1200dpi/-: "1 1.399999976158 1 -0.10000000149 0 -0.10000000149 1 0 0 -0.40000000596 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x1200dpi *Resolution 300x1200dpi/300x1200: "<>setpagedevice" *Resolution 600x1200dpi/600x1200: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: RGB *ColorModel RGB/Color: "<>setpagedevice" *ColorModel Gray/BlackAndWhite: "<>setpagedevice" *CloseUI: *ColorModel *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP52xx.ppd, 07826 bytes. c2esp27~rc1/ppd/Kodak_ESP_5.ppd000644 001750 001750 00000017422 12254101537 016275 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak ESP 5 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2012 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP5.ppd" *Product: "(Kodak ESP 5 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak ESP 5 AiO" *ShortNickName: "Kodak ESP 5 AiO" *NickName: "Kodak ESP 5 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMYK *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *cupsInkChannels: "4" *cupsInkLimit: "2.0" *cupsBlackGeneration: "0.0 0.0" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP 5 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsVersion: 1.4 *cupsModelNumber: 5 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2esp" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x1200dpi/-: "1 1 1 0 0 -0.10000000149 1 0 0 -0.300000011921 1" *cupsColorProfile 600x1200dpi/-: "1 1.399999976158 1 -0.10000000149 0 -0.10000000149 1 0 0 -0.40000000596 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x1200dpi *Resolution 300x1200dpi/300x1200: "<>setpagedevice" *Resolution 600x1200dpi/600x1200: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: RGB *ColorModel RGB/Color: "<>setpagedevice" *ColorModel Gray/BlackAndWhite: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *InputSlot/Media Source: PickOne *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: MainTray *InputSlot MainTray/MainTray: "<>setpagedevice" *CloseUI: *InputSlot *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP5.ppd, 07954 bytes. c2esp27~rc1/ppd/Kodak_ESP_55xx_Series.ppd000644 001750 001750 00000020331 12254101537 020245 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak 5500 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2012 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP55xx.ppd" *Product: "(Kodak 5500 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak 5500 AiO" *ShortNickName: "Kodak 5500 AiO" *NickName: "Kodak 5500 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMYK *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *cupsInkChannels: "4" *cupsInkLimit: "2.0" *cupsBlackGeneration: "0.0 0.0" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK 5500 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsBackSide: "Rotated" *cupsVersion: 1.4 *cupsModelNumber: 5500 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2esp" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x1200dpi/-: "1 1 1 0 0 -0.10000000149 1 0 0 -0.300000011921 1" *cupsColorProfile 600x1200dpi/-: "1 1.399999976158 1 -0.10000000149 0 -0.10000000149 1 0 0 -0.40000000596 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x1200dpi *Resolution 300x1200dpi/300x1200: "<>setpagedevice" *Resolution 600x1200dpi/600x1200: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: RGB *ColorModel RGB/Color: "<>setpagedevice" *ColorModel Gray/BlackAndWhite: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *Duplex/2-Sided Printing: PickOne *OrderDependency: 10 AnySetup *Duplex *DefaultDuplex: None *Duplex None/Off (1-Sided): "<>setpagedevice" *Duplex DuplexNoTumble/Long-Edge (Portrait): "<>setpagedevice" *Duplex DuplexTumble/Short-Edge (Landscape): "<>setpagedevice" *CloseUI: *Duplex *OpenUI *InputSlot/Media Source: PickOne *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: MainTray *InputSlot MainTray/MainTray: "<>setpagedevice" *InputSlot PhotoTray/PhotoTray: "<>setpagedevice" *CloseUI: *InputSlot *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP55xx.ppd, 08409 bytes. c2esp27~rc1/command2esp.c000644 001750 001750 00000014556 12246674363 015417 0ustar00paulpaul000000 000000 /* * * Kodak ESP command filter for CUPS. * * Copyright 2011 - Sept 2012 by P.Newall. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * Contents: * * main() - Main entry and command processing. */ /* filter must implement the following: Exchange for test page Maintenance=002? 0096, OK, Maintenance Started; Exchange for alignment Maintenance=006? 0096, OK, Maintenance Started; Exchange for clean Maintenance=003? 0096, OK, Maintenance Started; */ /*#define DEBUGFILES 0 DEBUGFILES 1 creates files in /tmp to help debug */ /*#define TESTING 0 TESTING 1 suppresses output to the printer to help debug */ /* * Include necessary headers... */ #include "config.h" #include #include //FlushBackChannel, and the side channel functions and constants #include "string.h" #include #include //files #include //time functions used for debugging #include //chmod #if HAVE_CUPSFILTERS == 1 #include //has the dither functions #else #include //has the dither functions #endif #include "c2espcommon.h" //the common library time_t StartTime; //FILE *LogFile = NULL; //file descriptor for log file FILE *PrintFile = NULL; //file descriptor for debug file //char BackBuf[32000]; //for the back channel replies from the printer //int BackBufLen=sizeof(BackBuf)-1, int DoBack=1; /* Enables the back channel comms */ /* time_t KeepAwake(time_t Start, int Interval) { // Keeps the printer connection awake by sending DeviceStatus query not sooner than the specified interval in seconds // Usage: Start = KeepAwake(Start, Interval); if(time(NULL) - Start > Interval) { DoLog("Keeping printer awake by DeviceStatus?\n",0,0); GoodExchange(PrintFile, "DeviceStatus?", "0101,DeviceStatus.ImageDevice", DoBack, 1, 1.0); return (time(NULL)); } else return (Start); } */ void KeepAwakeFor(int Duration, int Interval) { /* Keep the printer connection awake for Duration seconds, doing KeepAwake every Interval seconds */ time_t KeepAwakeStart; int i; KeepAwakeStart = time(NULL); for (i=0;i 7) { /* * We don't have the correct number of arguments; write an error message * and return. */ fputs("ERROR: command2esp job-id user title copies options [file]\n", stderr); return (1); } /* * Open the command file as needed... */ if (argc == 7) { if ((fp = fopen(argv[6], "r")) == NULL) { perror("ERROR: Unable to open command file - "); return (1); } } else fp = stdin; /* * Read the commands from the file and send the appropriate commands... */ while (fgets(line, sizeof(line), fp) != NULL) { /* * Drop trailing newline... */ lineptr = line + strlen(line) - 1; if (*lineptr == '\n') *lineptr = '\0'; /* * Skip leading whitespace... */ for (lineptr = line; isspace(*lineptr); lineptr ++); /* isspace is in ctype.h */ /* * Skip comments and blank lines... */ if (*lineptr == '#' || !*lineptr) continue; /* * Parse the command... */ if (strncasecmp(lineptr, "Clean", 5) == 0) { /* Clean heads...*/ fputs("INFO: command2esp Clean print head\n", stderr); DoLog("Clean print head\n",0,0); GoodExchange(PrintFile, "Maintenance=003?", "0096, OK, Maintenance Started;", DoBack, 1, 1.0); KeepAwakeFor(80,10); } else if (strncasecmp(lineptr, "PrintAlignmentPage", 18) == 0) { /* Print alignment page...*/ fputs("INFO: command2esp Print alignment page\n", stderr); DoLog("Print alignment page\n",0,0); GoodExchange(PrintFile, "Maintenance=006?", "0096, OK, Maintenance Started;", DoBack, 1, 1.0); KeepAwakeFor(80,10); } else if (strncasecmp(lineptr, "PrintSelfTestPage", 17) == 0) { fputs("INFO: command2esp Print Self Test Page\n", stderr); DoLog("Print Self Test Page\n",0,0); GoodExchange(PrintFile, "Maintenance=002?", "0096, OK, Maintenance Started;", DoBack, 1, 1.0); // Hero 9.1 does not need to be kept awake. ESP 5250 does? //sleep(80); //did not work for ESP 5250 KeepAwakeFor(80,15); } else if (strncasecmp(lineptr, "ReportLevels", 12) == 0) { /* Report ink levels... */ StatusLength=abs(GoodExchange(PrintFile, "DeviceStatus?", "0101,DeviceStatus.ImageDevice", DoBack, 1, 1.0)); DoLog("StatusLength=%d\n",StatusLength,0); /* you can get unexpected reply if there is an ink low warning then GoodExchange will be -ve */ /* aquire ink levels here? DeviceStatus.Printer.InkLevelPercent.Colour=nn%&DeviceStatus.Printer.InkLevelPercent.Black=nn% */ if(StatusLength>0) { /* GoodExchange will have found the marker levels and set the globals BlackPercent and ColourPercent */ MarkerSetup(); // set the levels displayed in system-config-printer fprintf(stderr,"ATTR: marker-levels=%d,%d\n",BlackPercent,ColourPercent); } } else if (strncasecmp(lineptr, "SetAlignment", 12) == 0) { /* * Set head alignment... may not be possible for ESP printers - do nothing */ } else fprintf(stderr, "ERROR: Invalid printer command \"%s\"!\n", lineptr); } /* * Close the files and return... */ if (fp != stdin) fclose(fp); CloseLogging(); return (0); } c2esp27~rc1/ppd/Kodak_ESP_92xx_Series.ppd000644 001750 001750 00000020433 12254101537 020251 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak ESP 9200 Series AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2012 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP92xx.ppd" *Product: "(Kodak ESP 9200 Series AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak ESP 9200 Series AiO" *ShortNickName: "Kodak ESP 9200 Series AiO" *NickName: "Kodak ESP 9200 Series AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMYK *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *cupsInkChannels: "4" *cupsInkLimit: "2.0" *cupsBlackGeneration: "0.0 0.0" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP 9200 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsBackSide: "Rotated" *cupsVersion: 1.4 *cupsModelNumber: 9250 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2esp" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x1200dpi/-: "1 1 1 0 0 -0.10000000149 1 0 0 -0.300000011921 1" *cupsColorProfile 600x1200dpi/-: "1 1.399999976158 1 -0.10000000149 0 -0.10000000149 1 0 0 -0.40000000596 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x1200dpi *Resolution 300x1200dpi/300x1200: "<>setpagedevice" *Resolution 600x1200dpi/600x1200: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: RGB *ColorModel RGB/Color: "<>setpagedevice" *ColorModel Gray/BlackAndWhite: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *Duplex/2-Sided Printing: PickOne *OrderDependency: 10 AnySetup *Duplex *DefaultDuplex: None *Duplex None/Off (1-Sided): "<>setpagedevice" *Duplex DuplexNoTumble/Long-Edge (Portrait): "<>setpagedevice" *Duplex DuplexTumble/Short-Edge (Landscape): "<>setpagedevice" *CloseUI: *Duplex *OpenUI *InputSlot/Media Source: PickOne *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: MainTray *InputSlot MainTray/MainTray: "<>setpagedevice" *InputSlot PhotoTray/PhotoTray: "<>setpagedevice" *CloseUI: *InputSlot *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP92xx.ppd, 08475 bytes. c2esp27~rc1/ppd/Kodak_ESP_32xx_Series.ppd000644 001750 001750 00000017222 12254101537 020245 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak ESP 3200 Series AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2012 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP32xx.ppd" *Product: "(Kodak ESP 3200 Series AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak ESP 3200 Series AiO" *ShortNickName: "Kodak ESP 3200 Series AiO" *NickName: "Kodak ESP 3200 Series AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMYK *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *cupsInkChannels: "4" *cupsInkLimit: "2.0" *cupsBlackGeneration: "0.0 0.0" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP 3200 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsVersion: 1.4 *cupsModelNumber: 3250 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2esp" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x1200dpi/-: "1 1 1 0 0 -0.10000000149 1 0 0 -0.300000011921 1" *cupsColorProfile 600x1200dpi/-: "1 1.399999976158 1 -0.10000000149 0 -0.10000000149 1 0 0 -0.40000000596 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x1200dpi *Resolution 300x1200dpi/300x1200: "<>setpagedevice" *Resolution 600x1200dpi/600x1200: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: RGB *ColorModel RGB/Color: "<>setpagedevice" *ColorModel Gray/BlackAndWhite: "<>setpagedevice" *CloseUI: *ColorModel *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP32xx.ppd, 07826 bytes. c2esp27~rc1/ppd/Kodak_ESP_51xx_Series.ppd000644 001750 001750 00000020331 12254101537 020241 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak 5100 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2012 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP51xx.ppd" *Product: "(Kodak 5100 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak 5100 AiO" *ShortNickName: "Kodak 5100 AiO" *NickName: "Kodak 5100 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMYK *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *cupsInkChannels: "4" *cupsInkLimit: "2.0" *cupsBlackGeneration: "0.0 0.0" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK 5100 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsBackSide: "Rotated" *cupsVersion: 1.4 *cupsModelNumber: 5100 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2esp" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x1200dpi/-: "1 1 1 0 0 -0.10000000149 1 0 0 -0.300000011921 1" *cupsColorProfile 600x1200dpi/-: "1 1.399999976158 1 -0.10000000149 0 -0.10000000149 1 0 0 -0.40000000596 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x1200dpi *Resolution 300x1200dpi/300x1200: "<>setpagedevice" *Resolution 600x1200dpi/600x1200: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: RGB *ColorModel RGB/Color: "<>setpagedevice" *ColorModel Gray/BlackAndWhite: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *Duplex/2-Sided Printing: PickOne *OrderDependency: 10 AnySetup *Duplex *DefaultDuplex: None *Duplex None/Off (1-Sided): "<>setpagedevice" *Duplex DuplexNoTumble/Long-Edge (Portrait): "<>setpagedevice" *Duplex DuplexTumble/Short-Edge (Landscape): "<>setpagedevice" *CloseUI: *Duplex *OpenUI *InputSlot/Media Source: PickOne *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: MainTray *InputSlot MainTray/MainTray: "<>setpagedevice" *InputSlot PhotoTray/PhotoTray: "<>setpagedevice" *CloseUI: *InputSlot *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP51xx.ppd, 08409 bytes. c2esp27~rc1/c2esp.c000664 001750 001750 00000137145 12254077017 014215 0ustar00paulpaul000000 000000 /* * Now using RGB for 300 and 600 dpi * Kodak ESP 5xxx (OPL?) Control Language filter for the Common UNIX * Printing System (CUPS) * * copyright Paul Newall May 2010 - Mar 2013. VERSION 2.7 (c2esp27) * patch by user awl29 applied to fix problems with non bi-directional printers, smb shared * data chunk size limit applied * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * Params: job-id user title copies options [file] * options = "noback" disables all calls to the back channel for testing. * This filter is based on: the structure of the rastertohp filter supplied with cups the JBIG library by Markus Kuhn The ESP printers can print in black and white mode or in colour. With resolutions 300 or 600 dpi. If you want to compile with the DEBUGFILES or TESTING options, they should be set in c2espcommon.h */ #define MAXJBIGDATACHUNK 65511 /* some printers can't handle more than 65K at a time */ #include "config.h" #include #include //FlushBackChannel, and the side channel functions and constants #include //files #include #include #include #include //the reduced jbig library #include //time functions used for debugging #if HAVE_CUPSFILTERS == 1 #include //has the dither functions #else #include //has the dither functions #endif #include "c2espcommon.h" //the common library /* * Constants... */ char *Version = "c2esp27"; int StripeHeightMax = 1280; //the max height of a stripe. (Windows 300x1200 files have 1920) const float default_lut2[2] = {0.0, 1.0}; // for colour 1 bit const float default_lut3[3] = {0.0, 0.5, 1.0}; // for colour 2 bit or for black and grey will be separated to 2 x 1 bit const float default_lut5[5] = {0.0, 0.25, 0.5, 0.75, 1.0}; //for black and grey will be separated to 2 x 2 bit int DoTrans = 1; //enables the cmyk transform int MonitorColour = 0; //select colour for debug files CMYK 0123 char *RawColourFileName = "/tmp/ColourRaw.pbm"; char *DitheredColourFileName = "/tmp/ColourDithered.pbm"; char *RasForCompFileName = "/tmp/RasForComp.pbm"; char *CyanRasFileName = "/tmp/RasCyan.pbm"; char *MagentaRasFileName = "/tmp/RasMagenta.pbm"; char *YellowRasFileName = "/tmp/RasYellow.pbm"; char *BlackRasFileName = "/tmp/RasBlack.pbm"; char *GreyRasFileName = "/tmp/RasGrey.pbm"; char *CupsRasterFileName = "/tmp/CupsRaster.pbm"; char *PrintFileName = "/tmp/KodakPrintFile"; char *LogFileName = "/tmp/KodakPrintLog"; char *JobFileName = "/tmp/c2espjob"; /* * Globals... */ unsigned char *RasSpace; /* Output buffer with space before start for previous lines */ unsigned char *RasForComp; /* Output buffer */ unsigned char *CupsLineBuffer; //buffer for one line of the cups raster, RGB or K, bytes short *TransformedBuffer; //cups line buffer transformed, CMYK short *DitherInputBuffer; //buffer for input to the dither, one colour, short ints unsigned char *DitherOutputBuffer; //buffer for output of the dither, one colour, bytes unsigned char *CompStripeBuffer; //buffer for one compressed stripe char KodakPaperSize[50]; /* String that the printer expects for paper size */ int CompStripeBufferFree, //free pointer for buffer OutBitsPerPixel, /* Number of bits per color per pixel for printer*/ RasForCompWidth, //width of raster that is compessed and sent to printer Duplex, /* Current duplex mode */ Page, /* Current page number */ Canceled, /* Has the current job been canceled? */ DoBack; /* Enables the back channel comms */ int BytesPerColour; int SkipStripe; //=1 for each blank stripe that will be skipped int kbUsed = 0; //tracks memory use long BytesOutCountSingle;//tracks total no of compressed bytes output by jbig library for single stripe system time_t TimeStart; //to record the start of a section FILE *PrintFile = NULL; //file descriptor for debug file FILE *JobFile; int CupsLineBufMax = 0; int TransformedBufMax = 0; unsigned char MinOut, MaxOut; //to check the range of the dithered output short MinIn=5000, MaxIn=0; //to check the range of the dithered input time_t StartTime; time_t KeepAwakeStart; int StripeAccum; //to calc average pixel in stripe #if DEBUGFILES == 1 FILE *dfp = NULL; //file descriptor for composite raster file FILE *Cyanfp = NULL; //file descriptor for cyan only raster file FILE *Magentafp = NULL; //file descriptor for magenta only raster file FILE *Yellowfp = NULL; //file descriptor for yellow only raster file FILE *Blackfp = NULL; //file descriptor for black only raster file FILE *Greyfp = NULL; //file descriptor for grey only raster file FILE *RawColourFile = NULL; //file descriptor for input to dither FILE *DitheredColourFile = NULL; //file descriptor for output from dither FILE *CupsRasterFile = NULL; //file descriptor for the cups raster #endif struct jbg85_enc_state JbigState; /* DoOutJob used to enable one call to send to the specified job file and to stdout (if not testing)*/ void DoOutJobNoBack(FILE *OutFile, char *PrintFormat, int I1, int I2) { if (OutFile) fprintf(OutFile, PrintFormat, I1, I2); //to the specified file #if TESTING == 0 fprintf(stdout, PrintFormat, I1, I2); //and to the output #endif KeepAwakeStart = time(NULL); // reset timer } void SetupPrinter(cups_page_header2_t *header) { //gets the printer ready to start the job int i; int StatusLength; for(i=0; i<4; ++i) { if(GoodExchange(JobFile, "LockPrinterWait?", "0002, OK, Locked for printing;", DoBack, 1, 3.0) >= 0) break; } DoOutJob(JobFile, "Event=StartOfJob;",0,0); //printer command if (DoBack) { StatusLength=abs(GoodExchange(PrintFile, "DeviceStatus?", "0101,DeviceStatus.ImageDevice", DoBack, 1, 1.0)); DoLog("StatusLength=%d\n",StatusLength,0); /* you can get unexpected reply if there is an ink low warning then GoodExchange will be -ve */ //aquire ink levels here? DeviceStatus.Printer.InkLevelPercent.Colour=nn%&DeviceStatus.Printer.InkLevelPercent.Black=nn% //note & used as separator if(StatusLength>0) { DoLog("ColourPercent=%d\n",ColourPercent,0); DoLog("BlackPercent=%d\n",BlackPercent,0); fprintf(stderr,"ATTR: marker-levels=%d,%d\n",BlackPercent,ColourPercent); // sets the levels displayed in printer manager } GoodExchange(PrintFile, "DeviceSettings.System?", "0101,DeviceSettings.System", DoBack, 1, 1.0); GoodExchange(PrintFile, "DeviceSettings?", "0101,DeviceSettings.AddressBook", DoBack, 1, 1.0); } DoOutJob(JobFile, KodakPaperSize,0,0); if(header->MediaPosition == 0) DoOutJob(JobFile, "MediaInputTrayCheck=Main;",0,0); else if(header->MediaPosition == 1) DoOutJob(JobFile, "MediaInputTrayCheck=Photo;",0,0); else { DoOutJob(JobFile, "MediaInputTrayCheck=Main;",0,0); DoLog("Unknown Input Tray no. %d so used main tray", header->MediaPosition, 0); } if (DoBack) { GoodExchange(PrintFile, "MediaTypeStatus?", "MediaTypeStatus=custom-media-type-deviceunavailable", DoBack, 1, 1.0); GoodExchange(PrintFile, "MediaDetect?", "0098, OK, Media Detect Started;", DoBack, 1, 1.0); //do MediaTypeStatus? until some media is found #if TESTING == 0 sleep(5); //typical media detect is 7 seconds for(i=0; i<15; ++i) //normal #endif #if TESTING == 1 for(i=0; i<2; ++i) //short for tests #endif { DoLog("MediaTypeStatus? try %d\n", i, 0); if(GoodExchange(PrintFile, "MediaTypeStatus?", "MediaTypeStatus=custom-media-type-deviceunavailable", DoBack, 2, 2.0) <= 0) break; } } } void ShutdownPrinter(void) { int i, ret; DoOutJob(JobFile, "Event=EndOfJob;",0,0); for(i=0; i<20; ++i) /* fast PC might need lots of tries here for printer to finish, how many is reasonable? */ { /* First few tries will be quick so small jobs finish quickly */ if(i<5) ret=GoodExchange(JobFile, "UnlockPrinter?", "0003, OK, Printer unlocked;", DoBack, 1, 5.0); /* Then tries will be slower so long jobs can finish */ else ret=GoodExchange(JobFile, "UnlockPrinter?", "0003, OK, Printer unlocked;", DoBack, 5, 2.0); DoLog("UnlockPrinter? try %d returned %d\n", i, ret); if(ret >= 0 || strcmp(BackBuf , "3405, Error, Printer not locked") == 0) break; //error string has no terminating ; because it has been tokenised by GoodExchange } } void SetupJob(cups_page_header2_t *header) //Prepare the printer for printing. { DoLog("Called SetupJob(*header);\n",0,0); DoOutJob(JobFile, "OutputBin=MainSink;",0,0); Duplex = header->Duplex; if(Duplex == 0) DoOutJob(JobFile, "Sides=OneSided;",0,0); else DoOutJob(JobFile, "Sides=TwoSided;",0,0); DoOutJob(JobFile, "MediaType=custom-media-type-autoselection-0-0-0-0;",0,0); } unsigned char *AllocateCharBuf(size_t Length, char *Name) { unsigned char *Buf; if ((Buf = malloc(Length)) == NULL) { DoLog("ERROR: Unable to allocate %d bytes\n", Length, 0); DoLogString("ERROR: allocating array %s\n", Name); exit(1); } else { DoLogString("INFO: allocated array %s\n", Name); DoLog("AllocateCharBuf:Address %d",(long) Buf,0); kbUsed += Length * 1E-3; return (Buf); } } short *AllocateShortBuf(size_t Length, char *Name) { short *Buf; if ((Buf = malloc(Length * sizeof(short))) == NULL) { DoLog("ERROR: Unable to allocate %d bytes\n", Length * sizeof(short), 0); DoLogString("ERROR: allocating array %s\n", Name); exit(1); } else { DoLogString("INFO: allocated array %s\n", Name); DoLog("Address %d",(long) Buf,0); kbUsed += Length * 1E-3; return (Buf); } } void AllocateBuffers(cups_page_header2_t *header) { int i, RasForCompSize; // Allocate memory for a stripe of graphics... RasForCompSize = RasForCompWidth * StripeHeightMax; RasSpace = AllocateCharBuf(RasForCompSize+RasForCompWidth*2*sizeof(unsigned char), "RasSpace"); RasForComp = RasSpace + (RasForCompWidth*2); //points to the 3rd line, so 2 lines below RasForComp[0] can be used // Clear the page, so the watermark (or grey ink) is blank //probably not required now for(i=0;icupsBytesPerLine, "CupsLineBuffer"); DitherInputBuffer = AllocateShortBuf(header->cupsWidth, "DitherInputBuffer"); TransformedBuffer = AllocateShortBuf(4 * header->cupsWidth, "TransformedBuffer"); DitherOutputBuffer = AllocateCharBuf(header->cupsWidth, "DitherOutputBuffer"); CompStripeBuffer = AllocateCharBuf(RasForCompWidth * StripeHeightMax, "CompStripeBuffer"); DoLog("Buffers allocated %d kb\n",kbUsed,0); } void StartPrinterPage(cups_page_header2_t *header) { int ResX, ResY; //fprintf(stderr, "DEBUG: c2esp: StartPage\n"); DisplayHeader(header); ResX = header->HWResolution[0]; ResY = header->HWResolution[1]; DoOutJob(JobFile, KodakPaperSize,0,0); DoOutJob(JobFile, "Event=StartOfPage;",0,0); DoOutJob(JobFile, "Origin.Top=1.0mm;Origin.Left=1.0mm;",0,0); if(ResX==300) { DoOutJob(JobFile, "PrintQuality=0;",0,0); if (OutBitsPerPixel==2) DoOutJob(JobFile, "PrintSpeed=3;",0,0); else DoOutJob(JobFile, "PrintSpeed=1;",0,0); } else if(ResX==600) { DoOutJob(JobFile, "PrintQuality=4096;",0,0); if (OutBitsPerPixel==2) DoOutJob(JobFile, "PrintSpeed=3;",0,0); //check print speeds else DoOutJob(JobFile, "PrintSpeed=1;",0,0); } else if(ResX==1200) { DoOutJob(JobFile, "PrintQuality=8192;",0,0); if (OutBitsPerPixel==2) DoOutJob(JobFile, "PrintSpeed=3;",0,0); //check print speeds else DoOutJob(JobFile, "PrintSpeed=4;",0,0); } DoOutJob(JobFile, "Resolution=%dx%d;", ResX, ResY); DoOutJob(JobFile, "RasterObject.BitsPerPixel=%d;",OutBitsPerPixel,0); if (header->cupsColorSpace == CUPS_CSPACE_RGB) { DoOutJob(JobFile, "RasterObject.Planes=00FFFF,1P0000&FF00FF,1P0000&FFFF00,2P0000&000000,2T0000&000000,1P0000;",0,0); //for colour DoLog("CUPS_CSPACE_RGB (%d)\n",header->cupsColorSpace,0); } else if (header->cupsColorSpace == CUPS_CSPACE_K) { DoOutJob(JobFile, "RasterObject.Planes=000000,2T0000&000000,1P0000;",0,0); //for mono DoLog("CUPS_CSPACE_K (%d)\n",header->cupsColorSpace,0); } else { //add error message here DoOutJob(JobFile, "RasterObject.Planes=000000,2T0000&000000,1P0000;",0,0); //for mono DoLog("CUPS_CSPACE_?? (%d)\n",header->cupsColorSpace,0); } DoOutJob(JobFile, "RasterObject.Compression=JBIG;",0,0); DoOutJob(JobFile, "RasterObject.Width=%d;", header->cupsWidth,0); DoOutJob(JobFile, "RasterObject.Height=%d;", header->cupsHeight,0); } void EndPage(void) //Finish a page of graphics. { DoOutJob(JobFile, "Event=EndOfPage;", 0,0); /* Free memory... allocated by AllocateBuffers() */ // RasForComp not freed because it is inside RasSpace free(RasSpace); free(CupsLineBuffer); free(DitherInputBuffer); free(DitherOutputBuffer); free(CompStripeBuffer); kbUsed = 0; DoLog("Buffers freed\n",0,0); } void CancelJob(int sig) /* - Cancel the current job... I - Signal */ { (void)sig; DoLog("CancelJob: job cancelled by signal\n",0,0); Canceled = 1; } /* //look up table to map bit pair 11 to 10, 10 to 01, 01 to 01, 00 to 00 //translates 2 bit per pixel colours to printer data unsigned char Map11To10And10To01[256] = { 0, 1, 1, 2, 4, 5, 5, 6, 4, 5, 5, 6, 8, 9, 9, 10, 16, 17, 17, 18, 20, 21, 21, 22, 20, 21, 21, 22, 24, 25, 25, 26, 16, 17, 17, 18, 20, 21, 21, 22, 20, 21, 21, 22, 24, 25, 25, 26, 32, 33, 33, 34, 36, 37, 37, 38, 36, 37, 37, 38, 40, 41, 41, 42, 64, 65, 65, 66, 68, 69, 69, 70, 68, 69, 69, 70, 72, 73, 73, 74, 80, 81, 81, 82, 84, 85, 85, 86, 84, 85, 85, 86, 88, 89, 89, 90, 80, 81, 81, 82, 84, 85, 85, 86, 84, 85, 85, 86, 88, 89, 89, 90, 96, 97, 97, 98, 100, 101, 101, 102, 100, 101, 101, 102, 104, 105, 105, 106, 64, 65, 65, 66, 68, 69, 69, 70, 68, 69, 69, 70, 72, 73, 73, 74, 80, 81, 81, 82, 84, 85, 85, 86, 84, 85, 85, 86, 88, 89, 89, 90, 80, 81, 81, 82, 84, 85, 85, 86, 84, 85, 85, 86, 88, 89, 89, 90, 96, 97, 97, 98, 100, 101, 101, 102, 100, 101, 101, 102, 104, 105, 105, 106, 128, 129, 129, 130, 132, 133, 133, 134, 132, 133, 133, 134, 136, 137, 137, 138, 144, 145, 145, 146, 148, 149, 149, 150, 148, 149, 149, 150, 152, 153, 153, 154, 144, 145, 145, 146, 148, 149, 149, 150, 148, 149, 149, 150, 152, 153, 153, 154, 160, 161, 161, 162, 164, 165, 165, 166, 164, 165, 165, 166, 168, 169, 169, 170, }; void MapDotsInByte(unsigned char *Byte) { *Byte = Map11To10And10To01[*Byte]; } */ void output_jbig(unsigned char *start, size_t len, void *cbarg) /* start is a pointer to some JBIG data len is the number of bytes of JBIG data cbarg is a pointer to an optional output file (output is also sent to stdout) uses a fixed global buffer to store one stripe and sends stripe when it becomes complete Includes mod by Andreas (awl29) to limit the size of JBIG data chunks which is required for some older models */ { int i; int rc; int BytesToPrint; int CurrentChunkSize; unsigned char *CurrentChunkStart; //copy bytes one at a time looking for end of BIE and counting for(i=0;i= 2 && BytesOutCountSingle > 20) //only if the header is complete { if(CompStripeBuffer[CompStripeBufferFree-2] == ESC && CompStripeBuffer[CompStripeBufferFree-1] != 0) { //end of BIE detected DoLog("SingleStripe: detected end of BIE at %d bytes, length %d\n",BytesOutCountSingle,CompStripeBufferFree); //send the buffer to the printer, in chunks less than MAXJBIGDATACHUNK BytesToPrint = CompStripeBufferFree; CurrentChunkSize = 0; CurrentChunkStart = CompStripeBuffer; while (BytesToPrint > 0) { if (BytesToPrint <= MAXJBIGDATACHUNK) { CurrentChunkSize = BytesToPrint; } else { CurrentChunkSize = MAXJBIGDATACHUNK; } //send one chunk of data DoOutJob(cbarg, "RasterObject.Data#%d=", CurrentChunkSize,0); if(cbarg != NULL) rc = fwrite(CurrentChunkStart, 1, CurrentChunkSize, cbarg); DoLog("JBIG data chunk is sent to printer\n",0,0); rc = fwrite(CurrentChunkStart, 1, CurrentChunkSize, stdout); //also to output DoOutJob(cbarg, ";",0,0); //one semi colon after the chunk BytesToPrint -= CurrentChunkSize; CurrentChunkStart += CurrentChunkSize; } //then restart the buffer CompStripeBufferFree = 0; } } } } void OutputLineExtents(unsigned char *buf, int Totalbpl, cups_page_header2_t header, FILE *fp) { int BandLeft, BandRight, BytesLeft, BytesRight, ThisBytePrint, BytesPerCol, Col, Cols, Printbpl; //BitsPerPixel is in the buffer of printer data, not in the cups raster Use global OutBitsPerPixel Printbpl = (header.cupsWidth + 7) / 8; if (header.cupsColorSpace == CUPS_CSPACE_CMYK) Cols=4; else if (header.cupsColorSpace == CUPS_CSPACE_RGB) Cols=4; else Cols=1; BytesPerCol=Totalbpl/(Cols+1); //Search for extents in this row of pixels for(BytesLeft=0;BytesLeft= Printbpl) BandLeft=0; else BandLeft=BytesLeft*8/OutBitsPerPixel; //BytesLeft is the offset to the first byte with pixels //BandLeft is the pixel offset to the first byte that is not blank for(BytesRight=Printbpl*OutBitsPerPixel-1;BytesRight >= 0;--BytesRight) { ThisBytePrint=0; for(Col=0;Col\n",Stripe, 0); } else { //there is print in this band DoOutJob(fp,"RasterObject.BandHeight=%d;",StripeHeight,0); DoOutJob(fp,"RasterObject.Extent=true",0,0); DoLog("sending the extent data\n",0,0); for(y=0;y= 8 chars longer than x unsigned char Build=0; if (Buffer[x+0]==Level) Build+=0b10000000; if (Buffer[x+1]==Level) Build+=0b01000000; if (Buffer[x+2]==Level) Build+=0b00100000; if (Buffer[x+3]==Level) Build+=0b00010000; if (Buffer[x+4]==Level) Build+=0b00001000; if (Buffer[x+5]==Level) Build+=0b00000100; if (Buffer[x+6]==Level) Build+=0b00000010; if (Buffer[x+7]==Level) Build+=0b00000001; return Build; } unsigned char Dithered4ToPrint(unsigned char *Buffer, int x) { //gets 4 points from Buffer started with x and maps them into one byte for one ink or light ink //Buffer must be >= 4 chars longer than x // (0->00, 1->01, 2->10,3->00, 4->00) unsigned char Build=0; if (Buffer[x+0]==1) Build+=0b01000000; if (Buffer[x+0]==2) Build+=0b10000000; if (Buffer[x+1]==1) Build+=0b00010000; if (Buffer[x+1]==2) Build+=0b00100000; if (Buffer[x+2]==1) Build+=0b00000100; if (Buffer[x+2]==2) Build+=0b00001000; if (Buffer[x+3]==1) Build+=0b00000001; if (Buffer[x+3]==2) Build+=0b00000010; return Build; } unsigned char Dithered4ToPrintDark(unsigned char *Buffer, int x) { //gets 4 points from Buffer started with x and maps them into one byte for dark ink //Buffer must be >= 4 chars longer than x // (0->00, 1->00, 2->00, 3->01, 4->10) unsigned char Build=0; if (Buffer[x+0]==3) Build+=0b01000000; if (Buffer[x+0]==4) Build+=0b10000000; if (Buffer[x+1]==3) Build+=0b00010000; if (Buffer[x+1]==4) Build+=0b00100000; if (Buffer[x+2]==3) Build+=0b00000100; if (Buffer[x+2]==4) Build+=0b00001000; if (Buffer[x+3]==3) Build+=0b00000001; if (Buffer[x+3]==4) Build+=0b00000010; return Build; } void DummyTransform(unsigned char *InBuffer, short *OutBuffer, int Pixels) { //substitute for the cups transform for testing int x; for(x=0;xcupsColorSpace == CUPS_CSPACE_RGB) { if(y==0) DoLog("Inserting RGB gradient at top of page\n",0,0); for(x=0;xcupsWidth*3;x+=3) { Buffer[x]=255*x/(header->cupsWidth*3); Buffer[x+1]=Buffer[x]; Buffer[x+2]=Buffer[x]; } } else if (header->cupsColorSpace == CUPS_CSPACE_K) { if(y==0) DoLog("Inserting K gradient at top of page\n",0,0); for(x=0;xcupsWidth;++x) Buffer[x]=255*x/(header->cupsWidth); } } FILE *OpenPbm(char *Name, int Width, int Height, int FullScale) { // Opens a pbm graphic file for writing. "P5" or "P4" // If FullScale = 0, a P4 file (line art, 1 bit per pixel) // If FullScale > 0, a P5 file (gray scale, 1 byte per pixel) FILE *Handle; remove(Name); Handle = fopen(Name, "w"); if (Handle) { if(FullScale == 0) fprintf(Handle, "P4\n%8d %8d\n", Width, Height); else if (FullScale > 0) fprintf(Handle, "P5\n%8d %8d %8d\n", Width, Height, FullScale); DoLogString("Opened %s\n", Name); } else DoLogString("Could not open %s\n", Name); return Handle; } void LetAllRead(char *Fname) { chmod(Fname, S_IRUSR | S_IWUSR | S_IROTH ); //let anyone read it } void Terminate(cups_raster_t *ras,int fd,cups_dither_t **DitherState,cups_lut_t **Lut) { int CloseError, Col; /* * Close the raster stream... and the debug file */ cupsRasterClose(ras); DoLog("cups raster closed after %d sec\n",time(NULL)-StartTime,0); if (fd != 0) close(fd); if(JobFile != NULL) { CloseError = fclose(JobFile); DoLog("jobfile closed after %d sec with return value %d\n",time(NULL)-StartTime, CloseError); } //free the dither states for(Col = 0; Col < 4 ;++Col) { cupsDitherDelete(DitherState[Col]); cupsLutDelete(Lut[Col]); } /* * Termination, send an error message if required... */ DoLog("Bytes output by JBIG just before terminating = %d\n",BytesOutCountSingle,0); DoLog("c2esp terminating after %d sec. Processed %d pages\n",time(NULL)-StartTime,Page); if (Page == 0) { fprintf(stderr, ("ERROR: c2esp: No pages found!\n")); //return (1); } else { CloseLogging(); //cups seems to replace this by "Ready to print" so you don't see it if (DoBack) fprintf(stderr, "INFO: c2esp: Ready to print Blk %d Col %d percent\n",BlackPercent, ColourPercent); else fprintf(stderr, "INFO: c2esp: Ready to print (no bi-di communication)\n"); #if DEBUGFILES == 1 if(PrintFile != NULL) fclose(PrintFile); LetAllRead(PrintFileName); LetAllRead(LogFileName); LetAllRead(JobFileName); #endif } } void SaveDitherOut(cups_page_header2_t *header, int Col, int BlankColour,FILE *DitheredColourFile,FILE *CupsRasterFile) { //save one line in files, //DitherOutputBuffer[x] into DitheredColourFile //CupsLineBuffer[x] into CupsRasterFile //in the files 255=white 0=black (reverse of printer) int output=0; int x; if(Col == MonitorColour) //0=cyan 1=mag 2=yellow 3=black { //DoLog("SaveDitherOut BlankColour %d Resolution %d\n",BlankColour,header->HWResolution[0]); for(x=0;xcupsWidth;++x) { if(BlankColour==0 && header->HWResolution[0] == 300) { //dithered (7 bit shift to approximate 255/2) if(Col<3)output = 255 - (DitherOutputBuffer[x] * 255); //Black and grey if(Col==3) output = 255 - (DitherOutputBuffer[x] * 255/2); if (output < 0) output = 0; } else if(BlankColour==0 && header->HWResolution[0] == 600) { if(Col<3)output = 255 - (DitherOutputBuffer[x] * 255/2); //Black and grey if(Col==3) output = 255 - (DitherOutputBuffer[x] * 255/4); if (output < 0) output = 0; } else { output=255; //MinOut=0; } if (DitheredColourFile) fputc(output, DitheredColourFile); if(BlankColour==0 && header->cupsColorSpace == CUPS_CSPACE_RGB) { //cups raster chunky version if (Col < 3 ) output = (CupsLineBuffer[x*3+Col]); //next line should really be the min of the 3 colours? if (Col == 3 ) { output = (CupsLineBuffer[x*3+0]+CupsLineBuffer[x*3+1]+CupsLineBuffer[x*3+2])/3; } if (output < 0) output = 0; } else if(BlankColour==0 && header->cupsColorSpace == CUPS_CSPACE_K) { output = (255-CupsLineBuffer[x]); } else output=255; if (CupsRasterFile) fputc(output, CupsRasterFile); } } } void DitherProcess(cups_lut_t **Lut, cups_dither_t **DitherState, cups_page_header2_t *header, int Col, int *BlankColour) { //convert the bits in CupsLineBuffer to short ints in DitherInputBuffer for the current colour //checking if it's blank as we go #if DEBUGFILES==1 int output; #endif int x; *BlankColour=1; //if it remains 1 the line is blank and we don't need to dither. if(header->cupsColorSpace == CUPS_CSPACE_RGB) { for(x=0;xcupsWidth;++x) { //CupsLineBuffer RGB chunky section - TransformedBuffer is CMYK chunky if(CupsLineBuffer[3*x+Col] > CupsLineBufMax) CupsLineBufMax = CupsLineBuffer[3*x+Col]; if(TransformedBuffer[4*x+Col] > TransformedBufMax) TransformedBufMax = TransformedBuffer[4*x+Col]; if(DoTrans == 1) DitherInputBuffer[x]=TransformedBuffer[4*x+Col]; else DitherInputBuffer[x]=CupsLineBuffer[3*x+Col]<<4; //scale to 4096 if(DitherInputBuffer[x]>0) *BlankColour=0; } } else if(header->cupsColorSpace == CUPS_CSPACE_K) { for(x=0;xcupsWidth;++x) { //CupsLineBuffer K section if(CupsLineBuffer[x] > CupsLineBufMax) CupsLineBufMax = CupsLineBuffer[x]; DitherInputBuffer[x]=CupsLineBuffer[x]<<4; //scale to 4096 if(DitherInputBuffer[x]>0) *BlankColour=0; } } else DoLog("Unsupported cspace %d\n",header->cupsColorSpace,0); #if DEBUGFILES==1 //save in file, in the file 255=white 0=black(reverse of printer) if(Col == MonitorColour) //0=cyan 1=mag 2=yellow 3=black { for(x=0;xcupsWidth;++x) { output = 255 - (DitherInputBuffer[x]>>4); if (output < 0) output = 0; if (RawColourFile) fputc(output, RawColourFile); if (DitherInputBuffer[x]>MaxIn) MaxIn=DitherInputBuffer[x]; if (DitherInputBuffer[x]cupsWidth;++x) //added loop structure 17/12/13 { if (DitherOutputBuffer[x]>MaxOut) MaxOut=DitherOutputBuffer[x]; if (DitherOutputBuffer[x]cupsColorSpace == CUPS_CSPACE_RGB) BlackIndex=3; else BlackIndex=0; if(BlankColour == 0 && OutBitsPerPixel == 2) { if(y==0) DoLog("Copying to raster col %d bpp %d\n", Col, OutBitsPerPixel); // for(x=0;xcupsWidth;x=x+4) // { x=50; if( Col == 3) { RasForComp[y * RasForCompWidth + BlackIndex * (BytesPerColour)+x/4]=255; RasForComp[y * RasForCompWidth + (BlackIndex+1) * (BytesPerColour)+x/4]=255; // RasForComp[y * RasForCompWidth + BlackIndex * (BytesPerColour)+x/4]=Dithered4ToPrintDark(DitherOutputBuffer,x); // RasForComp[y * RasForCompWidth + (BlackIndex+1) * (BytesPerColour)+x/4]=Dithered4ToPrint(DitherOutputBuffer,x); } else RasForComp[y * RasForCompWidth + Col * (BytesPerColour)+x/4]=Dithered4ToPrint(DitherOutputBuffer,x); //hope that ras is zero initially // } } if(BlankColour == 0 && OutBitsPerPixel == 1) { if(y==0) DoLog("Copying to raster col %d bpp %d\n", Col, OutBitsPerPixel); //1 bit out per colour // for(x=0;xcupsWidth;x=x+8) // { x=50; if( Col == 3) { RasForComp[y * RasForCompWidth + BlackIndex * (BytesPerColour)+x/8]=255; RasForComp[y * RasForCompWidth + (BlackIndex+1) * (BytesPerColour)+x/8]=255; // RasForComp[y * RasForCompWidth + BlackIndex * (BytesPerColour)+x/8]=Dithered8ToPrint(DitherOutputBuffer,x,2); // RasForComp[y * RasForCompWidth + (BlackIndex+1) * (BytesPerColour)+x/8]=Dithered8ToPrint(DitherOutputBuffer,x,1); } else RasForComp[y * RasForCompWidth + Col * (BytesPerColour)+x/8]=Dithered8ToPrint(DitherOutputBuffer,x,1); // } } } void PutBitsIntoRaster(cups_page_header2_t *header, int Col, int BlankColour, int y) { //put the bits into the appropriate position in the printer raster int BlackIndex, x; //BlackIndex is the band in the printer raster if(header->cupsColorSpace == CUPS_CSPACE_RGB) BlackIndex=3; else BlackIndex=0; if(BlankColour == 0 && OutBitsPerPixel == 2) { if(y==0) DoLog("Copying to raster col %d bpp %d\n", Col, OutBitsPerPixel); for(x=0;xcupsWidth;x=x+4) { if( Col == 3) { RasForComp[y * RasForCompWidth + BlackIndex * (BytesPerColour)+x/4]=Dithered4ToPrintDark(DitherOutputBuffer,x); RasForComp[y * RasForCompWidth + (BlackIndex+1) * (BytesPerColour)+x/4]=Dithered4ToPrint(DitherOutputBuffer,x); } else RasForComp[y * RasForCompWidth + Col * (BytesPerColour)+x/4]=Dithered4ToPrint(DitherOutputBuffer,x); //hope that ras is zero initially } } if(BlankColour == 0 && OutBitsPerPixel == 1) { if(y==0) DoLog("Copying to raster col %d bpp %d\n", Col, OutBitsPerPixel); //1 bit out per colour for(x=0;xcupsWidth;x=x+8) { if( Col == 3) { RasForComp[y * RasForCompWidth + BlackIndex * (BytesPerColour)+x/8]=Dithered8ToPrint(DitherOutputBuffer,x,2); RasForComp[y * RasForCompWidth + (BlackIndex+1) * (BytesPerColour)+x/8]=Dithered8ToPrint(DitherOutputBuffer,x,1); } else RasForComp[y * RasForCompWidth + Col * (BytesPerColour)+x/8]=Dithered8ToPrint(DitherOutputBuffer,x,1); } } } /* * 'main()' - Main entry and processing of driver. */ int /* O - Exit status */ main(int argc, char *argv[]) /* I - Number of command-line arguments, Command-line arguments */ { int fd; /* File descriptor */ ppd_file_t *ppd; /* PPD file */ cups_raster_t *ras; /* Raster stream from cups */ cups_page_header2_t header; /* Page header from cups */ cups_cmyk_t *cmykTrans300; /* cmyk transform for cups 300dpi*/ cups_cmyk_t *cmykTrans600; /* cmyk transform for cups 600dpi*/ int RemainingPixels; int Stripe, y; int StripeEnd; //index of last byte in current stripe int StripeHeight; //height of current stripe int Col,i,x; int BlankColour; //boolean to record if the line is blank to save time int argi; cups_lut_t *Lut[4]; /* Dither lookup tables */ cups_dither_t *DitherState[4]; /* Dither states */ long RasForCompHeight; StartTime = time(NULL); KeepAwakeStart = time(NULL); #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET) struct sigaction action; /* Actions for POSIX signals */ #endif /* * Check command-line... */ if (argc < 6 || argc > 7) //wrong no of arguments { fprintf(stderr, ("Usage: %s job-id user title copies options [file]\n"), "rastertoek"); return (1); } char data; int datalen; cups_sc_bidi_t bidi; cups_sc_status_t status; /* Tell cupsSideChannelDoRequest() how big our buffer is... */ datalen = 1; /* Get the bidirectional capabilities, waiting for up to 1 second */ status = cupsSideChannelDoRequest(CUPS_SC_CMD_GET_BIDI, &data, &datalen, 1.0); /* Use the returned value if OK was returned and the length is still 1 */ if (status == CUPS_SC_STATUS_OK && datalen == 1) { bidi = (cups_sc_bidi_t) data; DoBack = (bidi == CUPS_SC_BIDI_NOT_SUPPORTED ? 0 : 1); } else { bidi = CUPS_SC_BIDI_NOT_SUPPORTED; DoBack = 0; } #if TESTING == 1 DoBack = 0; //If testing never ask for replies #endif #if DEBUGFILES == 1 SetupLogging("c2esp",DoBack,LogFileName); #else SetupLogging("c2esp",DoBack,""); #endif setbuf(stderr, NULL); fprintf(stderr, ("DEBUG: ================ %s ====================================\n"),Version); DoLogString("Starting %s\n",Version); DoLog("Compiled with DEBUGFILES = %d, TESTING = %d\n", DEBUGFILES, TESTING); DoLog("Number of command line parameters: %d\n", argc, 0); for (argi = 0; argi < argc; argi++) DoLogString(" param: '%s'\n", argv[argi]); DoLogString("End of command-line parameters\n", ""); DoLogString("Bi-di/backchannel support: %s\n", (bidi == CUPS_SC_BIDI_NOT_SUPPORTED ? "false" : "true")); DoLog("DoBack value: %d\n", DoBack, 0); MarkerSetup(); /* * Open the page stream... */ if (argc == 7) { if ((fd = open(argv[6], O_RDONLY)) == -1) { fprintf(stderr, ("ERROR: c2esp: Unable to open raster file - %s\n"), strerror(errno)); sleep(1); return (1); } } else fd = 0; DoLog("opening raster\n",0,0); ras = cupsRasterOpen(fd, CUPS_RASTER_READ); if(! ras) DoLog("Problem opening cups raster",0,0); /* * Set up the colour separation system * */ DoLogString("opening ppd %s\n",getenv("PPD")); ppd = ppdOpenFile(getenv("PPD")); if(ppd) { DoLog("Opened ppd OK. Reading from ppd\n",0,0); cmykTrans300 = cupsCMYKLoad(ppd, "RGB", "", "300x1200dpi"); cmykTrans600 = cupsCMYKLoad(ppd, "RGB", "", "600x1200dpi"); ppdClose(ppd); DoLog("InkChannels 300dpi=%d 600dpi=%d\n",cmykTrans300->num_channels,cmykTrans600->num_channels); } else DoLogString("Problem opening ppd %s\n",getenv("PPD")); /* * Register a signal handler to eject the current page if the * job is cancelled. */ Canceled = 0; #ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */ sigset(SIGTERM, CancelJob); #elif defined(HAVE_SIGACTION) memset(&action, 0, sizeof(action)); sigemptyset(&action.sa_mask); action.sa_handler = CancelJob; sigaction(SIGTERM, &action, NULL); #else signal(SIGTERM, CancelJob); #endif /* HAVE_SIGSET */ /* * Initialize the print device... */ #if DEBUGFILES == 1 JobFile = fopen(JobFileName, "w"); if (JobFile != NULL) DoLogString("JobFile %s Opened\n", JobFileName); else DoLogString("JobFile %s failed to open\n", JobFileName); PrintFile = fopen(PrintFileName, "w"); if (PrintFile != NULL) DoLogString("PrintFile %s Opened\n", PrintFileName); else DoLogString("PrintFile %s failed to open\n", PrintFileName); #endif /* read the first header */ if(cupsRasterReadHeader2(ras, &header) == 1) { DoLog("First page Header read after %d sec\n", time(NULL)-StartTime,0); /* Check header for validity */ if(HeaderInvalid(&header) == 1) { Canceled = 1; } else { if(header.HWResolution[0] == 300) OutBitsPerPixel = 1; else OutBitsPerPixel = 2; SetUpDither(Lut, DitherState, header.cupsWidth, OutBitsPerPixel); SetupPrinter(&header); DoLog("Printer should be ready now\n",0,0); } /* * Process pages as needed... */ Page = 0; //start of loop for each page do { DoLog("Header read\n", 0,0); if (Canceled) break; if(header.cupsWidth == -1) break; Page ++; DoLog("PAGE %d width %d\n", Page, header.cupsWidth); /* * Start the page... */ BytesOutCountSingle = 0; //initialise counter RasForCompHeight = 0; /* will accumulate the height for one page */ //StartTime=time(NULL); SetPaperSize(KodakPaperSize, header.PageSize[1]); if(header.HWResolution[0] == 300) OutBitsPerPixel = 1; else OutBitsPerPixel = 2; BytesPerColour = (((header.cupsWidth * OutBitsPerPixel + 7) / 8) + 31) / 32 * 32; //round each colour up to 32 bytes if (header.cupsColorSpace == CUPS_CSPACE_RGB) //colour only RGB now { DoLog("Colour cups raster w = %d h = %d\n", header.cupsWidth, header.cupsHeight); DoLog("Colour cups bits per pixel = %d, bits per colour = %d\n", header.cupsBitsPerPixel, header.cupsBitsPerColor); DoLog("Colour cups raster bytes per line = %d bits per line = %d\n", header.cupsBytesPerLine, header.cupsBytesPerLine * 8); RasForCompWidth = BytesPerColour * 5; fprintf(stderr, "INFO: p%d Colour dithering\n",Page); } else if (header.cupsColorSpace == CUPS_CSPACE_K)//monochrome { fprintf(stderr, "INFO: p%d Monochrome\n",Page); DoLog("Mono cups raster w = %d h = %d\n", header.cupsWidth, header.cupsHeight); DoLog("Mono cups raster bytes per line = %d bits per line = %d\n", header.cupsBytesPerLine, header.cupsBytesPerLine * 8); RasForCompWidth = BytesPerColour * 2; } else { DoLog("Unknown cupsColorSpace = %d\n", header.cupsColorSpace, 0); DoLog("Supported values are RGB %d and K %d\n", CUPS_CSPACE_RGB, CUPS_CSPACE_K); } #if DEBUGFILES == 1 //open dither files here RawColourFile = OpenPbm(RawColourFileName, header.cupsWidth, header.cupsHeight, 255); DitheredColourFile = OpenPbm(DitheredColourFileName, header.cupsWidth, header.cupsHeight, 255); //open debug files dfp = OpenPbm(RasForCompFileName, RasForCompWidth * 8, StripeHeightMax, 0); Blackfp = OpenPbm(BlackRasFileName, BytesPerColour * 8, StripeHeightMax, 0); Greyfp = OpenPbm(GreyRasFileName, BytesPerColour * 8, StripeHeightMax, 0); CupsRasterFile = OpenPbm(CupsRasterFileName, header.cupsWidth, header.cupsHeight, 255); if(header.cupsColorSpace==CUPS_CSPACE_K) { DoLog("Deleting any existing CMY raster files",0,0); remove(CyanRasFileName); remove(MagentaRasFileName); remove(YellowRasFileName); } else { Cyanfp = OpenPbm(CyanRasFileName, BytesPerColour * 8, StripeHeightMax, 0); Magentafp = OpenPbm(MagentaRasFileName, BytesPerColour * 8, StripeHeightMax, 0); Yellowfp = OpenPbm(YellowRasFileName, BytesPerColour * 8, StripeHeightMax, 0); } #endif if(header.cupsWidth == -1) { DoLog("Width %d is <= 0? so not allocating buffers\n",header.cupsWidth,0); Terminate(ras,fd,DitherState,Lut); exit(0); } else { DoLog("Width %d is >0? so allocating buffers\n",header.cupsWidth,0); AllocateBuffers(&header); // test buffers //if(!CupsLineBuffer) DoLog("missing CupsLineBuffer\n",0,0); //else DoLog("Main:Address %d",(long) CupsLineBuffer,0); } StripeEnd = -1; //index of the last byte of the stripe MinOut=255;MaxOut=0; //initialise if(Page == 1) SetupJob(&header); StartPrinterPage( &header); //prepare for compression JBIG85 DoLog("initialising Compression\n",0,0); jbg85_enc_init(&JbigState, RasForCompWidth * 8, header.cupsHeight, output_jbig, JobFile); jbg85_enc_options(&JbigState, -1, StripeHeightMax, -1); //default options ie with variable length // Loop for each source stripe for (Stripe = 0; Stripe * StripeHeightMax < header.cupsHeight; ++Stripe) { //clear the raster for(x=0;x Stripe * StripeHeightMax + StripeHeightMax) StripeHeight = StripeHeightMax; else StripeHeight = header.cupsHeight - (Stripe * StripeHeightMax); if(Stripe == 1) DoLog("First stripe at %d sec\n", time(NULL)-StartTime, 0); // Loop for each line in the stripe for (y = 0; (y < StripeHeightMax) && (y + Stripe * StripeHeightMax < header.cupsHeight); ++y ) { if (Canceled) break; KeepAwakeStart = KeepAwake(KeepAwakeStart, 10, PrintFile); //Keep the printer connection awake if (header.cupsBitsPerColor == 8) // do dithering { if(y == 0) { DoLog("Doing 1st line in stripe %d. BytesPerLine %d\n", Stripe, header.cupsBytesPerLine); if(!ras) DoLog("cups raster missing",0,0); if(!CupsLineBuffer) DoLog("cups line buffer missing",0,0); } //read a line. The longest line 600dpi 8.5 in = 20400 bytes for 8 bit CMYK values //DoLog("Reading stripe %d line %d\n", Stripe, y); if (!cupsRasterReadPixels(ras, CupsLineBuffer, header.cupsBytesPerLine)) break; //CupsLineBuffer holds the chunky 8 bit data of a whole line if(y == 0) DoLog("Read first line from cups raster\n", Stripe, 0); #if TESTING == 1 //fix the CupsLineBuffer for testing with a gradient in the top 32 lines if(y + Stripe * StripeHeightMax < 32) InsertGradientChunky(CupsLineBuffer, &header, y); #endif // the colour separation. Note the cups transforms assume chunky data if (DoTrans == 1) { RemainingPixels = header.cupsWidth; if (header.cupsColorSpace == CUPS_CSPACE_RGB) { if(y == 0) DoLog("Doing transform & dither (CMYK) stripe %d line %d\n", Stripe, y); if(header.HWResolution[0] == 300) cupsCMYKDoRGB(cmykTrans300, CupsLineBuffer, TransformedBuffer, RemainingPixels); else cupsCMYKDoRGB(cmykTrans600, CupsLineBuffer, TransformedBuffer, RemainingPixels); // cupsDoRGB scales up to 4096 a short int from the unsigned char input 255 for(Col = 0; Col<4; ++Col) { DitherProcess(Lut, DitherState, &header, Col, &BlankColour); PutBitsIntoRaster(&header, Col, BlankColour, y); } } if (header.cupsColorSpace == CUPS_CSPACE_K) { if(y == 0) DoLog("Doing dither (K) stripe %d line %d\n", Stripe, y); Col=3; //just black&grey DitherProcess(Lut, DitherState, &header, Col, &BlankColour); PutBitsIntoRaster(&header, Col, BlankColour, y); } //DummyTransform(CupsLineBuffer, TransformedBuffer, RemainingPixels); if(y == 0) DoLog("Done dither stripe %d line %d\n", Stripe, y); } /* if(header.cupsColorSpace == CUPS_CSPACE_RGB) { for(Col = 0; Col<4; ++Col) FakePutBitsIntoRaster(&header, Col, BlankColour, y); } // IS THIS RIGHT? PutBitsIntoRaster(&header, 3? FOR Kk raster? else PutBitsIntoRaster(&header, 3, BlankColour, y); */ } //end of 8 bits per colour section else DoLog("cupsBitsPerColor %d is not handled\n",header.cupsBitsPerColor,0); } //end of line loop StripeEnd = StripeHeight * RasForCompWidth - 1; //so do not have to increment in the loop //map 2 bit per pixel data of the line to suit the printer and look for printing in the stripe SkipStripe = 1; for(i=0;i<=StripeEnd;++i) { // may not be needed with dither if (header.cupsBitsPerColor==2) RasForComp[i] = Map11To10And10To01[RasForComp[i]]; //map 2 bit if(RasForComp[i]!=0) SkipStripe = 0; //look for printing } #if DEBUGFILES == 1 //write the stripe into the raster files if(SkipStripe != 1) { //store the raster for debugging - does not seem to be viewable properly when 600dpi colour if (dfp) fwrite(&RasForComp[0], 1, StripeEnd, dfp); //store the CMYK rasters separately if(Cyanfp && Magentafp && Yellowfp && Blackfp && Greyfp) { for(i=0;i<(StripeEnd + RasForCompWidth + 1);i=i+RasForCompWidth) { fwrite(&RasForComp[i + 0 * BytesPerColour], 1, BytesPerColour, Cyanfp); fwrite(&RasForComp[i + 1 * BytesPerColour], 1, BytesPerColour, Magentafp); fwrite(&RasForComp[i + 2 * BytesPerColour], 1, BytesPerColour, Yellowfp); fwrite(&RasForComp[i + 3 * BytesPerColour], 1, BytesPerColour, Blackfp); fwrite(&RasForComp[i + 4 * BytesPerColour], 1, BytesPerColour, Greyfp); } } else if(Blackfp && Greyfp) { for(i=0;i<(StripeEnd + RasForCompWidth + 1);i=i+RasForCompWidth) { fwrite(&RasForComp[i + 0 * BytesPerColour], 1, BytesPerColour, Blackfp); fwrite(&RasForComp[i + 1 * BytesPerColour], 1, BytesPerColour, Greyfp); } } DoLog("Rasters stored at %d sec\n",time(NULL)-StartTime,0); } #endif //DoLog("StripeEnd=%d SkipStripe=%d\n",StripeEnd,SkipStripe); if(!SkipStripe) RasForCompHeight = RasForCompHeight + StripeHeight; PrintOneStripe(&RasForComp[0], Stripe, StripeHeight, header, JobFile); //copy the last 2 lines of the stripe, before the first line of RasForComp for(i=0;i 0) ShutdownPrinter(); //there was at least 1 page Terminate(ras,fd,DitherState,Lut); return(0); } c2esp27~rc1/ppd/Kodak_ESP_4.2.ppd000644 000000 000000 00000016665 12254101537 016456 0ustar00rootroot000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for KODAK ESP 4.2 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2013 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP42.ppd" *Product: "(KODAK ESP 4.2 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company KODAK ESP 4.2 AiO" *ShortNickName: "KODAK ESP 4.2 AiO" *NickName: "KODAK ESP 4.2 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMY *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP 4.2 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsVersion: 1.4 *cupsModelNumber: -1 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2espC" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x300dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsColorProfile 600x600dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x600dpi *Resolution 300x300dpi/300x300: "<>setpagedevice" *Resolution 600x600dpi/600x600: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: CMY *ColorModel Gray/Grayscale: "<>setpagedevice" *ColorModel CMY/Color: "<>setpagedevice" *CloseUI: *ColorModel *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP42.ppd, 07605 bytes. c2esp27~rc1/INSTALL000444 000000 000000 00000020502 12254010613 014045 0ustar00rootroot000000 000000 TOPICS ------ * INSTALLATION * UBUNTU NOTES * SIXTY FOUR BIT * DEBIAN NOTES * UNINSTALLING * BUG REPORTS * DEVELOPER AND DEBUGGING TIPS INSTALLATION ------------ (Debian and ubuntu now have packages in repositories you can install) There may be a more recent version available as a .deb file on sourceforge. There may be a more recent source code version available as a .tar.gz file on sourceforge. The general procedure will be like this if you compile from source. (see below for details for different distros): Download: You download the compressed archive file Unpack: You uncompress the archive to get several files required to install the driver. (This is one of those files, so you have probably done that already) (Optional) Install packages needed for this driver to work: You may need to install some packages before you can install the driver. Most distros have some package manager that you use to do this. (Optional) Uninstall: If you have already installed a previous version of this driver, it might be helpful to uninstall it. If not, ignore this step. Compile: You need to convert the program, written in c, into something your computer can run. Compiling will be done by a command like "make" Install driver, PPD files, and extra files: Various files need to be copied to folders where the system can find them. This will be done with a command like "make install" Create printers: This is where you tell cups about the new printer. Then it should be possible to print. Detailed versions follow for different distros: UBUNTU NOTES ------------ (in the following NN in the filename c2espNN means the 2 digits of the release no) (so for release 0.4, you would type c2esp04 ) Download: You download the compressed archive file from http://sourceforge.net/projects/cupsdriverkodak/ It is usually convenient to store the dowloaded file in your home directory. Unpack: You uncompress the archive to get several files required to install the driver. If you double click on the dowloaded .tar.gz file, the archive manager should open. Use the extract button to extract files from the archive. The goal is to get a folder called something like c2esp04 (the last 2 digits depend on the version of the driver)in some place you specify, for example in your home folder. This folder should contain the files in the archive. (Optional) Install packages needed for this driver to work: You may need to install some packages if you do not already have them, before you can install the driver. I'm assuming you know how to do that (with synaptic package manager). You will need the following: build-essential cups libcups2-dev libcupsimage2-dev libcupsdriver1-dev For cups versions 1.6 or later the cups dependencies may be different You need to open a terminal for the following steps: ctrl-alt-t will start terminal When the terminal starts you will be in your home folder. You need to navigate to the folder where you unpacked the driver. (in the following NN in the filename c2espNN means the 2 digits of the release no) (so for release 0.4, you would type c2esp04 ) For example (in this example "$" represents the prompt, you type what follows the $: $ cd c2espNN (Optional) Uninstall: If you have already installed a previous version of this driver, it might be helpful to uninstall it. If not, ignore this step. To uninstall, you type: $ sudo make uninstall The sudo indicates that you want to do some kind of system modification that you would normally be prevented from doing. So you get asked for the password the first time you use sudo. Compile: You need to convert the program, written in c, into something your computer can run. To compile, you type: $ make You may get messages suggesting you need to install some package (see the (Optional) Install packages section above) You may get some warnings, you can probably ignore those. You may get some error messages, if so it's unlikely you can continue. Install driver, PPD files, and extra files: Various files need to be copied to folders where the system can find them. To install, you type: $ sudo make install The sudo indicates that you want to do some kind of system modification that you would normally be prevented from doing. So you get asked for the password the first time you use sudo. Create printers: This is where you tell cups about the new printer. Turn the printer on. (in ubuntu 10.xx) Menu: System/Administration/Printing A printer configuration window should open. Click the "new" button, and wait while the system searches for printers, you should get a "Select device" window. Navigate to the printer (network printer or USB printer). I find I have to wait for several seconds after clicking on a network printer for it to be highlighted. If you are setting up a new version of c2esp, you may have more than one version of the printer to choose from. From c2esp11 and later there is more than one ppd file: model 5200 has no duplex, model 5500 has duplex. From c2esp13 and later there are 4 ppd files 5200 non duplex / 5500 duplex, dithered / non dithered Select the file that best matches your printer model. Dithered is better quality, uses more memory and is slower. From c2esp18 and later there is one ppd per printer model. Dithered/non dithered are choices in the colour options. Click "Forward" and wait again for the "Describe printer" window. Change the names if you wish, and click the "Apply" button. Print test page if you wish, but you might do this first: If you right click the newly created printer in the printer configuration window, you can set up some default properties like: Colour or b/w, resolution, paper size etc. (under printer options) I generally make 2 printers, one colour and one b/w. But that's not essential. Also in the printer configuration window, you can see some messages showing progress of the print job. (in ubuntu 11.0x) I think you need to use the web interface for cups, point web browser to http://localhost:631/admin Then follow a similar sequence to above to create a printer queue. Now there is a script to try and update ppds of existing print queues, if you are updating c2esp $ sudo make forceppd (in ubuntu 11.10 and later) c2esp is included in this disto, so the printer should just work (you may need to create print queue as described for ubuntu 11.0x Then it should be possible for you to print. SIXTY FOUR BIT ------ There are three ways that I know to install in 64 bit. 1. This way is potentially the easiest, I have not tested it: jolting, made a repository from version c2esp08 Install it like this in terminal: sudo add-apt-repository ppa:jolting/cupsdriverkodak sudo apt-get update sudo apt-get install c2esp 2. You download the latest tar file (currently c2esp26) and extract it somewhere convenient for you then make and install it. You can find instructions in the extracted tar file, or in some other topics in help. Also you can find some tips from people who have done this in other topics in help. 3. Debian and Ubuntu now include c2esp as an installable package. DEBIAN NOTES ------------ BEWARE, THESE DEBIAN NOTES ARE JUST A GUESS THEY ARE UNTESTED. Install build-essential, cupsys FIRST: $ su # apt-get install build-essential # apt-get install cupsys $ wget -O c2espNN.tar.gz http://
$ tar zxf c2espNN.tar.gz $ cd c2espNN $ make $ su # make install $ firefox http://localhost:631 UNINSTALLING ------------ This will uninstall everything from your system. $ su # make uninstall BUG REPORTS ----------- DEVELOPER AND DEBUGGING TIPS ---------------------------- c2esp creates some files in /tmp if it was compiled with DEBUGFILES = 1 KodakPrintLog - may help to identify where c2esp goes wrong KodakPrintFile - a copy of what gets sent to the printer RasForComp.pbm - the raster data, before it gets compressed and sent to the printer In /etc/cups/cupsd.conf Change LogLevel warn to LogLevel debug to get much more information in /var/log/cups/error_log All the logging output that would go into the file KodakPrintLog now goes into cups/error_log. This allows users who install a binary package to get logging data without needing to recompile. Since cups/error_log gets quite large, the command c2esplog is provided to extract the lines relevant to c2esp from cups/error_log. c2esp27~rc1/c2esplog000755 001750 001750 00000000250 11744357062 014465 0ustar00paulpaul000000 000000 #!/bin/sh # script for c2esp, extracts c2esp entries from the cups error log # This is just a time saver for developers / debuggers grep c2esp /var/log/cups/error_log c2esp27~rc1/COPYING000644 001750 001750 00000043224 12246674042 014062 0ustar00paulpaul000000 000000 ----------------------------------------------------------------------------- GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation 51 Franklin Street, Fifth Floor Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. c2esp27~rc1/ppd/Kodak_ESP_61xx_Series.ppd000644 001750 001750 00000020074 12254101537 020246 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak ESP Office 6100 Series AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2012 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP61xx.ppd" *Product: "(Kodak ESP Office 6100 Series AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak ESP Office 6100 Series AiO" *ShortNickName: "Kodak ESP Office 6100 Series AiO" *NickName: "Kodak ESP Office 6100 Series AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMYK *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *cupsInkChannels: "4" *cupsInkLimit: "2.0" *cupsBlackGeneration: "0.0 0.0" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP Office 6100 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsBackSide: "Rotated" *cupsVersion: 1.4 *cupsModelNumber: 6150 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2esp" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x1200dpi/-: "1 1 1 0 0 -0.10000000149 1 0 0 -0.300000011921 1" *cupsColorProfile 600x1200dpi/-: "1 1.399999976158 1 -0.10000000149 0 -0.10000000149 1 0 0 -0.40000000596 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x1200dpi *Resolution 300x1200dpi/300x1200: "<>setpagedevice" *Resolution 600x1200dpi/600x1200: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: RGB *ColorModel RGB/Color: "<>setpagedevice" *ColorModel Gray/BlackAndWhite: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *Duplex/2-Sided Printing: PickOne *OrderDependency: 10 AnySetup *Duplex *DefaultDuplex: None *Duplex None/Off (1-Sided): "<>setpagedevice" *Duplex DuplexNoTumble/Long-Edge (Portrait): "<>setpagedevice" *Duplex DuplexTumble/Short-Edge (Landscape): "<>setpagedevice" *CloseUI: *Duplex *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP61xx.ppd, 08252 bytes. c2esp27~rc1/Makefile000664 001750 001750 00000030260 12253712375 014465 0ustar00paulpaul000000 000000 # makefile for c2esp # Makefile for c2esp09 has -lcupsimage instead of /usr/lib/libcupsimage.so.2 (intention: to make sucessfully in non ubuntu distros) # Makefile for c2esp13 has -lcups (intention: to make sucessfully in Fedora) # Makefile for c2esp19 has myopldecode compiled but no longer installed # Makefile for c2esp20 has some redundant stuff deleted, ppd file names are echoed, c2espC added # Makefile for c2esp21 has forceppd added # Makefile for c2esp25 has minor changes. (*.in files are deleted from the doc directory) # Makefile for c2esp25c runs ppdc at install stage if it is installed # Makefile for c2esp26 uses cups-config to fix problems building with cups 1.6 # Makefile for c2esp27 ppds for ESP 1.2 and 3.2 added, use new drv files instead of ppd, LANG=C UNAME := $(shell uname) # Installation prefix... #PREFIX=/usr/local PREFIX=$(DESTDIR)/usr PPDCFOUND=0 # Pathnames for this package... BIN=$(PREFIX)/bin #the PREFIX is supplied by cups-config --serverbin FILTERBIN := $(DESTDIR)$(shell cups-config --serverbin)/filter MANDIR=$(PREFIX)/share/man DOCDIR=$(PREFIX)/share/doc/c2esp PPDDIR=$(PREFIX)/share/ppd/c2esp DRVDIR=$(DESTDIR)$(shell cups-config --datadir)/drv/c2esp INSTALL=install # Programs and libraries PROGS= # put PROGS= myopldecode if you want to install this debug tool #PROGS= myopldecode # DEVPROGS are compiled but not installed DEVPROGS= myopldecode SCRIPTS= c2esplog FILTERS= c2esp c2espC command2esp #LIBJBIG = jbig.o jbig_ar.o #LIBJBIG85= jbig85.o jbig_ar.o # The jbig library. Debian and derivatives should now have the jbig library -ljbig # -ljbig also contains jbig85 LIBJBIG := -ljbig LIBJBIG85 := -ljbig BINPROGS= ESPDRVFILE = KodakESP_16.drv CDRVFILE = KodakESP_C_07.drv # User ID's LPuid=-oroot LPgid=-glp ifeq ($(UNAME),Darwin) LPuid=-oroot LPgid=-gwheel endif ifeq ($(UNAME),FreeBSD) LPuid=-oroot LPgid=-gwheel endif ifeq ($(UNAME),OpenBSD) LPuid=-oroot LPgid=-gwheel endif ifeq ($(UNAME),SunOS) LPuid=-oroot LPgid=-glp INSTALL=/usr/ucb/install endif # If we aren't root, don't try to set ownership ifneq ($(EUID),0) LPuid= LPgid= endif ifeq ($(UNAME),Linux) # BINPROGS += usb_printerid endif # Compiler flags CFLAGS += -O2 -Wall #CFLAGS += -m32 -O2 -Wall # to produce 32-bit binaries on 64-bit OS #CFLAGS += -g #to make debug info #cups version, checking that cups-config exists ifeq ($(wildcard /usr/bin/cups-config),) #cups-config not found CUPSAPIVER := 99 LIBCUPSDRIVER := -lcups -lcupsdriver LIBCUPSIMAGE := -lcups -lcupsimage else #cups-config found CUPSAPIVER := $(shell cups-config --api-version) LIBCUPSIMAGE := $(shell cups-config --image --libs) endif ifeq ($(CUPSAPIVER),1.6) LIBCUPSDRIVER := -lcups -lcupsfilters FILTERHEADERS := cupsfilters else LIBCUPSDRIVER := -lcups -lcupsdriver FILTERHEADERS := cups endif # # The usual build rules # all: common-test cups-test $(FILTERS) $(PROGS) $(DEVPROGS) $(BINPROGS) all-done common-test: # # cups-config... # ifeq ($(CUPSAPIVER),99) @echo " ***"; \ echo " *** Warning: /usr/bin/cups-config is not installed"; \ echo " ***"; \ echo " *** Try to install it in the package libcups2-dev"; \ echo " *** for Ubuntu: sudo apt-get install libcups2-dev"; \ echo " *** Then run make again."; \ echo " ***"; \ echo " *** If you cannot install cups-config, make will assume"; \ echo " *** that your cups version is 1.5 or lower."; \ echo " ***"; endif # # Compile Dependencies general... # @if ! type $(CC) >/dev/null 2>&1; then \ echo " ***"; \ echo " *** Error: $(CC) is not installed!"; \ echo " ***"; \ echo " *** Install Software Development (gcc) package"; \ echo " ***"; \ exit 1; \ fi @if ! test -f /usr/include/stdio.h; then \ echo " ***"; \ echo " *** Error: /usr/include/stdio.h is not installed!"; \ echo " ***"; \ echo " *** Install Software Development (gcc) package"; \ echo " *** for Ubuntu: sudo apt-get install build-essential"; \ echo " ***"; \ exit 1; \ fi cups-test: # Compile Dependencies in cups... ifeq ($(CUPSAPIVER),99) @echo "The cups api version is unknown, assuming <=1.5" else @echo "cups api detected $(CUPSAPIVER)" endif ifeq ($(CUPSAPIVER),1.6) @echo "The cups tests for version 1.6" @echo look in /usr/include/cupsfilters for image and driver # make config.h echo "#define HAVE_CUPSFILTERS 1" >config.h @if ! test -f /usr/include/cups/raster.h; then \ echo " ***"; \ echo " *** Error: /usr/include/cups/raster.h is not installed!"; \ echo " ***"; \ echo " *** Install cups raster library package"; \ echo " *** for Ubuntu: sudo apt-get install libcupsimage2-dev"; \ echo " ***"; \ exit 1; \ fi @if ! test -f /usr/include/$(FILTERHEADERS)/image.h; then \ echo " ***"; \ echo " *** Error: /usr/include/$(FILTERHEADERS)/image.h is not installed!"; \ echo " ***"; \ echo " *** Install cups-filters package"; \ echo " *** for Ubuntu: something like sudo apt-get install ??(libcupsfilters-dev)"; \ echo " ***"; \ exit 1; \ fi @if ! test -f /usr/include/cups/sidechannel.h; then \ echo " ***"; \ echo " *** Error: /usr/include/cups/sidechannel.h is not installed!"; \ echo " ***"; \ echo " *** Install cups development package"; \ echo " *** for Ubuntu: sudo apt-get install libcups2-dev"; \ echo " ***"; \ exit 1; \ fi @if ! test -f /usr/include/$(FILTERHEADERS)/driver.h; then \ echo " ***"; \ echo " *** Error: /usr/include/$(FILTERHEADERS)/driver.h is not installed!"; \ echo " ***"; \ echo " *** Install cups-filters package"; \ echo " *** for Ubuntu: something like sudo apt-get install ??(libcupsfilters-dev)"; \ echo " ***"; \ exit 1; \ fi else @echo "The cups tests for version up to 1.5" @echo should look in /usr/include/cups/ for image and driver # make config.h echo "#define HAVE_CUPSFILTERS 0" >config.h @if ! test -f /usr/include/cups/raster.h; then \ echo " ***"; \ echo " *** Error: /usr/include/cups/raster.h is not installed!"; \ echo " ***"; \ echo " *** Install cups raster library package"; \ echo " *** for Ubuntu: sudo apt-get install libcupsimage2-dev"; \ echo " ***"; \ exit 1; \ fi @if ! test -f /usr/include/$(FILTERHEADERS)/image.h; then \ echo " ***"; \ echo " *** Error: /usr/include/$(FILTERHEADERS)/image.h is not installed!"; \ echo " ***"; \ echo " *** Install cups raster library package"; \ echo " *** for Ubuntu: sudo apt-get install libcupsimage2-dev"; \ echo " ***"; \ exit 1; \ fi @if ! test -f /usr/include/cups/sidechannel.h; then \ echo " ***"; \ echo " *** Error: /usr/include/cups/sidechannel.h is not installed!"; \ echo " ***"; \ echo " *** Install cups development package"; \ echo " *** for Ubuntu: sudo apt-get install libcups2-dev"; \ echo " ***"; \ exit 1; \ fi @if ! test -f /usr/include/$(FILTERHEADERS)/driver.h; then \ echo " ***"; \ echo " *** Error: /usr/include/$(FILTERHEADERS)/driver.h is not installed!"; \ echo " ***"; \ echo " *** Install cups driver package"; \ echo " *** for Ubuntu: sudo apt-get install libcupsdriver1-dev"; \ echo " ***"; \ exit 1; \ fi endif # ... OK! # all-done: @echo @echo "Patent warning that used to be here no longer applies" @echo #c2esp: c2esp.o c2espcommon.o # $(CC) $(CFLAGS) -o $@ c2esp.o c2espcommon.o $(LIBCUPSDRIVER) $(LIBCUPSIMAGE) $(LIBJBG85) c2esp: c2esp.o c2espcommon.o $(CC) $(CFLAGS) -o $@ c2esp.o c2espcommon.o $(LIBCUPSDRIVER) $(LIBCUPSIMAGE) $(LIBJBIG85) c2espC: c2espC.o c2espcommon.o $(CC) $(CFLAGS) -o $@ c2espC.o c2espcommon.o $(LIBCUPSDRIVER) $(LIBCUPSIMAGE) -lz command2esp: command2esp.o c2espcommon.o $(CC) $(CFLAGS) -o $@ command2esp.o c2espcommon.o $(LIBCUPSDRIVER) #myopldecode: myopldecode.o # $(CC) $(CFLAGS) -o $@ $@.o $(LIBJBG) -lz myopldecode: myopldecode.o $(CC) $(CFLAGS) -o $@ $@.o $(LIBJBIG) -lz # # Installation rules # #use next line if you need to install ppds #install: all install-prog install-ppd install-doc install: all install-prog install-drv install-doc # # Now use your printer configuration GUI to create a new printer if required. # If you are upgrading, "make forceppd" may force cups to use the new ppd versions # for your existing print queues. # # Please report problems in the help forum. # http://sourceforge.net/projects/cupsdriverkodak/forums # @if [ "$(PROGS)" = "" ]; then \ echo "the development tool myopldecode was not installed"; \ fi @if [ "$(PROGS)" = "myopldecode" ]; then \ echo "the development tool myopldecode was installed"; \ fi UDEVBIN=$(DESTDIR)/bin/ install-prog: # # Install driver, and development tools # if [ "$(PROGS)" != "" ]; then \ $(INSTALL) -d $(BIN); \ $(INSTALL) -c $(PROGS) $(BIN); \ fi if [ "$(SCRIPTS)" != "" ]; then \ $(INSTALL) -d $(BIN); \ $(INSTALL) -c $(SCRIPTS) $(BIN); \ fi $(INSTALL) -d $(FILTERBIN) $(INSTALL) -c $(FILTERS) $(FILTERBIN)/ if [ "$(BINPROGS)" != "" ]; then \ $(INSTALL) -d $(UDEVBIN); \ $(INSTALL) -c $(BINPROGS) $(UDEVBIN); \ fi MODEL=$(DESTDIR)$(shell cups-config --datadir)/model #PPD=$(DESTDIR)/usr/share/ppd #VARPPD=/var/lp/ppd install-ppd: # # Generate PPD files using ppdc tool of currently installed CUPS version # run ppdc if it is present @if test -f /usr/bin/ppdc; then \ echo "ppdc is available so running it"; \ mkdir -p ppd; \ ppdc $(ESPDRVFILE); \ ppdc $(CDRVFILE); \ fi # # work around a bug in CUPS ppdc 1.4.x for "8x10" format by post-editing PPD files # for i in ppd/*.ppd ; do \ mv $$i $$i.orig ; \ sed '1,$$s/8 x 10"/8x10/g' $$i.orig > $$i ; \ done rm ppd/*.orig # # Install PPD files for CUPS # $(INSTALL) -d -m 755 $(PPDDIR) rm -f $(PPDDIR)/*.ppd cd ppd; \ for ppdfile in *.ppd; do \ echo $$ppdfile; \ $(INSTALL) -c -m 644 $$ppdfile $(PPDDIR); \ done; install-drv: # make files with ppdc if it is present @if test -f /usr/bin/ppdc; then \ echo "ppdc is available so testing drv files"; \ ppdc -t $(ESPDRVFILE); \ ppdc -t $(CDRVFILE); \ echo "Making ppds to keep them compatible with drv files."; \ ppdc $(ESPDRVFILE); \ ppdc $(CDRVFILE); \ fi $(INSTALL) -d -m 755 $(DRVDIR) $(INSTALL) -c -m 644 $(ESPDRVFILE) $(DRVDIR) $(INSTALL) -c -m 644 $(CDRVFILE) $(DRVDIR) forceppd: # attempt to assign new ppds to existing queues ./c2esp.postinst configure doc: README INSTALL install-doc: doc # # Install documentation # rm -f $(DOCDIR)/INSTALL.in rm -f $(DOCDIR)/README.in $(INSTALL) -d -m 755 $(DOCDIR) $(INSTALL) -c -m 644 COPYING $(DOCDIR) $(INSTALL) -c -m 644 INSTALL $(DOCDIR) $(INSTALL) -c -m 644 README $(DOCDIR) $(INSTALL) -c -m 644 c2esp.txt $(DOCDIR) # make README file from README.in just copy and make read only README: README.in rm -f $@ cp $@.in $@ chmod -w $@ # make INSTALL file from INSTALL.in # adds a contents section to the start, using the capitalised subject headings. INSTALL: INSTALL.in Makefile #INSTALL: INSTALL.in rm -f $@ echo "TOPICS" > $@.tmp echo "------" >> $@.tmp grep ^[A-Z][A-Z] $@.in | sed "s/^/ * /" >> $@.tmp echo >> $@.tmp cat $@.tmp $@.in > $@ rm -f $@.tmp chmod -w $@ # # Uninstall # uninstall: -rm -rf $(PPDDIR) -rm -rf $(DRVDIR) -rm -f $(BIN)/myopldecode -rm -f $(BIN)/c2esp -rm -f $(BIN)/c2esplog -rm -f $(FILTERBIN)/c2esp -rm -f $(FILTERBIN)/c2espC # done #remove any compressed ppds. Is this a real thing? or is MODEL something I made by mistake in an early version? cd ppd; for ppdfile in *.ppd; do \ rm -f $(MODEL)/$$ppdfile.gz; \ done; # # Clean # clean: -rm -f $(PROGS) $(BINPROGS) $(FILTERS) $(DEVPROGS) -rm -f *.o -rm -f *~ # Do not remove ppds, so that users without ppdc can install them # -rm -f ppd/* -rm -f *.tar.gz -rm -f config.h # # Header dependencies # c2esp.o: c2espcommon.h c2espC.o: c2espcommon.h command2esp.o: c2espcommon.h c2espcommon.o: c2espcommon.h c2esp27~rc1/ppd/Kodak_ESP_7.ppd000644 001750 001750 00000020326 12254101537 016274 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak ESP 7 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2012 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP7.ppd" *Product: "(Kodak ESP 7 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak ESP 7 AiO" *ShortNickName: "Kodak ESP 7 AiO" *NickName: "Kodak ESP 7 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMYK *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *cupsInkChannels: "4" *cupsInkLimit: "2.0" *cupsBlackGeneration: "0.0 0.0" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP 7 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsBackSide: "Rotated" *cupsVersion: 1.4 *cupsModelNumber: 7 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2esp" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x1200dpi/-: "1 1 1 0 0 -0.10000000149 1 0 0 -0.300000011921 1" *cupsColorProfile 600x1200dpi/-: "1 1.399999976158 1 -0.10000000149 0 -0.10000000149 1 0 0 -0.40000000596 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x1200dpi *Resolution 300x1200dpi/300x1200: "<>setpagedevice" *Resolution 600x1200dpi/600x1200: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: RGB *ColorModel RGB/Color: "<>setpagedevice" *ColorModel Gray/BlackAndWhite: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *Duplex/2-Sided Printing: PickOne *OrderDependency: 10 AnySetup *Duplex *DefaultDuplex: None *Duplex None/Off (1-Sided): "<>setpagedevice" *Duplex DuplexNoTumble/Long-Edge (Portrait): "<>setpagedevice" *Duplex DuplexTumble/Short-Edge (Landscape): "<>setpagedevice" *CloseUI: *Duplex *OpenUI *InputSlot/Media Source: PickOne *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: MainTray *InputSlot MainTray/MainTray: "<>setpagedevice" *InputSlot PhotoTray/PhotoTray: "<>setpagedevice" *CloseUI: *InputSlot *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP7.ppd, 08406 bytes. c2esp27~rc1/ppd/Kodak_ESP_C11x_Series.ppd000644 001750 001750 00000016751 12254101537 020163 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak ESP C110 Series AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2013 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESPC11x.ppd" *Product: "(Kodak ESP C110 Series AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak ESP C110 Series AiO" *ShortNickName: "Kodak ESP C110 Series AiO" *NickName: "Kodak ESP C110 Series AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMY *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP C110 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsVersion: 1.4 *cupsModelNumber: -1 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2espC" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x300dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsColorProfile 600x600dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x600dpi *Resolution 300x300dpi/300x300: "<>setpagedevice" *Resolution 600x600dpi/600x600: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: CMY *ColorModel Gray/Grayscale: "<>setpagedevice" *ColorModel CMY/Color: "<>setpagedevice" *CloseUI: *ColorModel *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESPC11x.ppd, 07657 bytes. c2esp27~rc1/ppd/Kodak_Hero_9.1.ppd000644 001750 001750 00000020106 12254101537 016677 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for KODAK HERO 9.1 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2013 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KHERO91.ppd" *Product: "(KODAK HERO 9.1 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company KODAK HERO 9.1 AiO" *ShortNickName: "KODAK HERO 9.1 AiO" *NickName: "KODAK HERO 9.1 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMY *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK HERO 9.1 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsBackSide: "Rotated" *cupsVersion: 1.4 *cupsModelNumber: -1 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2espC" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x300dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsColorProfile 600x600dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x600dpi *Resolution 300x300dpi/300x300: "<>setpagedevice" *Resolution 600x600dpi/600x600: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: CMY *ColorModel Gray/Grayscale: "<>setpagedevice" *ColorModel CMY/Color: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *Duplex/2-Sided Printing: PickOne *OrderDependency: 10 AnySetup *Duplex *DefaultDuplex: None *Duplex None/Off (1-Sided): "<>setpagedevice" *Duplex DuplexNoTumble/Long-Edge (Portrait): "<>setpagedevice" *Duplex DuplexTumble/Short-Edge (Landscape): "<>setpagedevice" *CloseUI: *Duplex *OpenUI *InputSlot/Media Source: PickOne *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: MainTray *InputSlot MainTray/MainTray: "<>setpagedevice" *InputSlot PhotoTray/PhotoTray: "<>setpagedevice" *CloseUI: *InputSlot *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KHERO91.ppd, 08262 bytes. c2esp27~rc1/README.in000644 001750 001750 00000035043 12254021632 014302 0ustar00paulpaul000000 000000 Readme file for Kodak ESP series and Hero series cups driver. ============================================================= Please read the "INSTALL" file to see how to install this software. VERSION NOTES Version 2.7 - As 2.6 but with ppd entries for ESP 1.2 and ESP 3.2. The drv files are now installed instead of the ppd files. The jbig library is no longer shipped with c2esp. ShortNickName added to the drv files to pass more ppdc tests. Version 2.6 - As 2.5c but with a modified makefile so it will build with cups 1.5.x or 1.6.x Also a few more ppd files. Version 2.5c - As 2.5b but with patch from awl29 applied and some other mods. The problems with AIO 5100 5300 5500 seem to actually have been problems with cups caused by errors in the ppd files. Now these errors are fixed, so we expect to no longer have these problems. Reports of testing would be helpful. Version 2.5b - As 2.5a but the DEBUGFILES and TESTING option system tidied up. Set these options in c2espcommon.h - Added a test of the raster header. If the resolution values are not sensible, no data will be sent to the printer. THIS SHOULD MAKE TESTING THE AIO 5100 5300 5500 SAFER. Version 2.5a - IT SEEMS THAT THIS VERSION MAY NOT WORK WITH THE AIO 5100 5300 5500 PRINTERS - As 2.5 but the data chunk size limit was reinstated. Version 2.5 - IT SEEMS THAT THIS VERSION MAY NOT WORK WITH THE AIO 5100 5300 5500 PRINTERS - The c2esp filter for the ESP series has been significantly rewritten to enable some ppd attributes like cupsInkLimit and cupsBlackGeneration. - The grey ink is now used. This makes grey areas properly grey (less green than they used to be). - Because of the grey ink and cupsInkLimit, ink cartridges should last longer. - The Black&White option is now dithered properly (and also uses the grey ink). - The data chunk size limit was unintentionally left out. Version 2.4 - patch from user awl29 applied to fix problems with non bi-directional printers, smb shared - data chunk size limit applied in c2espC, some printers can't handle large data chunks. Version 2.3 - ppd files for the hero series had printer model names and 1284DeviceID changed to enable system-config-printer to find the correct ppd automatically. The ESP xxxx series also install automatically. I do not know the 1284DeviceID for the ESP Cxxx series yet. - This version will be released also as a .deb file. It should work pretty well for all 3 series (ESP xxxx, ESP Cxxx, Hero) Version 2.2 - A few bugs fixed. ppd files were not showing color options correctly. Some attempts made to speed up printing by removing unnecessary delays. Version 2.2~rc1 - I now have a Hero 9.1 printer, so I can test the c2espC filter. This version should now work in b/w and colour 300 and 600dpi on the Cxxx series and the Hero series. - More ppd files to match the different printers. More paper sizes added to the ppds and filters. - The duplex and photo paper tray on the Hero series (and perhaps others like ESP 7250?) should now work. - Added "make ppd" to the make file to generate the ppd files from the *.drv files using ppdc if you have it installed. Though the ppd files are already included in the source, so you only need this if you modify them. Version 2.1 - as 2.1~rc3 Making deb file too. Version 2.1~rc3 - significant changes from rc2. Some functions common to c2esp and c2espC are now in a common library (c2espcommon.c). The log entries have been made more detailed and neater. In c2espC the temporary file for holding the compressed data is now a system named file that should not persist after c2espC terminates. - c2espC filter (for the C series) now attempts to handle greyscale or colour at 300dpi or 600dpi, but I have no Cxxx printer so I cannot test it fully. - a script now called c2esplog is provided to extract entries for c2esp or c2espC from the cups error log. Type cupslog in terminal to see the log entries, or cupslog >yourfilename to save in a file. Version 2.1~rc2 - c2espC filter (for the C series) now attempts to handle greyscale or colour at 300dpi or 600dpi. Several bugs have been fixed, but I have no Cxxx printer so I cannot test it fully. - a script called cupslog is provided to extract entries for c2esp or c2espC from the cups error log. Type cupslog in terminal to see the log entries, or cupslog >yourfilename to save in a file. Version 2.1~rc1 - c2espC filter (for the C series) now attempts to handle greyscale or colour at 300dpi or 600dpi - sudo make forceppd Will attempt to update the ppds of existing queues Version 2.0a - Bugs in c2espC filter (for the C series) fixed to allow it to handle more than 1 page. black and white draft only in this version. myopldecode tidied up and bug fixed. Version 2.0 - The makefile now echoes the ppd files to verify which ones are intalled. Unused stuff removed from the makefile. c2espC filter added for the C series. black and white draft only in this version - But since I don't have one of these printers to test I'd be surprised if it actually prints anything without some more development. Version 1.9 - This is functionally the same as 1.8, but various mods were made to reduce security risks (debug files are no longer created in /tmp unless you modify the makefile to require them). The debug tool myopldecode is no longer installed unless you modify the makefile to require it. Version 1.8 - There is now a command filter. It is possible to refresh the ink level display before printing. Also possible to print the printers own self test page, and do a head clean from printer manager. Printing an alinment page should also be possible but there seems to be no button for that in printer manager. - The ppd files have been reorganised. Now there is one for each model. If you have too many old files do a "sudo make uninstall" before doing "sudo make install" to remove the old files. There is no longer a special dither version of each ppd file, instead there are two colour options: "colour dither" and "colour nondither". dither is recommended, use nondither if you need something faster. Models 3200 and 5200 do not have the duplex option, 6100 and higher have the duplex option. Version 1.7 - "INFO:" in stderr seems to be displayed again in printer manager in Ubuntu 10.10 . Maybe this was a bug in printer manager or cups that has been fixed? - Ink levels (marker levels) are now communicated to cups - A bug introduced in ver 1.4 where the compressed data was not closed off properly now appears to be fixed. This caused the printer to stall mid page when printing some files. Version 1.6 - Minor changes to /tmp/KodakPrintLog eg Message when c2esp finishes to say how many pages were processed. - When c2esp is ready to finish the timeout for the PrinterUnlock? command was increased. This should fix a problem where c2esp was finishing a multipage job before the printer had finished printing, then the printer timed out and did not print the end of the job. - NB the messages added in version 1.4 ("INFO" in stderr) no longer seem to be displayed in printer manager in Ubuntu 10.10 Version 1.5 - Only about 1/10 of a page is stored in memory now, so the memory requirements are reduced. (Ghostscript will still use quite a lot of memory) - Some redundant program lines that caused run time errors for some users have been deleted. Version 1.4 - ppd files changed: gamma =1.5 to try and make colours better (but it's starting to depend on taste now). You need to reselect "drivers" in cups to select the new ppds. - data is now sent to the printer as soon as possible, which is more reassuring since printing starts sooner. - in the printer configuration window, you can see more messages showing progress of the print job. Version 1.3 - Bug that stopped printing on 6 x 4 paper fixed. - 600x1200 dpi is now processed with dithering which makes the dot pattern much smoother. (And makes printing slower). - You can print without dithering, like ver 1.2 or less, by using the non-dither ppd files. (there are now 4 ppd files: duplex/non-duplex and dither/non-dither). - Colour maps have been changed to try and improve the "red prints as orange" problem. - This version is a bit slow and clunky. The data is saved in a temporary file and then sent to the printer (easier for debugging) - The makefile has been modified (-lcups added) to try and improve linking in Fedora. - HW margins have been reduced to 1mm because some printed pages were being cropped by the 5mm margins. - When printing documents that involve large amounts of print data the printer appeared to disconnect from the driver during processing. Extra commands are now sent to try and fix this. Version 1.2 - bug that stopped black printing 0.75 inches from RH edge of letter paper using 600dpi and colour fixed Version 1.1 - duplex option now has a separate ppd file. - model 5200 has no duplex option - model 5500 has duplex - NB using the duplex option with a non duplex printer may cause a paper jam Version 1.0 - duplex option modified. NB using the duplex option with a non duplex printer may cause a paper jam Version 0.9 - makefile has -lcupsimage instead of /usr/lib/libcupsimage.so.2 (intention: to make sucessfully in non ubuntu distros) - duplex option added - but did not work Version 0.8 - makefile simplified and modified to suit making deb package Version 0.7 - bug fixed: when cupsBackChannelRead returned -1 we got a segmentation error. Version 0.6 - the *.~ files are now removed by make clean - some redundant includes removed Version 0.5 - As V 0.4 except the source for the ppd file KodakESP_05.drv is now supplied. Version 0.4 - myopldecode tidied up to stop some compilation warnings. - draft mode (300x1200) added, should use less ink. - Memory use reduced, now 500Mb for A4 colour with normal (600x1200) resolution - Detailed step by step installation notes in INSTALL file for ubuntu. - It has been tested with Kodak ESP 5250 and ESP 3250 all in one printers, just for printing in colour and black and white (no scanning), using the wireless network connection and the USB connection. - If you test it on another ESP printer it would be very nice to know if it worked or not (please use the forum on sourceforge to tell me) - It has been tested on 32 bit Ubuntu 9.10. and on Fedora - Printing from gedit (or other text editor that does not divide the text into pages) may not work properly when the output needs more than 1 page. - The colour balance in pictures may not be very good. I have spent no time fine tuning it. - You need to have CUPS installed. Version 0.3 - It has only been tested with a Kodak ESP 5250 all in one printer, just for printing in colour and black and white (no scanning), using the wireless network connection and the USB connection. - If you test it on another ESP printer it would be very nice to know if it worked or not (use the forum on sourceforge) - It has only been tested on 32 bit Ubuntu 9.10. - Memory use is high >2Gb total of actual memory + swap when colour printing A4 or letter size. Perhaps this is normal for CUPS raster printing? I don't know. - Printing from gedit (or other text editor that does not divide the text into pages) may not work properly when the output needs more than 1 page. - The colour balance in pictures may not be very good. I have spent no time fine tuning it. - Some suplus stuff removed (foomatic db files). - Some extra dependency tests added to makefile - to check the CUPS libraries are there. - You need to have CUPS installed. Version 0.2 - It has only been tested with a Kodak ESP 5250 all in one printer, just for printing in colour and black and white (no scanning), using the wireless network connection and the USB connection. - If you test it on another ESP printer it would be very nice to know if it worked or not (use the forum on sourceforge) - It has only been tested on 32 bit Ubuntu 9.10. - Memory use is high >2Gb total of actual memory + swap when colour printing A4 or letter size. Perhaps this is normal for CUPS raster printing? I don't know. - Printing from gedit (or other text editor that does not divide the text into pages) may not work properly when the output needs more than 1 page. - The colour balance in pictures may not be very good. I have spent no time fine tuning it. - The user interface in the ppd file has been tidied up. Version 0.1 This is the first release. - It has only been tested with a Kodak ESP 5250 all in one printer, just for printing in colour and black and white (no scanning), using the wireless network connection. - It has only been tested on 32 bit Ubuntu 9.10. - Memory use is high >2Gb total of actual memory + swap when colour printing A4 or letter size. Perhaps this is normal for CUPS raster printing? I don't know. - Printing from gedit (or other text editor that does not divide the text into pages) may not work properly when the output needs more than 1 page. - The colour balance in pictures may not be very good. I have spent no time fine tuning it. AUTHORS The majority of the code in the filter written by Paul Newall. The general structure of the filter is based on the rastertohp filter supplied with cups. The JBIG compression system is pretty much the system from foo2lava by Rick Richardson, and Rick via foo2lava made a big contribution to my understanding of how to write a filter. The JBIG compression itself is done by Markus Kuhn's JBIG-KIT compression library (included, but available at http://www.cl.cam.ac.uk/~mgk25/jbigkit/), I hope I have acknowledged other's contributions appropriately. This is the first time I have released anything under the GPL. LICENSE This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. PATENTS It is possible that certain products which can be built using the jbig software module might form inventions protected by patent rights in some countries (e.g., by patents about arithmetic coding algorithms owned by IBM and AT&T in the USA). Provision of this software by the author does NOT include any licences for any patents. In those countries where a patent licence is required for certain applications of this software module, you will have to obtain such a licence yourself. c2esp27~rc1/README000444 000000 000000 00000035043 12254072022 013704 0ustar00rootroot000000 000000 Readme file for Kodak ESP series and Hero series cups driver. ============================================================= Please read the "INSTALL" file to see how to install this software. VERSION NOTES Version 2.7 - As 2.6 but with ppd entries for ESP 1.2 and ESP 3.2. The drv files are now installed instead of the ppd files. The jbig library is no longer shipped with c2esp. ShortNickName added to the drv files to pass more ppdc tests. Version 2.6 - As 2.5c but with a modified makefile so it will build with cups 1.5.x or 1.6.x Also a few more ppd files. Version 2.5c - As 2.5b but with patch from awl29 applied and some other mods. The problems with AIO 5100 5300 5500 seem to actually have been problems with cups caused by errors in the ppd files. Now these errors are fixed, so we expect to no longer have these problems. Reports of testing would be helpful. Version 2.5b - As 2.5a but the DEBUGFILES and TESTING option system tidied up. Set these options in c2espcommon.h - Added a test of the raster header. If the resolution values are not sensible, no data will be sent to the printer. THIS SHOULD MAKE TESTING THE AIO 5100 5300 5500 SAFER. Version 2.5a - IT SEEMS THAT THIS VERSION MAY NOT WORK WITH THE AIO 5100 5300 5500 PRINTERS - As 2.5 but the data chunk size limit was reinstated. Version 2.5 - IT SEEMS THAT THIS VERSION MAY NOT WORK WITH THE AIO 5100 5300 5500 PRINTERS - The c2esp filter for the ESP series has been significantly rewritten to enable some ppd attributes like cupsInkLimit and cupsBlackGeneration. - The grey ink is now used. This makes grey areas properly grey (less green than they used to be). - Because of the grey ink and cupsInkLimit, ink cartridges should last longer. - The Black&White option is now dithered properly (and also uses the grey ink). - The data chunk size limit was unintentionally left out. Version 2.4 - patch from user awl29 applied to fix problems with non bi-directional printers, smb shared - data chunk size limit applied in c2espC, some printers can't handle large data chunks. Version 2.3 - ppd files for the hero series had printer model names and 1284DeviceID changed to enable system-config-printer to find the correct ppd automatically. The ESP xxxx series also install automatically. I do not know the 1284DeviceID for the ESP Cxxx series yet. - This version will be released also as a .deb file. It should work pretty well for all 3 series (ESP xxxx, ESP Cxxx, Hero) Version 2.2 - A few bugs fixed. ppd files were not showing color options correctly. Some attempts made to speed up printing by removing unnecessary delays. Version 2.2~rc1 - I now have a Hero 9.1 printer, so I can test the c2espC filter. This version should now work in b/w and colour 300 and 600dpi on the Cxxx series and the Hero series. - More ppd files to match the different printers. More paper sizes added to the ppds and filters. - The duplex and photo paper tray on the Hero series (and perhaps others like ESP 7250?) should now work. - Added "make ppd" to the make file to generate the ppd files from the *.drv files using ppdc if you have it installed. Though the ppd files are already included in the source, so you only need this if you modify them. Version 2.1 - as 2.1~rc3 Making deb file too. Version 2.1~rc3 - significant changes from rc2. Some functions common to c2esp and c2espC are now in a common library (c2espcommon.c). The log entries have been made more detailed and neater. In c2espC the temporary file for holding the compressed data is now a system named file that should not persist after c2espC terminates. - c2espC filter (for the C series) now attempts to handle greyscale or colour at 300dpi or 600dpi, but I have no Cxxx printer so I cannot test it fully. - a script now called c2esplog is provided to extract entries for c2esp or c2espC from the cups error log. Type cupslog in terminal to see the log entries, or cupslog >yourfilename to save in a file. Version 2.1~rc2 - c2espC filter (for the C series) now attempts to handle greyscale or colour at 300dpi or 600dpi. Several bugs have been fixed, but I have no Cxxx printer so I cannot test it fully. - a script called cupslog is provided to extract entries for c2esp or c2espC from the cups error log. Type cupslog in terminal to see the log entries, or cupslog >yourfilename to save in a file. Version 2.1~rc1 - c2espC filter (for the C series) now attempts to handle greyscale or colour at 300dpi or 600dpi - sudo make forceppd Will attempt to update the ppds of existing queues Version 2.0a - Bugs in c2espC filter (for the C series) fixed to allow it to handle more than 1 page. black and white draft only in this version. myopldecode tidied up and bug fixed. Version 2.0 - The makefile now echoes the ppd files to verify which ones are intalled. Unused stuff removed from the makefile. c2espC filter added for the C series. black and white draft only in this version - But since I don't have one of these printers to test I'd be surprised if it actually prints anything without some more development. Version 1.9 - This is functionally the same as 1.8, but various mods were made to reduce security risks (debug files are no longer created in /tmp unless you modify the makefile to require them). The debug tool myopldecode is no longer installed unless you modify the makefile to require it. Version 1.8 - There is now a command filter. It is possible to refresh the ink level display before printing. Also possible to print the printers own self test page, and do a head clean from printer manager. Printing an alinment page should also be possible but there seems to be no button for that in printer manager. - The ppd files have been reorganised. Now there is one for each model. If you have too many old files do a "sudo make uninstall" before doing "sudo make install" to remove the old files. There is no longer a special dither version of each ppd file, instead there are two colour options: "colour dither" and "colour nondither". dither is recommended, use nondither if you need something faster. Models 3200 and 5200 do not have the duplex option, 6100 and higher have the duplex option. Version 1.7 - "INFO:" in stderr seems to be displayed again in printer manager in Ubuntu 10.10 . Maybe this was a bug in printer manager or cups that has been fixed? - Ink levels (marker levels) are now communicated to cups - A bug introduced in ver 1.4 where the compressed data was not closed off properly now appears to be fixed. This caused the printer to stall mid page when printing some files. Version 1.6 - Minor changes to /tmp/KodakPrintLog eg Message when c2esp finishes to say how many pages were processed. - When c2esp is ready to finish the timeout for the PrinterUnlock? command was increased. This should fix a problem where c2esp was finishing a multipage job before the printer had finished printing, then the printer timed out and did not print the end of the job. - NB the messages added in version 1.4 ("INFO" in stderr) no longer seem to be displayed in printer manager in Ubuntu 10.10 Version 1.5 - Only about 1/10 of a page is stored in memory now, so the memory requirements are reduced. (Ghostscript will still use quite a lot of memory) - Some redundant program lines that caused run time errors for some users have been deleted. Version 1.4 - ppd files changed: gamma =1.5 to try and make colours better (but it's starting to depend on taste now). You need to reselect "drivers" in cups to select the new ppds. - data is now sent to the printer as soon as possible, which is more reassuring since printing starts sooner. - in the printer configuration window, you can see more messages showing progress of the print job. Version 1.3 - Bug that stopped printing on 6 x 4 paper fixed. - 600x1200 dpi is now processed with dithering which makes the dot pattern much smoother. (And makes printing slower). - You can print without dithering, like ver 1.2 or less, by using the non-dither ppd files. (there are now 4 ppd files: duplex/non-duplex and dither/non-dither). - Colour maps have been changed to try and improve the "red prints as orange" problem. - This version is a bit slow and clunky. The data is saved in a temporary file and then sent to the printer (easier for debugging) - The makefile has been modified (-lcups added) to try and improve linking in Fedora. - HW margins have been reduced to 1mm because some printed pages were being cropped by the 5mm margins. - When printing documents that involve large amounts of print data the printer appeared to disconnect from the driver during processing. Extra commands are now sent to try and fix this. Version 1.2 - bug that stopped black printing 0.75 inches from RH edge of letter paper using 600dpi and colour fixed Version 1.1 - duplex option now has a separate ppd file. - model 5200 has no duplex option - model 5500 has duplex - NB using the duplex option with a non duplex printer may cause a paper jam Version 1.0 - duplex option modified. NB using the duplex option with a non duplex printer may cause a paper jam Version 0.9 - makefile has -lcupsimage instead of /usr/lib/libcupsimage.so.2 (intention: to make sucessfully in non ubuntu distros) - duplex option added - but did not work Version 0.8 - makefile simplified and modified to suit making deb package Version 0.7 - bug fixed: when cupsBackChannelRead returned -1 we got a segmentation error. Version 0.6 - the *.~ files are now removed by make clean - some redundant includes removed Version 0.5 - As V 0.4 except the source for the ppd file KodakESP_05.drv is now supplied. Version 0.4 - myopldecode tidied up to stop some compilation warnings. - draft mode (300x1200) added, should use less ink. - Memory use reduced, now 500Mb for A4 colour with normal (600x1200) resolution - Detailed step by step installation notes in INSTALL file for ubuntu. - It has been tested with Kodak ESP 5250 and ESP 3250 all in one printers, just for printing in colour and black and white (no scanning), using the wireless network connection and the USB connection. - If you test it on another ESP printer it would be very nice to know if it worked or not (please use the forum on sourceforge to tell me) - It has been tested on 32 bit Ubuntu 9.10. and on Fedora - Printing from gedit (or other text editor that does not divide the text into pages) may not work properly when the output needs more than 1 page. - The colour balance in pictures may not be very good. I have spent no time fine tuning it. - You need to have CUPS installed. Version 0.3 - It has only been tested with a Kodak ESP 5250 all in one printer, just for printing in colour and black and white (no scanning), using the wireless network connection and the USB connection. - If you test it on another ESP printer it would be very nice to know if it worked or not (use the forum on sourceforge) - It has only been tested on 32 bit Ubuntu 9.10. - Memory use is high >2Gb total of actual memory + swap when colour printing A4 or letter size. Perhaps this is normal for CUPS raster printing? I don't know. - Printing from gedit (or other text editor that does not divide the text into pages) may not work properly when the output needs more than 1 page. - The colour balance in pictures may not be very good. I have spent no time fine tuning it. - Some suplus stuff removed (foomatic db files). - Some extra dependency tests added to makefile - to check the CUPS libraries are there. - You need to have CUPS installed. Version 0.2 - It has only been tested with a Kodak ESP 5250 all in one printer, just for printing in colour and black and white (no scanning), using the wireless network connection and the USB connection. - If you test it on another ESP printer it would be very nice to know if it worked or not (use the forum on sourceforge) - It has only been tested on 32 bit Ubuntu 9.10. - Memory use is high >2Gb total of actual memory + swap when colour printing A4 or letter size. Perhaps this is normal for CUPS raster printing? I don't know. - Printing from gedit (or other text editor that does not divide the text into pages) may not work properly when the output needs more than 1 page. - The colour balance in pictures may not be very good. I have spent no time fine tuning it. - The user interface in the ppd file has been tidied up. Version 0.1 This is the first release. - It has only been tested with a Kodak ESP 5250 all in one printer, just for printing in colour and black and white (no scanning), using the wireless network connection. - It has only been tested on 32 bit Ubuntu 9.10. - Memory use is high >2Gb total of actual memory + swap when colour printing A4 or letter size. Perhaps this is normal for CUPS raster printing? I don't know. - Printing from gedit (or other text editor that does not divide the text into pages) may not work properly when the output needs more than 1 page. - The colour balance in pictures may not be very good. I have spent no time fine tuning it. AUTHORS The majority of the code in the filter written by Paul Newall. The general structure of the filter is based on the rastertohp filter supplied with cups. The JBIG compression system is pretty much the system from foo2lava by Rick Richardson, and Rick via foo2lava made a big contribution to my understanding of how to write a filter. The JBIG compression itself is done by Markus Kuhn's JBIG-KIT compression library (included, but available at http://www.cl.cam.ac.uk/~mgk25/jbigkit/), I hope I have acknowledged other's contributions appropriately. This is the first time I have released anything under the GPL. LICENSE This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. PATENTS It is possible that certain products which can be built using the jbig software module might form inventions protected by patent rights in some countries (e.g., by patents about arithmetic coding algorithms owned by IBM and AT&T in the USA). Provision of this software by the author does NOT include any licences for any patents. In those countries where a patent licence is required for certain applications of this software module, you will have to obtain such a licence yourself. c2esp27~rc1/ppd/Kodak_ESP_C1xx_Series.ppd000644 001750 001750 00000016646 12022413317 020270 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak ESP C100 Series AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.5.0. *% Copyright 2011 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.4" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESPC1xx.ppd" *Product: "(Kodak ESP C100 Series AiO)" *Manufacturer: "Kodak" *ModelName: "Kodak ESP C100 Series AiO" *ShortNickName: "Kodak ESP C100 Series AiO" *NickName: "Kodak ESP C100" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMY *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP C100 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsVersion: 1.4 *cupsModelNumber: -1 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2espC" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x300dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsColorProfile 600x600dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize DL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion DL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea DL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension DL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 300x300dpi *Resolution 300x300dpi/300x300: "<>setpagedevice" *Resolution 600x600dpi/600x600: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/Color Mode: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: CMY *ColorModel Gray/Grayscale: "<>setpagedevice" *ColorModel CMY/Color: "<>setpagedevice" *CloseUI: *ColorModel *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESPC1xx.ppd, 07590 bytes. c2esp27~rc1/000775 001750 001750 00000000000 12254102414 013010 5ustar00paulpaul000000 000000 c2esp27~rc1/ppd/Kodak_ESP_72xx_Series.ppd000644 001750 001750 00000020433 12254101537 020247 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak ESP 7200 Series AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2012 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP72xx.ppd" *Product: "(Kodak ESP 7200 Series AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak ESP 7200 Series AiO" *ShortNickName: "Kodak ESP 7200 Series AiO" *NickName: "Kodak ESP 7200 Series AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMYK *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *cupsInkChannels: "4" *cupsInkLimit: "2.0" *cupsBlackGeneration: "0.0 0.0" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP 7200 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsBackSide: "Rotated" *cupsVersion: 1.4 *cupsModelNumber: 7250 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2esp" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x1200dpi/-: "1 1 1 0 0 -0.10000000149 1 0 0 -0.300000011921 1" *cupsColorProfile 600x1200dpi/-: "1 1.399999976158 1 -0.10000000149 0 -0.10000000149 1 0 0 -0.40000000596 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x1200dpi *Resolution 300x1200dpi/300x1200: "<>setpagedevice" *Resolution 600x1200dpi/600x1200: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: RGB *ColorModel RGB/Color: "<>setpagedevice" *ColorModel Gray/BlackAndWhite: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *Duplex/2-Sided Printing: PickOne *OrderDependency: 10 AnySetup *Duplex *DefaultDuplex: None *Duplex None/Off (1-Sided): "<>setpagedevice" *Duplex DuplexNoTumble/Long-Edge (Portrait): "<>setpagedevice" *Duplex DuplexTumble/Short-Edge (Landscape): "<>setpagedevice" *CloseUI: *Duplex *OpenUI *InputSlot/Media Source: PickOne *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: MainTray *InputSlot MainTray/MainTray: "<>setpagedevice" *InputSlot PhotoTray/PhotoTray: "<>setpagedevice" *CloseUI: *InputSlot *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP72xx.ppd, 08475 bytes. c2esp27~rc1/ppd/Kodak_ESP_2.2.ppd000644 000000 000000 00000016665 12254101537 016454 0ustar00rootroot000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for KODAK ESP 2.2 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2013 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP22.ppd" *Product: "(KODAK ESP 2.2 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company KODAK ESP 2.2 AiO" *ShortNickName: "KODAK ESP 2.2 AiO" *NickName: "KODAK ESP 2.2 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMY *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP 2.2 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsVersion: 1.4 *cupsModelNumber: -1 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2espC" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x300dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsColorProfile 600x600dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x600dpi *Resolution 300x300dpi/300x300: "<>setpagedevice" *Resolution 600x600dpi/600x600: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: CMY *ColorModel Gray/Grayscale: "<>setpagedevice" *ColorModel CMY/Color: "<>setpagedevice" *CloseUI: *ColorModel *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP22.ppd, 07605 bytes. c2esp27~rc1/ppd/Kodak_ESP_53xx_Series.ppd000644 001750 001750 00000020331 12254101537 020243 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak 5300 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2012 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP53xx.ppd" *Product: "(Kodak 5300 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak 5300 AiO" *ShortNickName: "Kodak 5300 AiO" *NickName: "Kodak 5300 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMYK *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *cupsInkChannels: "4" *cupsInkLimit: "2.0" *cupsBlackGeneration: "0.0 0.0" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK 5300 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsBackSide: "Rotated" *cupsVersion: 1.4 *cupsModelNumber: 5300 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2esp" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x1200dpi/-: "1 1 1 0 0 -0.10000000149 1 0 0 -0.300000011921 1" *cupsColorProfile 600x1200dpi/-: "1 1.399999976158 1 -0.10000000149 0 -0.10000000149 1 0 0 -0.40000000596 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x1200dpi *Resolution 300x1200dpi/300x1200: "<>setpagedevice" *Resolution 600x1200dpi/600x1200: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: RGB *ColorModel RGB/Color: "<>setpagedevice" *ColorModel Gray/BlackAndWhite: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *Duplex/2-Sided Printing: PickOne *OrderDependency: 10 AnySetup *Duplex *DefaultDuplex: None *Duplex None/Off (1-Sided): "<>setpagedevice" *Duplex DuplexNoTumble/Long-Edge (Portrait): "<>setpagedevice" *Duplex DuplexTumble/Short-Edge (Landscape): "<>setpagedevice" *CloseUI: *Duplex *OpenUI *InputSlot/Media Source: PickOne *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: MainTray *InputSlot MainTray/MainTray: "<>setpagedevice" *InputSlot PhotoTray/PhotoTray: "<>setpagedevice" *CloseUI: *InputSlot *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP53xx.ppd, 08409 bytes. c2esp27~rc1/c2espC.c000644 001750 001750 00000060265 12246674302 014315 0ustar00paulpaul000000 000000 /* * * Kodak ESP Cxxx (OPL?) Control Language filter for the Common UNIX * Printing System (CUPS). * * copyright Paul Newall May 2010 - Mar 2013. VERSION 2.7 (c2esp27) * SUPPORT FOR ESP Cxxxx and Hero SERIES * patch by user awl29 applied to fix problems with non bi-directional printers, smb shared * data chunk size limit applied * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * Params: job-id user title copies options [file] * options = "noback" disables all calls to the back channel for testing. * This filter is based loosely on c2esp */ #define MAXDATACHUNK 65511 /* it seems windows smb printer can't handle more than 65K at a time? maybe others too */ // debugfiles and testing are defined in c2espcommon.h because they are used in c2espcommon.c /* #define DEBUGFILES 0 DEBUGFILES 1 creates files in /tmp to help debug Currently a large number of files: KodakPrintLog = text file showing progress of the filter RasForComp.pbm or ppm = the raster read from cups raster view with image viewer. KodakUncompressed = The binary page data before compression. KodakCompPage = The zlib compressed page data KodakPrintFile = The data that is sent to the printer */ #define TESTING 0 /* TESTING 1 suppresses the output to the printer. Used in development. */ /* #include "config.h" */ #include #include //FlushBackChannel, and the side channel functions and constants #include //files #include #include #include #include //time functions used for debugging #include "c2espcommon.h" //the common library of c2esp and c2espC /* for gzip */ #include #define SET_BINARY_MODE(file) #define CHUNK 16384 /* * Constants... */ char *Version = "c2espC27"; /* * Globals... */ unsigned char *CupsLineBuffer; //buffer for one line of the cups raster unsigned char *DataLineBuffer; //buffer for one uncompressed line char KodakPaperSize[50]; /* String that the printer expects for paper size */ int OutBitsPerPixel, /* Number of bits per color per pixel for printer*/ Duplex, /* Current duplex mode */ Page, /* Current page number */ Canceled, /* Has the current job been canceled? */ DoBack; /* Enables the back channel comms */ int MemUsed = 0; //tracks memory use time_t TimeStart; //to record the start of a section FILE *PrintFile = NULL; //file descriptor for debug file FILE *UncompressedFile = NULL; //file descriptor for file of uncompressed page data time_t StartTime; time_t KeepAwakeStart; //for zlib z_stream strm; unsigned char out[CHUNK]; /*buffer for a compressed line */ #if DEBUGFILES == 1 FILE *dfp = NULL; //file descriptor for composite raster file FILE *Cyanfp = NULL; //file descriptor for cyan only raster file FILE *Magentafp = NULL; //file descriptor for magenta only raster file FILE *Yellowfp = NULL; //file descriptor for yellow only raster file FILE *Blackfp = NULL; //file descriptor for black only raster file FILE *RawColourFile = NULL; //file descriptor for input to dither FILE *DitheredColourFile = NULL; //file descriptor for output from dither #endif void SetupPrinter(cups_page_header2_t *header) { //gets the printer ready to start the job int i; for(i=0; i<4; ++i) { if(GoodExchange(PrintFile, "LockPrinterWait?", "0002, OK, Locked for printing;", DoBack, 1, 3.0) >= 0) break; } DoOutJob(PrintFile, "Event=StartOfJob;",0,0); //printer command if (DoBack) { GoodExchange(PrintFile, "DeviceStatus?", "0101,DeviceStatus.ImageDevice", DoBack, 1, 1.0); // you can get unexpected reply if there is an ink low warning then GoodExchange will be -ve //aquire ink levels here? DeviceStatus.Printer.InkLevelPercent.Colour=nn%&DeviceStatus.Printer.InkLevelPercent.Black=nn% //note & used as separator DoLog("ColourPercent=%d\n",ColourPercent,0); DoLog("BlackPercent=%d\n",BlackPercent,0); if(ColourPercent >= 0 && BlackPercent >= 0) { fprintf(stderr,"ATTR: marker-levels=%d,%d\n",BlackPercent,ColourPercent); // sets the levels displayed } } DoOutJob(PrintFile, KodakPaperSize,0,0); if(header->MediaPosition == 0) DoOutJob(PrintFile, "MediaInputTrayCheck=Main;",0,0); else if(header->MediaPosition == 1) DoOutJob(PrintFile, "MediaInputTrayCheck=Photo;",0,0); else { DoOutJob(PrintFile, "MediaInputTrayCheck=Main;",0,0); DoLog("Unknown Input Tray no. %d so used main tray", header->MediaPosition, 0); } if (DoBack) { GoodExchange(PrintFile, "MediaTypeStatus?", "MediaTypeStatus=custom-media-type-deviceunavailable", DoBack, 1, 1.0); GoodExchange(PrintFile, "MediaDetect?", "0098, OK, Media Detect Started;", DoBack, 1, 1.0); //do MediaTypeStatus? until some media is found typically takes 12 seconds for Hero 9.1 #if TESTING == 0 sleep(5); for(i=0; i<15; ++i) //normal #endif #if TESTING == 1 for(i=0; i<2; ++i) //short for tests #endif { DoLog("MediaTypeStatus? try %d\n", i, 0); if(GoodExchange(PrintFile, "MediaTypeStatus?", "MediaTypeStatus=custom-media-type-deviceunavailable", DoBack, 2, 2.0) <= 0) break; } } else { GoodExchange(PrintFile, "MediaDetect?", "0098, OK, Media Detect Started;", DoBack, 1, 1.0); sleep(12); } } void ShutdownPrinter(void) { int i, ret; DoOutJob(PrintFile, "Event=EndOfJob;",0,0); for(i=0; i<20; ++i) /* fast PC might need lots of tries here for printer to finish, how many is reasonable? */ { /* First few tries will be quick so small jobs finish quickly */ if(i<5) ret=GoodExchange(PrintFile, "UnlockPrinter?", "0003, OK, Printer unlocked;", DoBack, 1, 5.0); /* Then tries will be slower so long jobs can finish */ else ret=GoodExchange(PrintFile, "UnlockPrinter?", "0003, OK, Printer unlocked;", DoBack, 5, 2.0); DoLog("UnlockPrinter? try %d returned %d\n", i, ret); if(ret >= 0 || strcmp(BackBuf , "3405, Error, Printer not locked") == 0) break; //error string has no terminating ; because it has been tokenised } } void SetupJob(cups_page_header2_t *header) //Prepare the printer for printing a job. { DoOutJob(PrintFile, "OutputBin=MainSink;",0,0); Duplex = header->Duplex; if(Duplex == 0) DoOutJob(PrintFile, "Sides=OneSided;",0,0); else DoOutJob(PrintFile, "Sides=TwoSided;",0,0); //DoOutJob(PrintFile, "PageOrder=BackToFront;",0,0); //may be possible to implement this //DoOutJob(PrintFile, "Copies=1;",0,0); //may an error response? but is sent by windows DoOutJob(PrintFile, "MediaType=custom-media-type-autoselection-0-0-0-0;",0,0); DoOutJob(PrintFile, KodakPaperSize,0,0); } void FreeBuffers() { DoLog("Free buffers\n",0,0); free(CupsLineBuffer); free(DataLineBuffer); MemUsed = 0; DoLog("Buffers freed\n",0,0); } void AllocateBuffers(cups_page_header2_t *header) { // Allocate memory for a page of graphics... if ((CupsLineBuffer = malloc(header->cupsBytesPerLine)) == NULL) { DoLog("ERROR: Unable to allocate %d bytes for CupsLineBuffer!\n",header->cupsBytesPerLine,0); exit(1); } else MemUsed = MemUsed + header->cupsBytesPerLine * 1E-3; if ((DataLineBuffer = malloc(header->cupsBytesPerLine+12)) == NULL) { DoLog("ERROR: Unable to allocate %d bytes for DataLineBuffer!\n",header->cupsBytesPerLine+8,0); exit(1); } else MemUsed = MemUsed + (header->cupsBytesPerLine+12) * 1E-3; DoLog("Buffers allocated %d kb\n",MemUsed,0); } void StartPrinterPage(cups_page_header2_t *header) { int ResX, ResY; DisplayHeader(header); ResX = header->HWResolution[0]; ResY = header->HWResolution[1]; DoOutJob(PrintFile, "Event=StartOfPage;",0,0); DoOutJob(PrintFile, "Page=%d;",Page,0); DoOutJob(PrintFile, "Origin.Top=0.0mm;Origin.Left=0.0mm;",0,0); // DoOutJob(PrintFile, "Origin.Top=1.0mm;Origin.Left=1.0mm;",0,0); if(ResX==300) { DoOutJob(PrintFile, "PrintQuality=Draft;",0,0); } else if(ResX==600) { DoOutJob(PrintFile, "PrintQuality=Normal;",0,0); } else if(ResX==1200) // may not be an option { DoOutJob(PrintFile, "PrintQuality=High;",0,0); } if (header->cupsColorSpace == CUPS_CSPACE_CMY) { DoLog("CUPS_CSPACE_CMY (%d)\n",header->cupsColorSpace,0); DoOutJob(PrintFile, "PrintColorspace=Color;",0,0); DoOutJob(PrintFile, "AntiBleedControl=Auto;",0,0); DoOutJob(PrintFile, "Resolution=%dx%d;", ResX, ResY); DoOutJob(PrintFile, "RasterObject.BitsPerPixel=%d;",OutBitsPerPixel,0); DoOutJob(PrintFile, "RasterObject.Colorspace=sRGB;",0,0); } else if (header->cupsColorSpace == CUPS_CSPACE_K) { DoLog("CUPS_CSPACE_K (%d)\n",header->cupsColorSpace,0); DoOutJob(PrintFile, "PrintColorspace=Grayscale;",0,0); DoOutJob(PrintFile, "AntiBleedControl=Off;",0,0); DoOutJob(PrintFile, "Resolution=%dx%d;", ResX, ResY); DoOutJob(PrintFile, "RasterObject.BitsPerPixel=%d;",OutBitsPerPixel,0); DoOutJob(PrintFile, "RasterObject.Colorspace=Mono;",0,0); } else { DoLog("CUPS_CSPACE_?? (%d)\n",header->cupsColorSpace,0); } DoOutJob(PrintFile, "RasterObject.Compression=GZIPTok;",0,0); DoOutJob(PrintFile, "RasterObject.Width=%d;", header->cupsWidth,0); DoOutJob(PrintFile, "RasterObject.Height=%d;", header->cupsHeight,0); } void EndPage(void) //Finish a page of graphics. { DoOutJob(PrintFile, "Event=EndOfPage;", 0,0); if(PrintFile) fflush(PrintFile); FreeBuffers(); /* Free memory... allocated by AllocateBuffers() */ } void CancelJob(int sig) /* - Cancel the current job... I - Signal */ { (void)sig; DoLog("CancelJob: job cancelled by signal\n",0,0); CloseLogging(); Canceled = 1; } unsigned char Byte0(int In) { int Byte0Mask = 0xFF; return (In & Byte0Mask); } unsigned char Byte1(int In) { int Byte0Mask = 0xFF; return ((In>>8) & Byte0Mask); } int Composite(unsigned char Buffer[],int Posn) { //returns the sum of the 3 colour components corresponding to Posn, assuming chunked colour order return (Buffer[Posn*3]+Buffer[Posn*3+1]+Buffer[Posn*3+2]); } /* * 'main()' - Main entry and processing of driver. */ int /* O - Exit status */ main(int argc, char *argv[]) /* I - Number of command-line arguments, Command-line arguments */ { int fd; /* File descriptor */ cups_raster_t *ras; /* Raster stream from cups */ cups_page_header2_t header; /* Page header from cups */ int y, c; int i; int PixelsLeft,PixelsRight; //count blank pixels at right and left of raster line int PixelsNonBlank; //in a raster line int DataLength; //length of an uncompressed data line unsigned char MinOut=255, MaxOut=0; //to check the range of the dithered output or raster int CheckCount, ret, have, flush; FILE *CompData; //stores the compressed data of a page char RasFileName[100]=""; int BytesToPrint; int CurrentChunkSize; StartTime = time(NULL); KeepAwakeStart = time(NULL); #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET) struct sigaction action; /* Actions for POSIX signals */ #endif /* HAVE_SIGACTION && !HAVE_SIGSET */ /* * Check command-line... */ if (argc < 6 || argc > 7) //wrong no of arguments { fprintf(stderr, ("Usage: %s job-id user title copies options [file]\n"), "rastertoek"); return (1); } char data; int datalen; cups_sc_bidi_t bidi; cups_sc_status_t status; /* Tell cupsSideChannelDoRequest() how big our buffer is... */ datalen = 1; /* Get the bidirectional capabilities, waiting for up to 1 second */ status = cupsSideChannelDoRequest(CUPS_SC_CMD_GET_BIDI, &data, &datalen, 1.0); /* Use the returned value if OK was returned and the length is still 1 */ if (status == CUPS_SC_STATUS_OK && datalen == 1) { bidi = (cups_sc_bidi_t) data; DoBack = (bidi == CUPS_SC_BIDI_NOT_SUPPORTED ? 0 : 1); } else { bidi = CUPS_SC_BIDI_NOT_SUPPORTED; DoBack = 0; } #if DEBUGFILES == 1 SetupLogging("c2espC",DoBack,"/tmp/KodakPrintLog"); #else SetupLogging("c2espC",DoBack,""); #endif setbuf(stderr, NULL); fprintf(stderr, ("DEBUG: ================= %s ===================================\n"),Version); DoLogString("Starting %s\n",Version); DoLog("Compiled with DEBUGFILES = %d, TESTING = %d\n", DEBUGFILES, TESTING); DoLog("Number of command line parameters: %d\n", argc, 0); int argi; for (argi = 0; argi < argc; argi++) { DoLogString(" param: '%s'\n", argv[argi]); } DoLogString("End of command-line parameters\n", ""); DoLogString("Bi-di/backchannel support: %s\n", (bidi == CUPS_SC_BIDI_NOT_SUPPORTED ? "false" : "true")); DoLog("DoBack value: %d\n", DoBack, 0); MarkerSetup(); /* * Open the page stream... */ if (argc == 7) { if ((fd = open(argv[6], O_RDONLY)) == -1) { fprintf(stderr, ("ERROR: c2espC: Unable to open raster file - %s\n"), strerror(errno)); sleep(1); return (1); } } else fd = 0; fprintf(stderr, ("DEBUG: c2espC: opening raster\n")); ras = cupsRasterOpen(fd, CUPS_RASTER_READ); /* * Register a signal handler to eject the current page if the * job is cancelled. */ Canceled = 0; #ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */ sigset(SIGTERM, CancelJob); #elif defined(HAVE_SIGACTION) memset(&action, 0, sizeof(action)); sigemptyset(&action.sa_mask); action.sa_handler = CancelJob; sigaction(SIGTERM, &action, NULL); #else signal(SIGTERM, CancelJob); #endif /* HAVE_SIGSET */ /* * Initialize the print device... */ #if DEBUGFILES == 1 PrintFile = fopen("/tmp/KodakPrintFile", "w");//open the print file sleep(3); //does this help chmod to work? chmod("/tmp/KodakPrintFile", S_IRUSR | S_IWUSR | S_IROTH ); //let anyone read it #endif /* read the first header */ if(cupsRasterReadHeader2(ras, &header)) { DoLog("First page Header read after %d sec\n", time(NULL)-StartTime,0); SetPaperSize(KodakPaperSize, header.PageSize[1]); SetupPrinter(&header); DoLog("Printer should be ready by now\n",0,0); /* * Process pages as needed... */ Page = 0; do //start of loop for each page { DoLog("Header read\n", 0,0); if (Canceled) break; if(header.cupsWidth<=0) break; Page ++; DoLog("PAGE %d COPIES %d\n", Page, header.NumCopies); /* * Start the page... */ if ( !(CompData=tmpfile()) ) { perror("opening compressed page temp file"); abort(); } OutBitsPerPixel = header.cupsBitsPerColor; if (header.cupsColorSpace == CUPS_CSPACE_CMY) //colour { DoLog("cupsColorSpace = %d = CUPS_CSPACE_CMY\n", header.cupsColorSpace, 0); fprintf(stderr, "INFO: c2espC: p%d Colour %d\n", Page, ColourPercent); sprintf(RasFileName,"/tmp/RasForComp.ppm"); } else if (header.cupsColorSpace == CUPS_CSPACE_K)//monochrome { DoLog("cupsColorSpace = %d = CUPS_CSPACE_K\n", header.cupsColorSpace, 0); fprintf(stderr, "INFO: c2espC: p%d Monochrome\n",Page); sprintf(RasFileName,"/tmp/RasForComp.pbm"); } else { DoLog("Unknown cupsColorSpace = %d\n", header.cupsColorSpace, 0); DoLog("Allowed cupsColorSpace = %d or %d\n", CUPS_CSPACE_CMY, CUPS_CSPACE_K); } DoLog("cups raster w = %d h = %d\n", header.cupsWidth, header.cupsHeight); DoLog("cups raster bytes per line = %d bits per line = %d\n", header.cupsBytesPerLine, header.cupsBytesPerLine * 8); #if DEBUGFILES == 1 //open raster file here fprintf(stderr, "INFO: c2espC: Opening %s\n",RasFileName); remove(RasFileName); dfp = fopen(RasFileName, "w"); UncompressedFile = fopen("/tmp/KodakUncompressed", "w"); //open the file sleep(3); //does this help chmod to work? chmod(RasFileName, S_IRUSR | S_IWUSR | S_IROTH ); //let anyone read it chmod("/tmp/KodakUncompressed", S_IRUSR | S_IWUSR | S_IROTH ); //let anyone read it if (dfp && header.cupsColorSpace == CUPS_CSPACE_CMY) { fprintf(dfp, "P6\n%8d %8d %8d\n", header.cupsWidth, header.cupsHeight, 255); } if (dfp && header.cupsColorSpace == CUPS_CSPACE_K) { fprintf(dfp, "P5\n%8d %8d %8d\n", header.cupsWidth, header.cupsHeight, 255); } #endif AllocateBuffers(&header); MinOut=255;MaxOut=0; //initialise if(Page == 1) SetupJob(&header); StartPrinterPage( &header); //prepare for compression DoLog("initialising Compression\n",0,0); /* allocate deflate state */ strm.zalloc = Z_NULL; strm.zfree = Z_NULL; strm.opaque = Z_NULL; ret = deflateInit(&strm, Z_DEFAULT_COMPRESSION); if (ret != Z_OK) { //was return ret; DoLog("Deflate did not initialise properly\n", 0, 0); } for (y = 0; (y < header.cupsHeight); ++y ) // Loop for each line of the page { if (Canceled) break; /* Keep the printer connection awake, added if (DoBack) 15/1/12 */ if (DoBack) KeepAwakeStart = KeepAwake(KeepAwakeStart,10, PrintFile); //read a line if (!cupsRasterReadPixels(ras, CupsLineBuffer, header.cupsBytesPerLine)) break; //check for max and min either colour or mono for(i=0;i<(header.cupsBytesPerLine);++i) { if (CupsLineBuffer[i]>MaxOut) MaxOut=CupsLineBuffer[i]; if (CupsLineBuffer[i]0) //there are some RHS blanks { DataLineBuffer[DataLength+0]=Byte0(PixelsRight); DataLineBuffer[DataLength+1]=Byte1(PixelsRight); DataLineBuffer[DataLength+2]=0x01; DataLineBuffer[DataLength+3]=0x00; DataLength+=4; } } if(UncompressedFile) fwrite(DataLineBuffer, 1, DataLength, UncompressedFile); //send data to the compression strm.next_in = DataLineBuffer; strm.avail_in = DataLength; if(y >= header.cupsHeight-1) flush=Z_FINISH; else flush = Z_NO_FLUSH; /* run deflate() on input until output buffer not full */ do { strm.avail_out = CHUNK; strm.next_out = out; // DoLog("deflating %d byte input\n",strm.avail_in,0); ret = deflate(&strm, flush); if(ret == Z_STREAM_ERROR) break; have = CHUNK - strm.avail_out; if(have>0) DoLog("writing deflated output %d bytes\n",have,0); if (fwrite(out, 1, have, CompData) != have || ferror(CompData)) { (void)deflateEnd(&strm); ret = Z_STREAM_ERROR; //kludge break; } } while (strm.avail_out == 0); if(ret == Z_STREAM_ERROR) break; #if DEBUGFILES == 1 //store the raster for debugging - may need changing for colour if (dfp) fwrite(CupsLineBuffer, 1, header.cupsBytesPerLine, dfp); #endif } //end of line loop if(ret == Z_STREAM_ERROR) { DoLog("Compression error no %d\n",Z_ERRNO,0); } /* end of compression */ //put compressed byte count into output file and copy compressed data in (void)deflateEnd(&strm); DoLog("Compression finished\n",0,0); DoLog("Rewinding compressed page file\n",0,0); rewind(CompData); /* Old version sent data all in one go. This seems to cause a problem with smb shared printers. DoOutJob(PrintFile, "RasterObject.Data#%d=", strm.total_out,0); CheckCount=0; while((c=fgetc(CompData)) != EOF) { #if DEBUGFILES == 1 fputc(c,PrintFile); #endif #if TESTING == 0 fputc(c,stdout); #endif ++CheckCount; } DoOutJob(PrintFile, ";",0,0); //one semi colon after the data fflush(PrintFile); */ // New version with chunk size limit 15/1/12 CheckCount=0; BytesToPrint = strm.total_out; CurrentChunkSize = 0; while (BytesToPrint > 0) { if (BytesToPrint <= MAXDATACHUNK) { CurrentChunkSize = BytesToPrint; } else { CurrentChunkSize = MAXDATACHUNK; } //send one chunk of data DoOutJob(PrintFile, "RasterObject.Data#%d=", CurrentChunkSize,0); //if(cbarg != NULL) rc = fwrite(CurrentChunkStart, 1, CurrentChunkSize, cbarg); DoLog("GZIP data chunk is sent to printer\n",0,0); //rc = fwrite(CurrentChunkStart, 1, CurrentChunkSize, stdout); //also to output for(i=0;i 0) ShutdownPrinter(); /* * Close the raster stream... */ cupsRasterClose(ras); DoLog("cups raster closed after %d sec\n",time(NULL)-StartTime,0); if (fd != 0) close(fd); /* * Termination, send an error message if required... */ DoLog("c2espC terminating after %d sec. Processed %d pages\n",time(NULL)-StartTime,Page); if (Page == 0) { DoLog("ERROR: c2espC: No pages found!\n",0,0); return (1); } else { CloseLogging(); if(PrintFile != NULL) fclose(PrintFile); #if DEBUGFILES == 1 //let anyone read the files How much delay is needed if any? // sleep(3); //does this help chmod to work? chmod("/tmp/KodakCompPage", S_IRUSR | S_IWUSR | S_IROTH ); //let anyone read it chmod("/tmp/KodakPrintLog", S_IRUSR | S_IWUSR | S_IROTH ); //let anyone read it chmod("/tmp/KodakPrintFile", S_IRUSR | S_IWUSR | S_IROTH ); //let anyone read it #endif //cups seems to replace this by "Ready to print" so you don't see it //fprintf(stderr, "INFO: Done - Blk %d Col %d percent\n",BlackPercent, ColourPercent); fprintf(stderr, "INFO: Done\n"); return (0); } } c2esp27~rc1/ppd/Kodak_ESP_9.ppd000644 001750 001750 00000020326 12254101537 016276 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak ESP 9 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2012 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP9.ppd" *Product: "(Kodak ESP 9 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak ESP 9 AiO" *ShortNickName: "Kodak ESP 9 AiO" *NickName: "Kodak ESP 9 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMYK *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *cupsInkChannels: "4" *cupsInkLimit: "2.0" *cupsBlackGeneration: "0.0 0.0" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP 9 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsBackSide: "Rotated" *cupsVersion: 1.4 *cupsModelNumber: 9 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2esp" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x1200dpi/-: "1 1 1 0 0 -0.10000000149 1 0 0 -0.300000011921 1" *cupsColorProfile 600x1200dpi/-: "1 1.399999976158 1 -0.10000000149 0 -0.10000000149 1 0 0 -0.40000000596 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x1200dpi *Resolution 300x1200dpi/300x1200: "<>setpagedevice" *Resolution 600x1200dpi/600x1200: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: RGB *ColorModel RGB/Color: "<>setpagedevice" *ColorModel Gray/BlackAndWhite: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *Duplex/2-Sided Printing: PickOne *OrderDependency: 10 AnySetup *Duplex *DefaultDuplex: None *Duplex None/Off (1-Sided): "<>setpagedevice" *Duplex DuplexNoTumble/Long-Edge (Portrait): "<>setpagedevice" *Duplex DuplexTumble/Short-Edge (Landscape): "<>setpagedevice" *CloseUI: *Duplex *OpenUI *InputSlot/Media Source: PickOne *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: MainTray *InputSlot MainTray/MainTray: "<>setpagedevice" *InputSlot PhotoTray/PhotoTray: "<>setpagedevice" *CloseUI: *InputSlot *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP9.ppd, 08406 bytes. c2esp27~rc1/KodakESP_16.drv000644 001750 001750 00000023711 12254021053 015435 0ustar00paulpaul000000 000000 // // // Driver info file for PPDs. // Version for all dithered filter // // 1 dec 2013: ShortNickName added to stop ppdc warnings. // NickName and ShortNickName changed to ModelName to help Ubuntu auto identify printers. // It seems that the ShortNickName is used to build the database for system-config-printer? // But if there is no ShortNickName, NickName is used instead? // The first word of ShortNickName gets used for the maker in the database? // ppdc still gives warnings when short nickname is >31 chars (ESP41 and ESP61) // but it still builds the ppd files. I have not found a work around for this. // Include necessary files... #include #include // Common stuff for all drivers... Attribute "cupsVersion" "" "1.4" Attribute "FileSystem" "" "False" Attribute "LandscapeOrientation" "" "Plus90" Attribute "TTRasterizer" "" "Type42" Copyright "Copyright 2011-2012 by Paul Newall" Font * Version "1.6" // Kodak { Manufacturer "Eastman Kodak Company" //was Eastman Kodak DriverType custom ManualCopies Yes ColorDevice Yes Throughput 8 Attribute "cupsSNMPSupplies" "" "False" // hope to stop the "may not be connected" message VariablePaperSize Yes MinSize 36 36 MaxSize 1080 86400 Filter application/vnd.cups-raster 50 /usr/lib/cups/filter/c2esp Filter application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp Attribute "cupsCommands" "" "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" ColorDevice Yes Attribute DefaultColorSpace "" "CMYK" HWMargins 3 3 3 3 //1mm all round option "MediaSize" PickOne AnySetup 30 MediaSize Executive MediaSize Letter MediaSize Legal *MediaSize A4 MediaSize A5 MediaSize A6 MediaSize 8x10 MediaSize Photo4x6 //MediaSize 4x6 MediaSize EnvISOB5 MediaSize EnvC5 MediaSize EnvDL MediaSize Env10 option "Resolution" PickOne AnySetup 20 //Resolution colorspace bits-per-color row-count row-feed row-step name Choice 300x1200dpi/300x1200 "<>setpagedevice" *Choice 600x1200dpi/600x1200 "<>setpagedevice" //res/media dens gamma 3x3matrix // input // C M Y // o C 1 0 0 // u M 0 1 0 // t Y 0 0 1 ColorProfile 300x1200dpi/- 1.0 1.0 1.0 0.0 0.0 -0.1 1.0 0.0 0.0 -0.3 1.0 ColorProfile 600x1200dpi/- 1.0 1.4 //gamma above 1.0 works for 600dpi 1.0 -0.1 0.0 -0.1 1.0 0.0 0.0 -0.4 1.0 // Plain mapping for calibration tests // ColorProfile 300x1200dpi/- 1.0 1.0 // 1.0 0.0 0.0 // 0.0 1.0 0.0 // 0.0 0.0 1.0 // ColorProfile 600x1200dpi/- 1.0 1.7 //gamma 1.5 to 1.7 is good for dithered // 1.0 0.0 0.0 // 0.0 1.0 0.0 // 0.0 0.0 1.0 Attribute cupsInkChannels "" "4" Attribute cupsInkLimit "" "2.0" Attribute cupsBlackGeneration "" "0.0 0.0" Attribute "marker-colors" "" "black magenta" option "ColorModel" PickOne AnySetup 10 //ColorModel name colorspace colororder compression *ColorModel RGB/Color rgb chunky 0 ColorModel Gray/BlackAndWhite k chunky 0 //List of model names for reference //"KODAK ESP 9200 Series AiO" //"KODAK ESP 7200 Series AiO" //"KODAK ESP Office 6100 Series AiO" //"KODAK ESP Office 4100 Series AiO" //"KODAK ESP 5200 Series AiO" //"KODAK ESP 3200 Series AiO" //"KODAK ESP 9 AiO" //"KODAK ESP 7 AiO" //"KODAK ESP 5 AiO" //"KODAK ESP-3 AiO" //"KODAK 5100 AiO" //"KODAK 5300 AiO" //"KODAK 5500 AiO" // Kodak ESP 9 duplex { ModelName "Kodak ESP 9 AiO" Attribute NickName "" "Kodak ESP 9 AiO" Attribute ShortNickName "" "Kodak ESP 9 AiO" Attribute Product "" "(Kodak ESP 9 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP 9 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_9.ppd" PCFileName "KESP9.ppd" ModelNumber 9 Duplex rotated InputSlot 0 MainTray InputSlot 1 PhotoTray } // Kodak ESP 7 duplex { ModelName "Kodak ESP 7 AiO" Attribute NickName "" "Kodak ESP 7 AiO" Attribute ShortNickName "" "Kodak ESP 7 AiO" Attribute Product "" "(Kodak ESP 7 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP 7 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_7.ppd" PCFileName "KESP7.ppd" ModelNumber 7 Duplex rotated InputSlot 0 MainTray InputSlot 1 PhotoTray } // Kodak ESP 5 duplex { ModelName "Kodak ESP 5 AiO" Attribute NickName "" "Kodak ESP 5 AiO" Attribute ShortNickName "" "Kodak ESP 5 AiO" Attribute Product "" "(Kodak ESP 5 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP 5 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_5.ppd" PCFileName "KESP5.ppd" ModelNumber 5 InputSlot 0 MainTray } // Kodak ESP 3 { ModelName "Kodak ESP 3 AiO" Attribute NickName "" "Kodak ESP 3 AiO" Attribute ShortNickName "" "Kodak ESP 3 AiO" Attribute Product "" "(Kodak ESP 3 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP-3 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_3.ppd" PCFileName "KESP3.ppd" ModelNumber 3 InputSlot 0 MainTray } // Kodak ESP 3xxx Series without duplex { ModelName "Kodak ESP 3200 Series AiO" Attribute NickName "" "Kodak ESP 3200 Series AiO" Attribute ShortNickName "" "Kodak ESP 3200 Series AiO" Attribute Product "" "(Kodak ESP 3200 Series AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP 3200 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_32xx_Series.ppd" PCFileName "KESP32xx.ppd" ModelNumber 3250 } // Kodak ESP 52xx Series without duplex { ModelName "Kodak ESP 5200 Series AiO" Attribute NickName "" "Kodak ESP 5200 Series AiO" Attribute ShortNickName "" "Kodak ESP 5200 Series Aio" Attribute Product "" "(Kodak ESP 5200 Series AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP 5200 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_52xx_Series.ppd" PCFileName "KESP52xx.ppd" ModelNumber 5250 } // Kodak ESP 51xx Series optional duplex { ModelName "Kodak 5100 AiO" Attribute NickName "" "Kodak 5100 AiO" Attribute ShortNickName "" "Kodak 5100 AiO" Attribute Product "" "(Kodak 5100 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK 5100 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_51xx_Series.ppd" PCFileName "KESP51xx.ppd" ModelNumber 5100 Duplex rotated InputSlot 0 MainTray InputSlot 1 PhotoTray } // Kodak ESP 53xx Series optional duplex { ModelName "Kodak 5300 AiO" Attribute NickName "" "Kodak 5300 AiO" Attribute ShortNickName "" "Kodak 5300 AiO" Attribute Product "" "(Kodak 5300 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK 5300 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_53xx_Series.ppd" PCFileName "KESP53xx.ppd" ModelNumber 5300 Duplex rotated InputSlot 0 MainTray InputSlot 1 PhotoTray } // Kodak ESP 55xx Series with duplex { ModelName "Kodak 5500 AiO" Attribute NickName "" "Kodak 5500 AiO" Attribute ShortNickName "" "Kodak 5500 AiO" Attribute Product "" "(Kodak 5500 AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK 5500 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_55xx_Series.ppd" PCFileName "KESP55xx.ppd" ModelNumber 5500 // Duplex normal //reported that back side was upside down on 5500 // Duplex flip //reported that back side was mirror image on 5500 Duplex rotated InputSlot 0 MainTray InputSlot 1 PhotoTray } // Kodak ESP 41xx Series without duplex? { ModelName "Kodak ESP Office 4100 Series AiO" Attribute NickName "" "Kodak ESP Office 4100 Series AiO" Attribute ShortNickName "" "Kodak ESP Office 4100 Series AiO" //more than 31 chars? Attribute Product "" "(Kodak ESP Office 4100 Series AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP Office 4100 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_41xx_Series.ppd" PCFileName "KESP41xx.ppd" ModelNumber 4100 } // Kodak ESP 61xx Series with duplex { ModelName "Kodak ESP Office 6100 Series AiO" Attribute NickName "" "Kodak ESP Office 6100 Series AiO" Attribute ShortNickName "" "Kodak ESP Office 6100 Series AiO" //more than 31 chars? Attribute Product "" "(Kodak ESP Office 6100 Series AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP Office 6100 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_61xx_Series.ppd" PCFileName "KESP61xx.ppd" ModelNumber 6150 Duplex rotated } // Kodak ESP 72xx Series non-dithered/dithered with duplex and photo tray { ModelName "Kodak ESP 7200 Series AiO" Attribute NickName "" "Kodak ESP 7200 Series AiO" Attribute ShortNickName "" "Kodak ESP 7200 Series AiO" Attribute Product "" "(Kodak ESP 7200 Series AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP 7200 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_72xx_Series.ppd" PCFileName "KESP72xx.ppd" ModelNumber 7250 Duplex rotated InputSlot 0 MainTray InputSlot 1 PhotoTray } // Kodak ESP 92xx Series non-dithered/dithered with duplex and photo tray { ModelName "Kodak ESP 9200 Series AiO" Attribute NickName "" "Kodak ESP 9200 Series AiO" Attribute ShortNickName "" "Kodak ESP 9200 Series AiO" Attribute Product "" "(Kodak ESP 9200 Series AiO)" Attribute 1284DeviceID "" "MFG:Eastman Kodak Company;MDL:KODAK ESP 9200 Series AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" FileName "Kodak_ESP_92xx_Series.ppd" PCFileName "KESP92xx.ppd" ModelNumber 9250 Duplex rotated InputSlot 0 MainTray InputSlot 1 PhotoTray } } c2esp27~rc1/ppd/Kodak_ESP_3.2.ppd000644 000000 000000 00000016665 12254101537 016455 0ustar00rootroot000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for KODAK ESP 3.2 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2013 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP32.ppd" *Product: "(KODAK ESP 3.2 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company KODAK ESP 3.2 AiO" *ShortNickName: "KODAK ESP 3.2 AiO" *NickName: "KODAK ESP 3.2 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMY *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP 3.2 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsVersion: 1.4 *cupsModelNumber: -1 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2espC" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x300dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsColorProfile 600x600dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x600dpi *Resolution 300x300dpi/300x300: "<>setpagedevice" *Resolution 600x600dpi/600x600: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: CMY *ColorModel Gray/Grayscale: "<>setpagedevice" *ColorModel CMY/Color: "<>setpagedevice" *CloseUI: *ColorModel *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP32.ppd, 07605 bytes. c2esp27~rc1/ppd/Kodak_Hero_7.1.ppd000644 001750 001750 00000020106 12254101537 016675 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for KODAK HERO 7.1 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2013 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KHERO71.ppd" *Product: "(KODAK HERO 7.1 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company KODAK HERO 7.1 AiO" *ShortNickName: "KODAK HERO 7.1 AiO" *NickName: "KODAK HERO 7.1 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMY *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK HERO 7.1 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsBackSide: "Rotated" *cupsVersion: 1.4 *cupsModelNumber: -1 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2espC" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x300dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsColorProfile 600x600dpi/-: "1 1 1 0 0 0 1 0 0 0 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x600dpi *Resolution 300x300dpi/300x300: "<>setpagedevice" *Resolution 600x600dpi/600x600: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: CMY *ColorModel Gray/Grayscale: "<>setpagedevice" *ColorModel CMY/Color: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *Duplex/2-Sided Printing: PickOne *OrderDependency: 10 AnySetup *Duplex *DefaultDuplex: None *Duplex None/Off (1-Sided): "<>setpagedevice" *Duplex DuplexNoTumble/Long-Edge (Portrait): "<>setpagedevice" *Duplex DuplexTumble/Short-Edge (Landscape): "<>setpagedevice" *CloseUI: *Duplex *OpenUI *InputSlot/Media Source: PickOne *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: MainTray *InputSlot MainTray/MainTray: "<>setpagedevice" *InputSlot PhotoTray/PhotoTray: "<>setpagedevice" *CloseUI: *InputSlot *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KHERO71.ppd, 08262 bytes. c2esp27~rc1/ppd/Kodak_ESP_3.ppd000644 001750 001750 00000017422 12254101537 016273 0ustar00paulpaul000000 000000 *PPD-Adobe: "4.3" *%%%% PPD file for Kodak ESP 3 AiO with CUPS. *%%%% Created by the CUPS PPD Compiler CUPS v1.7rc1. *% Copyright 2011-2012 by Paul Newall *FormatVersion: "4.3" *FileVersion: "1.6" *LanguageVersion: English *LanguageEncoding: ISOLatin1 *PCFileName: "KESP3.ppd" *Product: "(Kodak ESP 3 AiO)" *Manufacturer: "Eastman Kodak Company" *ModelName: "Eastman Kodak Company Kodak ESP 3 AiO" *ShortNickName: "Kodak ESP 3 AiO" *NickName: "Kodak ESP 3 AiO" *PSVersion: "(3010.000) 0" *LanguageLevel: "3" *ColorDevice: True *DefaultColorSpace: CMYK *FileSystem: False *Throughput: "8" *LandscapeOrientation: Plus90 *TTRasterizer: Type42 *% Driver-defined attributes... *cupsSNMPSupplies: False *cupsCommands: "Clean PrintSelfTestPage PrintAlignmentPage ReportLevels" *cupsInkChannels: "4" *cupsInkLimit: "2.0" *cupsBlackGeneration: "0.0 0.0" *marker-colors: "black magenta" *1284DeviceID: "MFG:Eastman Kodak Company;MDL:KODAK ESP-3 AiO;CMD:OPL V1.00;CLS:PRINTER;DES:AIO;VER:1.00;" *cupsVersion: 1.4 *cupsModelNumber: 3 *cupsManualCopies: True *cupsFilter: "application/vnd.cups-raster 50 /usr/lib/cups/filter/c2esp" *cupsFilter: "application/vnd.cups-command 50 /usr/lib/cups/filter/command2esp" *cupsColorProfile 300x1200dpi/-: "1 1 1 0 0 -0.10000000149 1 0 0 -0.300000011921 1" *cupsColorProfile 600x1200dpi/-: "1 1.399999976158 1 -0.10000000149 0 -0.10000000149 1 0 0 -0.40000000596 1" *cupsLanguages: "en" *OpenUI *PageSize/Media Size: PickOne *OrderDependency: 10 AnySetup *PageSize *DefaultPageSize: A4 *PageSize Executive/Executive: "<>setpagedevice" *PageSize Letter/US Letter: "<>setpagedevice" *PageSize Legal/US Legal: "<>setpagedevice" *PageSize A4/A4: "<>setpagedevice" *PageSize A5/A5: "<>setpagedevice" *PageSize A6/A6: "<>setpagedevice" *PageSize 8x10/8 x 10: "<>setpagedevice" *PageSize Photo4x6/Photo: "<>setpagedevice" *PageSize EnvISOB5/Envelope B5: "<>setpagedevice" *PageSize EnvC5/Envelope C5: "<>setpagedevice" *PageSize EnvDL/Envelope DL: "<>setpagedevice" *PageSize Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageSize *OpenUI *PageRegion/Media Size: PickOne *OrderDependency: 10 AnySetup *PageRegion *DefaultPageRegion: A4 *PageRegion Executive/Executive: "<>setpagedevice" *PageRegion Letter/US Letter: "<>setpagedevice" *PageRegion Legal/US Legal: "<>setpagedevice" *PageRegion A4/A4: "<>setpagedevice" *PageRegion A5/A5: "<>setpagedevice" *PageRegion A6/A6: "<>setpagedevice" *PageRegion 8x10/8 x 10: "<>setpagedevice" *PageRegion Photo4x6/Photo: "<>setpagedevice" *PageRegion EnvISOB5/Envelope B5: "<>setpagedevice" *PageRegion EnvC5/Envelope C5: "<>setpagedevice" *PageRegion EnvDL/Envelope DL: "<>setpagedevice" *PageRegion Env10/Envelope #10 : "<>setpagedevice" *CloseUI: *PageRegion *DefaultImageableArea: A4 *ImageableArea Executive/Executive: "3 3 519 753" *ImageableArea Letter/US Letter: "3 3 609 789" *ImageableArea Legal/US Legal: "3 3 609 1005" *ImageableArea A4/A4: "3 3 592 839" *ImageableArea A5/A5: "3 3 417 592" *ImageableArea A6/A6: "3 3 294 417" *ImageableArea 8x10/8 x 10: "3 3 573 717" *ImageableArea Photo4x6/Photo: "3 3 285 429" *ImageableArea EnvISOB5/Envelope B5: "3 3 496 706" *ImageableArea EnvC5/Envelope C5: "3 3 456 646" *ImageableArea EnvDL/Envelope DL: "3 3 309 621" *ImageableArea Env10/Envelope #10 : "3 3 294 681" *DefaultPaperDimension: A4 *PaperDimension Executive/Executive: "522 756" *PaperDimension Letter/US Letter: "612 792" *PaperDimension Legal/US Legal: "612 1008" *PaperDimension A4/A4: "595 842" *PaperDimension A5/A5: "420 595" *PaperDimension A6/A6: "297 420" *PaperDimension 8x10/8 x 10: "576 720" *PaperDimension Photo4x6/Photo: "288 432" *PaperDimension EnvISOB5/Envelope B5: "499 709" *PaperDimension EnvC5/Envelope C5: "459 649" *PaperDimension EnvDL/Envelope DL: "312 624" *PaperDimension Env10/Envelope #10 : "297 684" *MaxMediaWidth: "1080" *MaxMediaHeight: "86400" *HWMargins: 3 3 3 3 *CustomPageSize True: "pop pop pop <>setpagedevice" *ParamCustomPageSize Width: 1 points 36 1080 *ParamCustomPageSize Height: 2 points 36 86400 *ParamCustomPageSize WidthOffset: 3 points 0 0 *ParamCustomPageSize HeightOffset: 4 points 0 0 *ParamCustomPageSize Orientation: 5 int 0 0 *OpenUI *Resolution/Resolution: PickOne *OrderDependency: 20 AnySetup *Resolution *DefaultResolution: 600x1200dpi *Resolution 300x1200dpi/300x1200: "<>setpagedevice" *Resolution 600x1200dpi/600x1200: "<>setpagedevice" *CloseUI: *Resolution *OpenUI *ColorModel/ColorModel: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: RGB *ColorModel RGB/Color: "<>setpagedevice" *ColorModel Gray/BlackAndWhite: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *InputSlot/Media Source: PickOne *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: MainTray *InputSlot MainTray/MainTray: "<>setpagedevice" *CloseUI: *InputSlot *DefaultFont: Courier *Font AvantGarde-Book: Standard "(1.05)" Standard ROM *Font AvantGarde-BookOblique: Standard "(1.05)" Standard ROM *Font AvantGarde-Demi: Standard "(1.05)" Standard ROM *Font AvantGarde-DemiOblique: Standard "(1.05)" Standard ROM *Font Bookman-Demi: Standard "(1.05)" Standard ROM *Font Bookman-DemiItalic: Standard "(1.05)" Standard ROM *Font Bookman-Light: Standard "(1.05)" Standard ROM *Font Bookman-LightItalic: Standard "(1.05)" Standard ROM *Font Courier: Standard "(1.05)" Standard ROM *Font Courier-Bold: Standard "(1.05)" Standard ROM *Font Courier-BoldOblique: Standard "(1.05)" Standard ROM *Font Courier-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica: Standard "(1.05)" Standard ROM *Font Helvetica-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Bold: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-BoldOblique: Standard "(1.05)" Standard ROM *Font Helvetica-Narrow-Oblique: Standard "(1.05)" Standard ROM *Font Helvetica-Oblique: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Bold: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-BoldItalic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Italic: Standard "(1.05)" Standard ROM *Font NewCenturySchlbk-Roman: Standard "(1.05)" Standard ROM *Font Palatino-Bold: Standard "(1.05)" Standard ROM *Font Palatino-BoldItalic: Standard "(1.05)" Standard ROM *Font Palatino-Italic: Standard "(1.05)" Standard ROM *Font Palatino-Roman: Standard "(1.05)" Standard ROM *Font Symbol: Special "(001.005)" Special ROM *Font Times-Bold: Standard "(1.05)" Standard ROM *Font Times-BoldItalic: Standard "(1.05)" Standard ROM *Font Times-Italic: Standard "(1.05)" Standard ROM *Font Times-Roman: Standard "(1.05)" Standard ROM *Font ZapfChancery-MediumItalic: Standard "(1.05)" Standard ROM *Font ZapfDingbats: Special "(001.005)" Special ROM *% End of KESP3.ppd, 07954 bytes. c2esp27~rc1/c2esp.txt000664 001750 001750 00000002573 11766204717 014614 0ustar00paulpaul000000 000000 Information document for the c2esp filter. ========================================== This is a cups raster filter to enable printing on Kodak ESP series AiO printers Version 2.5 (c2esp25) was significantly changed to allow better colour management. The following things can be changed in the ppd driver file to influence the colours. Attribute cupsInkLimit "" "2.0" This attribute limits the total amount of ink in a dark area (the sum of all the colours) is limited to the value given, eg 2.0 limits the total to two colours at full intensity, which saves ink and avoids creating very wet patches. ColorProfile 600x1200dpi/- 1.0 1.4 1.0 -0.1 0.0 -0.1 1.0 0.0 0.0 -0.4 1.0 On the line "ColorProfile..." the 1.0 is a density factor (value between 0.0 and 1.0), the 1.4 is gamma. Increasing gamma makes mid tones lighter. The 3x3 matrix that follows allows colours to be adjusted. It modifies the CMY levels as follows: input C M Y o C Cc Cm Cy u M Mc Mm My t Y Yc Ym Yy For example: Moutput = Mc*Cinput + Mm*Minput + My*Yinput I made Mc = -0.1 in order to make blue areas less purple. and Ym = -0.4 in order to make red areas less orange. Read more details at http://www.cups.org/documentation.php/doc-1.6/ref-ppdcfile.html There is a second profile for 300x1200dpi ColorProfile 300x1200dpi/- 1.0 1.0 1.0 0.0 0.0 -0.1 1.0 0.0 0.0 -0.3 1.0