diff --git a/ppd/PPD.pm b/ppd/PPD.pm index 14206f45364ece359c83ca0d5c18f3d5ef603f35..c1ec98f054ea4d3b876c5ca613bff888ee462a87 100644 --- a/ppd/PPD.pm +++ b/ppd/PPD.pm @@ -234,8 +234,8 @@ declare('f', define_head_group({ Key => 'p', Name => 'Product description' }); declare('p', [ 'Manufacturer', 'q!', undef ], - [ 'ModelName', 'q!', undef ], # default: copy Product - [ 'NickName', 'q!', undef ], # default: copy Product + [ 'ModelName', 'q!', undef ], # default: concatenate Manufacturer and Product + [ 'NickName', 'q!', undef ], # default: copy ModelName [ 'ShortNickName', 'q!', undef ], # default: copy NickName [ 'Product', 'q!', undef ], [ 'PSVersion', 'q!', undef ], @@ -405,16 +405,14 @@ sub emit_constraints() { } sub fill_defaults() { - my $model = get('ModelName'); - if (defined $model) { - maybe_set('Product', "($model)"); - maybe_set('NickName', $model); + my $mfg = get('Manufacturer'); + my $prod = get('Product'); + if (defined($mfg) && defined($prod)) { + maybe_set('ModelName', $mfg . ' ' . $prod); } - my $nick = get('NickName'); - if ($nick) { - maybe_set('ShortNickName', $nick); - } + maybe_set('NickName', get('ModelName')) if defined get('ModelName'); + maybe_set('ShortNickName', get('NickName')) if defined get('NickName'); my $psver = get('PSVersion'); if (defined($psver) && $psver =~ /\((\d)/) { diff --git a/ppd/gen-hp b/ppd/gen-hp index e509a3ca6511afec29885c30f7a96631004c8c42..351cf4a026693dd9d243ce6066c9b3e128d1ccd2 100755 --- a/ppd/gen-hp +++ b/ppd/gen-hp @@ -12,7 +12,7 @@ set('FileVersion', '1.0'); set('PCFileName', 'HP4350.PPD'); set('Manufacturer', 'HP'); -set('ModelName', 'HP LaserJet 4350'); +set('Product', 'LaserJet 4350'); set('PSVersion', '(3010.107) 0'); set('Throughput', 35); diff --git a/ppd/gen-phaser b/ppd/gen-phaser new file mode 100755 index 0000000000000000000000000000000000000000..a02dc56174c9b4548ad0824c1c3ae591a20303f7 --- /dev/null +++ b/ppd/gen-phaser @@ -0,0 +1,329 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use lib "."; +use PPD; +use PPD::PJL; +use PPD::Paper; + +set('FileVersion', '1.0'); +set('PCFileName', 'XR7400.PPD'); + +set('Manufacturer', 'Xerox'); +set('Product', 'Phaser 7400'); +set('PSVersion', '(3016.101) 3'); + +# *DefaultOutputOrder: Normal +# *AccurateScreensSupport: True +# *DefaultGuaranteedMaxSeparations: 4 + +set('Throughput', 35); +set('TTRasterizer', 'Type42'); +set('Protocols', 'PJL BCP TBCP'); +set('FileSystem', 1); + +set('ColorDevice', 1); +set('DefaultColorSpace', 'CMYK'); + +set('cupsProtocol', 'None'); + +# FIXME: JobPatchFile and magic there... + +define_ui_group({ Key => 'Basic', Name => 'Basic options' }); + +option({ + Key => 'Duplex', + Name => '2-Sided Printing', + Choice => 'PickOne', + Values => [ + { Key => 'None', Name => 'Off (1-Sided)', PS => "<< /Duplex false >> setpagedevice" }, + { Key => 'DuplexNoTumble', Name => 'Long-Edge Binding', PS => "<< /Duplex true /Tumble false >> setpagedevice", Default => 1 }, + { Key => 'DuplexTumble', Name => 'Short-Edge Binding', PS => "<< /Duplex true /Tumble true >> setpagedevice" }, + ] +}); + +option({ + Key => 'Resolution', + Name => 'Printer Resolution', + Choice => 'PickOne', + Priority => 5, + Section => 'DocumentSetup', + Values => [ + { Key => '1200x1200dpi', Name => 'ProRes 1200', PS => '<< /HWResolution [1200 1200] /PreRenderingEnhance false >> setpagedevice' }, + { Key => '600x600x2dpi', Name => 'FastRes 1200', PS => '<< /HWResolution [1200 1200] /PreRenderingEnhance true >> setpagedevice', Default => 1 }, + { Key => '600x600dpi', Name => '600 DPI', PS => '<< /HWResolution [600 600] /PreRenderingEnhance false >> setpagedevice' }, + ] +}); + +option({ + Key => 'Collate', + Choice => 'Boolean', + Values => [ + { Key => 'False', Name => 'Off', PS => '<< /Collate false >> setpagedevice' }, + { Key => 'True', Name => 'On', PS => '<< /Collate true >> setpagedevice', Default => 1 }, + ] +}); + +# FIXME: Jog + +PPD::PJL::add_jcl(); + +PPD::Paper::add_papers({ + MinW => 254.6, MaxW => 930.3, + MinH => 254.6, MaxH => 3456.5, + MarginH => 14.456, MarginV => 14.456, + PSPageSize => sub { my ($m) = @_; return sprintf("<< /PageSize [%d %d] >> setpagedevice", $m->{W}, $m->{H}); }, + # FIXME: LeadingEdge +}); +switch_group('Media'); + +option({ + Key => 'MediaType', + Name => 'Media Type', + Choice => 'PickOne', + Priority => 20, + Values => gen_values("<< /MediaType (%s) >> setpagedevice", + { Key => 'None', PS => '<< /MediaType null >> setpagedevice', Default => 1 }, + "Paper", + "HeavyPaper", + "Transparency", + "ThinCardStock", + "ThickCardStock", + "ThickCardStock", + "ExtraThickCardStock", + "Envelope", + "Label", + "Letterhead", + "CoatedPaper", + "Preprinted", + "Prepunched", + "ColoredPaper", + "Special", + ), +}); + +option({ + Key => 'InputSlot', + Name => 'Input Slot', + Choice => 'PickOne', + Priority => 20, + Values => [ + { Key => 'ManualFeed', Name => 'Tray 1 with manual feed', PS => '<< /ManualFeed true /MediaPosition 0 /TraySwitch false >> setpagedevice' }, + { Key => 'Tray1', Name => 'Tray 1', PS => '<< /ManualFeed false /MediaPosition 0 /TraySwitch false >> setpagedevice' }, + { Key => 'Tray2', Name => 'Tray 2', PS => '<< /ManualFeed false /MediaPosition 1 /TraySwitch false >> setpagedevice' }, + { Key => 'Tray3', Name => 'Tray 3', PS => '<< /ManualFeed false /MediaPosition 2 /TraySwitch false >> setpagedevice' }, + ], + Default => 'Tray2', +}); + +option({ + Key => 'OutputBin', + Name => 'Paper Destination', + Choice => 'PickOne', + Priority => 21, + Values => [ + { Key => 'TopBin', Name => 'Top Output Tray', PS => '<< /OutputType (Top Bin) >> setpagedevice' }, + { Key => 'LeftOutputTray', Name => 'Left Output Tray', PS => '<< /OutputType (Left Side Bin) >> setpagedevice' }, + ], + Default => 'TopBin', +}); + +option({ + Key => 'RequiresPageRegion', + Values => [{ Key => 'All', String => 'True' }], + Default => undef, +}); + +# FIXME: Update +constrain(undef, 'InputSlot', 'MediaType', sub { + my ($is, $mt) = @_; + return !(($is eq 'Tray2' || $is eq 'Tray3') && + ($mt eq 'Labels' || $mt eq 'Envelope')); +}); + +constrain(undef, 'Duplex', 'MediaType', sub { + my ($dp, $mt) = @_; + return !($dp ne 'None' && $mt =~ /^(Labels|Transparency|Bond)$/); +}); + +# FIXME: Replace by XRXMismatch +#option({ +# Key => 'HPPaperPolicy', +# Name => 'Fit to Page', +# Choice => 'PickOne', +# Priority => 10, +# Values => [ +# { Key => 'PromptUser', Name => 'PromptUser', PS => '', Default => 1 }, +# { Key => 'NearestSizeAdjust', Name => 'Nearest Size and Scale', PS => '<< /Policies << /DeferredMediaSelection true /PageSize 3 >> >> setpagedevice' }, +# { Key => 'NearestSizeNoAdjust', Name => 'Nearest Size and Crop', PS => '<< /Policies << /DeferredMediaSelection true /PageSize 5 >> >> setpagedevice' }, +# ], +#}); + +define_ui_group({ Key => 'Quality', Name => 'Print Quality / Color' }); + +option({ + Key => 'OutputMode', + Name => 'Print Quality', + Choice => 'PickOne', + Priority => 46, + Values => [ + { Key => 'Automatic', PS => 'true /RRCustomProcs /ProcSet findresource /setautopq get exec', Default => 1 }, + # FIXME: ValuesPerColorComponent etc. + { Key => 'Standard', PS => '<< /HWResolution [600 600] >> setpagedevice' }, + { Key => 'Enhanced', PS => '<< /HWResolution [600 1200] >> setpagedevice' }, + { Key => 'Photo', PS => '<< /HWResolution [600 600] >> setpagedevice' }, + ], +}); + +# FIXME: XRXColor, XRXGrayLine, XRXLightness, XRXSaturation, XRXContrast +# FIXME: XRXCyanRed, XRXMagentaGreen, XRXYellowBlue, XRXApplyToCMYK +# FIXME: XRXSmoothing, XRXPrintingOptimization + +# As reported by the printer +fonts( <<'AMEN' ); +AlbertusMT: Standard "(001.001)" Standard ROM +AlbertusMT-Italic: Standard "(001.001)" Standard ROM +AlbertusMT-Light: Standard "(001.001)" Standard ROM +AntiqueOlive-Bold: Standard "(001.002)" Standard ROM +AntiqueOlive-Compact: Standard "(001.002)" Standard ROM +AntiqueOlive-Italic: Standard "(001.002)" Standard ROM +AntiqueOlive-Roman: Standard "(001.002)" Standard ROM +Apple-Chancery: Standard "(001.002)" Standard ROM +Arial-BoldItalicMT: Standard "(001.003)" Standard ROM +Arial-BoldMT: Standard "(001.003)" Standard ROM +Arial-ItalicMT: Standard "(001.003)" Standard ROM +ArialMT: Standard "(001.003)" Standard ROM +ArialNarrowCyrMT: Special "(001.004)" Special ROM +ArialNarrowCyrMT-Bold: Special "(001.004)" Special ROM +AvantGarde-Book: Standard "(003.000)" Standard ROM +AvantGarde-BookOblique: Standard "(003.000)" Standard ROM +AvantGarde-Demi: Standard "(003.000)" Standard ROM +AvantGarde-DemiOblique: Standard "(003.000)" Standard ROM +Bodoni: Standard "(001.003)" Standard ROM +Bodoni-Bold: Standard "(001.003)" Standard ROM +Bodoni-BoldItalic: Standard "(001.003)" Standard ROM +Bodoni-Italic: Standard "(001.003)" Standard ROM +Bodoni-Poster: Standard "(001.003)" Standard ROM +Bodoni-PosterCompressed: Standard "(001.002)" Standard ROM +Bookman-Demi: Standard "(003.000)" Standard ROM +Bookman-DemiItalic: Standard "(003.000)" Standard ROM +Bookman-Light: Standard "(003.000)" Standard ROM +Bookman-LightItalic: Standard "(003.000)" Standard ROM +Carta: Special "(001.001)" Special ROM +Chicago: Standard "(001.000)" Standard ROM +Clarendon: Standard "(001.002)" Standard ROM +Clarendon-Bold: Standard "(001.002)" Standard ROM +Clarendon-Light: Standard "(001.002)" Standard ROM +CooperBlack: Standard "(001.004)" Standard ROM +CooperBlack-Italic: Standard "(001.004)" Standard ROM +Copperplate-ThirtyThreeBC: Standard "(001.003)" Standard ROM +Copperplate-ThirtyTwoBC: Standard "(001.003)" Standard ROM +Coronet-Regular: Standard "(001.002)" Standard ROM +Courier: Standard "(004.000)" Standard ROM +Courier-Bold: Standard "(004.000)" Standard ROM +Courier-BoldOblique: Standard "(004.000)" Standard ROM +Courier-Oblique: Standard "(004.000)" Standard ROM +Eurostile: Standard "(001.003)" Standard ROM +Eurostile-Bold: Standard "(001.002)" Standard ROM +Eurostile-BoldExtendedTwo: Standard "(001.003)" Standard ROM +Eurostile-ExtendedTwo: Standard "(001.003)" Standard ROM +Geneva: Standard "(001.000)" Standard ROM +GillSans: Standard "(001.003)" Standard ROM +GillSans-Bold: Standard "(001.002)" Standard ROM +GillSans-BoldCondensed: Standard "(001.002)" Standard ROM +GillSans-BoldItalic: Standard "(001.003)" Standard ROM +GillSans-Condensed: Standard "(001.002)" Standard ROM +GillSans-ExtraBold: Standard "(001.002)" Standard ROM +GillSans-Italic: Standard "(001.003)" Standard ROM +GillSans-Light: Standard "(001.002)" Standard ROM +GillSans-LightItalic: Standard "(001.003)" Standard ROM +Goudy: Standard "(001.004)" Standard ROM +Goudy-Bold: Standard "(001.003)" Standard ROM +Goudy-BoldItalic: Standard "(001.003)" Standard ROM +Goudy-ExtraBold: Standard "(001.002)" Standard ROM +Goudy-Italic: Standard "(001.003)" Standard ROM +Helvetica: Standard "(003.000)" Standard ROM +Helvetica-Bold: Standard "(003.000)" Standard ROM +Helvetica-BoldOblique: Standard "(003.000)" Standard ROM +Helvetica-Condensed: Standard "(003.000)" Standard ROM +Helvetica-Condensed-Bold: Standard "(003.000)" Standard ROM +Helvetica-Condensed-BoldObl: Standard "(003.000)" Standard ROM +Helvetica-Condensed-Oblique: Standard "(003.000)" Standard ROM +Helvetica-Narrow: Standard "(003.000)" Standard ROM +Helvetica-Narrow-Bold: Standard "(003.000)" Standard ROM +Helvetica-Narrow-BoldOblique: Standard "(003.000)" Standard ROM +Helvetica-Narrow-Oblique: Standard "(003.000)" Standard ROM +Helvetica-Oblique: Standard "(003.000)" Standard ROM +HoeflerText-Black: Standard "(001.000)" Standard ROM +HoeflerText-BlackItalic: Standard "(001.000)" Standard ROM +HoeflerText-Italic: Standard "(001.000)" Standard ROM +HoeflerText-Ornaments: Special "(001.001)" Special ROM +HoeflerText-Regular: Standard "(001.000)" Standard ROM +JoannaMT: Standard "(001.001)" Standard ROM +JoannaMT-Bold: Standard "(001.001)" Standard ROM +JoannaMT-BoldItalic: Standard "(001.001)" Standard ROM +JoannaMT-Italic: Standard "(001.001)" Standard ROM +LetterGothic: Standard "(001.005)" Standard ROM +LetterGothic-Bold: Standard "(001.007)" Standard ROM +LetterGothic-BoldSlanted: Standard "(001.006)" Standard ROM +LetterGothic-Slanted: Standard "(001.005)" Standard ROM +LubalinGraph-Book: Standard "(001.004)" Standard ROM +LubalinGraph-BookOblique: Standard "(001.004)" Standard ROM +LubalinGraph-Demi: Standard "(001.004)" Standard ROM +LubalinGraph-DemiOblique: Standard "(001.004)" Standard ROM +Marigold: Standard "(001.001)" Standard ROM +MonaLisa-Recut: Standard "(001.001)" Standard ROM +Monaco: Standard "(001.001)" Standard ROM +NewCenturySchlbk-Bold: Standard "(003.000)" Standard ROM +NewCenturySchlbk-BoldItalic: Standard "(003.000)" Standard ROM +NewCenturySchlbk-Italic: Standard "(003.000)" Standard ROM +NewCenturySchlbk-Roman: Standard "(003.000)" Standard ROM +NewYork: Standard "(001.000)" Standard ROM +Optima: Standard "(001.006)" Standard ROM +Optima-Bold: Standard "(001.007)" Standard ROM +Optima-BoldItalic: Standard "(001.001)" Standard ROM +Optima-Italic: Standard "(001.001)" Standard ROM +Oxford: Standard "(001.001)" Standard ROM +Palatino-Bold: Standard "(003.000)" Standard ROM +Palatino-BoldItalic: Standard "(003.000)" Standard ROM +Palatino-Italic: Standard "(003.000)" Standard ROM +Palatino-Roman: Standard "(003.000)" Standard ROM +StempelGaramond-Bold: Standard "(001.003)" Standard ROM +StempelGaramond-BoldItalic: Standard "(001.003)" Standard ROM +StempelGaramond-Italic: Standard "(001.003)" Standard ROM +StempelGaramond-Roman: Standard "(001.003)" Standard ROM +Symbol: Special "(001.008)" Special ROM +Tekton: Standard "(001.002)" Standard ROM +Times-Bold: Standard "(003.000)" Standard ROM +Times-BoldItalic: Standard "(003.000)" Standard ROM +Times-Italic: Standard "(003.000)" Standard ROM +Times-Roman: Standard "(003.000)" Standard ROM +TimesNewRomanPS-BoldItalicMT: Standard "(001.003)" Standard ROM +TimesNewRomanPS-BoldMT: Standard "(001.004)" Standard ROM +TimesNewRomanPS-ItalicMT: Standard "(001.003)" Standard ROM +TimesNewRomanPSMT: Standard "(001.003)" Standard ROM +Univers: Standard "(001.004)" Standard ROM +Univers-Bold: Standard "(001.004)" Standard ROM +Univers-BoldExt: Standard "(001.001)" Standard ROM +Univers-BoldExtObl: Standard "(001.001)" Standard ROM +Univers-BoldOblique: Standard "(001.004)" Standard ROM +Univers-Condensed: Standard "(001.003)" Standard ROM +Univers-CondensedBold: Standard "(001.002)" Standard ROM +Univers-CondensedBoldOblique: Standard "(001.002)" Standard ROM +Univers-CondensedOblique: Standard "(001.003)" Standard ROM +Univers-Extended: Standard "(001.001)" Standard ROM +Univers-ExtendedObl: Standard "(001.001)" Standard ROM +Univers-Light: Standard "(001.004)" Standard ROM +Univers-LightOblique: Standard "(001.004)" Standard ROM +Univers-Oblique: Standard "(001.004)" Standard ROM +Wingdings: Special "(001.001)" Special ROM +Wingdings-Regular: Special "(001.001)" Special ROM +ZapfChancery-MediumItalic: Standard "(003.000)" Standard ROM +ZapfDingbats: Special "(002.000)" Special ROM +AMEN + +# FIXME: Omitted configuration of halftoning + +generate();