From fbebd10fa0f2e26d2663018898081c68dcb24181 Mon Sep 17 00:00:00 2001 From: Joe Da Silva Date: Tue, 23 Jun 2026 22:34:21 -0700 Subject: [PATCH] f002zjs sync with upstream (for majority of files with no or minor changes) kdiff3 between {upstream} and {foo2zjs_with_hbpl1} to try get files closer together. Files with larger changes have not been touched yet. --- arm2hpdl | Bin 16824 -> 0 bytes arm2hpdl.1 | 220 ------- crd/zjs/prolog.ps | Bin 2114 -> 2066 bytes crd/zjs/screen1200.ps | Bin 11822 -> 11774 bytes foo2hbpl1 | Bin 26272 -> 0 bytes foo2hbpl1-wrapper | 577 ------------------ foo2hbpl1-wrapper.1 | 416 ------------- foo2hbpl1.1 | 244 -------- foo2hbpl2 | Bin 88392 -> 0 bytes foo2hbpl2-wrapper | 729 ----------------------- foo2hbpl2-wrapper.1 | 419 ------------- foo2hbpl2.1 | 384 ------------ foo2hiperc | Bin 95552 -> 0 bytes foo2hiperc-wrapper | 750 ------------------------ foo2hiperc-wrapper.1 | 393 ------------- foo2hiperc-wrapper.1in | 18 +- foo2hiperc-wrapper.in | 4 +- foo2hiperc.1 | 356 ----------- foo2hiperc.1in | 26 +- foo2hiperc.c | 12 +- foo2hp | Bin 95744 -> 0 bytes foo2hp.1 | 380 ------------ foo2hp.1in | 18 +- foo2hp.c | 4 +- foo2hp2600-wrapper | 819 -------------------------- foo2hp2600-wrapper.1 | 417 ------------- foo2hp2600-wrapper.1in | 18 +- foo2hp2600-wrapper.in | 4 +- foo2lava | Bin 92752 -> 0 bytes foo2lava-wrapper | 759 ------------------------ foo2lava-wrapper.1 | 411 ------------- foo2lava-wrapper.1in | 18 +- foo2lava.1 | 369 ------------ foo2lava.1in | 18 +- foo2oak | Bin 91208 -> 0 bytes foo2oak-wrapper | 732 ----------------------- foo2oak-wrapper.1 | 403 ------------- foo2oak-wrapper.1in | 18 +- foo2oak-wrapper.in | 4 +- foo2oak.1 | 376 ------------ foo2oak.1in | 18 +- foo2oak.c | 9 +- foo2qpdl | Bin 95648 -> 0 bytes foo2qpdl-wrapper | 756 ------------------------ foo2qpdl-wrapper.1 | 416 ------------- foo2qpdl-wrapper.1in | 22 +- foo2qpdl-wrapper.in | 4 +- foo2qpdl.1 | 381 ------------ foo2qpdl.1in | 20 +- foo2slx | Bin 87344 -> 0 bytes foo2slx-wrapper | 728 ----------------------- foo2slx-wrapper.1 | 372 ------------ foo2slx-wrapper.1in | 16 +- foo2slx-wrapper.in | 4 +- foo2slx.1 | 339 ----------- foo2slx.1in | 18 +- foo2slx.c | 4 +- foo2xqx | Bin 87272 -> 0 bytes foo2xqx-wrapper | 693 ---------------------- foo2xqx-wrapper.1 | 345 ----------- foo2xqx.1 | 344 ----------- foo2zjs | Bin 96864 -> 0 bytes foo2zjs-pstops | 177 ------ foo2zjs-pstops.1 | 230 -------- foo2zjs-wrapper | 971 ------------------------------- foo2zjs-wrapper.1 | 448 -------------- foo2zjs.1 | 410 ------------- getweb | 511 ---------------- gipddecode | Bin 67664 -> 0 bytes gipddecode.1 | 284 --------- gipddecode.1in | 2 +- gipddecode.c | 4 +- hbpldecode | Bin 76400 -> 0 bytes hbpldecode.1 | 385 ------------ hbpldecode.1in | 14 +- hipercdecode | Bin 67760 -> 0 bytes hipercdecode.1 | 345 ----------- hipercdecode.1in | 4 +- hipercdecode.c | 4 +- icc2ps/COPYING | 0 icc2ps/Makefile | 4 +- icc2ps/README | 0 icc2ps/cmscam02.c | 0 icc2ps/cmscam97.c | 0 icc2ps/cmscgats.c | 2 +- icc2ps/cmscnvrt.c | 0 icc2ps/cmserr.c | 0 icc2ps/cmsgamma.c | 0 icc2ps/cmsgmt.c | 0 icc2ps/cmsintrp.c | 0 icc2ps/cmsio1.c | 3 +- icc2ps/cmslut.c | 0 icc2ps/cmsmatsh.c | 4 +- icc2ps/cmsmtrx.c | 0 icc2ps/cmsnamed.c | 0 icc2ps/cmspack.c | 0 icc2ps/cmspcs.c | 0 icc2ps/cmsps2.c | 4 +- icc2ps/cmssamp.c | 0 icc2ps/cmswtpnt.c | 0 icc2ps/cmsxform.c | 0 icc2ps/foo2zjs-icc2ps | Bin 251816 -> 0 bytes icc2ps/foo2zjs-icc2ps.1 | 230 -------- icc2ps/foo2zjs-icc2ps.1in | 26 +- icc2ps/icc2ps.c | 4 +- icc2ps/icc34.h | 0 icc2ps/xgetopt.c | 0 jbig_ar.c | 17 +- lavadecode | Bin 67768 -> 0 bytes lavadecode.1 | 278 --------- lavadecode.1in | 4 +- msexpand | 4 +- oakdecode | Bin 67760 -> 0 bytes oakdecode.1 | 274 --------- oakdecode.1in | 2 +- opldecode | Bin 67840 -> 0 bytes opldecode.1 | 297 ---------- opldecode.1in | 12 +- opldecode.c | 4 +- osx-hotplug/osx-hplj-hotplug.1 | 41 -- osx-hotplug/osx-hplj-hotplug.1in | 4 +- osx-hotplug/osx-hplj-hotplug.m | 4 +- printer-profile.1 | 244 -------- printer-profile.1in | 10 +- qpdldecode | Bin 72168 -> 0 bytes qpdldecode.1 | 308 ---------- qpdldecode.1in | 8 +- qpdldecode.c | 6 +- slxdecode | Bin 67752 -> 0 bytes slxdecode.1 | 285 --------- slxdecode.1in | 2 +- slxdecode.c | 4 +- usb_printerid | Bin 16584 -> 0 bytes usb_printerid.1 | 226 ------- xqxdecode | Bin 67704 -> 0 bytes xqxdecode.1 | 287 --------- xqxdecode.1in | 4 +- zjsdecode | Bin 80224 -> 0 bytes zjsdecode.1 | 281 --------- zjsdecode.1in | 2 +- zjsdecode.c | 4 +- 141 files changed, 216 insertions(+), 20267 deletions(-) delete mode 100755 arm2hpdl delete mode 100644 arm2hpdl.1 delete mode 100755 foo2hbpl1 delete mode 100755 foo2hbpl1-wrapper delete mode 100644 foo2hbpl1-wrapper.1 delete mode 100644 foo2hbpl1.1 delete mode 100755 foo2hbpl2 delete mode 100755 foo2hbpl2-wrapper delete mode 100644 foo2hbpl2-wrapper.1 delete mode 100644 foo2hbpl2.1 delete mode 100755 foo2hiperc delete mode 100755 foo2hiperc-wrapper delete mode 100644 foo2hiperc-wrapper.1 delete mode 100644 foo2hiperc.1 delete mode 100755 foo2hp delete mode 100644 foo2hp.1 delete mode 100755 foo2hp2600-wrapper delete mode 100644 foo2hp2600-wrapper.1 delete mode 100755 foo2lava delete mode 100755 foo2lava-wrapper delete mode 100644 foo2lava-wrapper.1 delete mode 100644 foo2lava.1 delete mode 100755 foo2oak delete mode 100755 foo2oak-wrapper delete mode 100644 foo2oak-wrapper.1 delete mode 100644 foo2oak.1 delete mode 100755 foo2qpdl delete mode 100755 foo2qpdl-wrapper delete mode 100644 foo2qpdl-wrapper.1 delete mode 100644 foo2qpdl.1 delete mode 100755 foo2slx delete mode 100755 foo2slx-wrapper delete mode 100644 foo2slx-wrapper.1 delete mode 100644 foo2slx.1 delete mode 100755 foo2xqx delete mode 100755 foo2xqx-wrapper delete mode 100644 foo2xqx-wrapper.1 delete mode 100644 foo2xqx.1 delete mode 100755 foo2zjs delete mode 100755 foo2zjs-pstops delete mode 100644 foo2zjs-pstops.1 delete mode 100755 foo2zjs-wrapper delete mode 100644 foo2zjs-wrapper.1 delete mode 100644 foo2zjs.1 delete mode 100755 getweb delete mode 100755 gipddecode delete mode 100644 gipddecode.1 delete mode 100755 hbpldecode delete mode 100644 hbpldecode.1 delete mode 100755 hipercdecode delete mode 100644 hipercdecode.1 mode change 100755 => 100644 icc2ps/COPYING mode change 100755 => 100644 icc2ps/README mode change 100755 => 100644 icc2ps/cmscam02.c mode change 100755 => 100644 icc2ps/cmscam97.c mode change 100755 => 100644 icc2ps/cmscnvrt.c mode change 100755 => 100644 icc2ps/cmserr.c mode change 100755 => 100644 icc2ps/cmsgamma.c mode change 100755 => 100644 icc2ps/cmsgmt.c mode change 100755 => 100644 icc2ps/cmsintrp.c mode change 100755 => 100644 icc2ps/cmsio1.c mode change 100755 => 100644 icc2ps/cmslut.c mode change 100755 => 100644 icc2ps/cmsmatsh.c mode change 100755 => 100644 icc2ps/cmsmtrx.c mode change 100755 => 100644 icc2ps/cmsnamed.c mode change 100755 => 100644 icc2ps/cmspack.c mode change 100755 => 100644 icc2ps/cmspcs.c mode change 100755 => 100644 icc2ps/cmsps2.c mode change 100755 => 100644 icc2ps/cmssamp.c mode change 100755 => 100644 icc2ps/cmswtpnt.c mode change 100755 => 100644 icc2ps/cmsxform.c delete mode 100755 icc2ps/foo2zjs-icc2ps delete mode 100644 icc2ps/foo2zjs-icc2ps.1 mode change 100755 => 100644 icc2ps/icc2ps.c mode change 100755 => 100644 icc2ps/icc34.h mode change 100755 => 100644 icc2ps/xgetopt.c delete mode 100755 lavadecode delete mode 100644 lavadecode.1 delete mode 100755 oakdecode delete mode 100644 oakdecode.1 delete mode 100755 opldecode delete mode 100644 opldecode.1 delete mode 100644 osx-hotplug/osx-hplj-hotplug.1 delete mode 100644 printer-profile.1 delete mode 100755 qpdldecode delete mode 100644 qpdldecode.1 delete mode 100755 slxdecode delete mode 100644 slxdecode.1 delete mode 100755 usb_printerid delete mode 100644 usb_printerid.1 delete mode 100755 xqxdecode delete mode 100644 xqxdecode.1 delete mode 100755 zjsdecode delete mode 100644 zjsdecode.1 diff --git a/arm2hpdl b/arm2hpdl deleted file mode 100755 index af0caceff6a8608c99e9d5a1dd28f6a030c43343..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16824 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 UOViY$B1OMkYicZU7&ut*UscD$&;S4c diff --git a/arm2hpdl.1 b/arm2hpdl.1 deleted file mode 100644 index 182176d..0000000 --- a/arm2hpdl.1 +++ /dev/null @@ -1,220 +0,0 @@ -'\" t -'\" -'\" DO NOT EDIT! This file is generated from arm2hpdl.1in -'\" -.TH arm2hpdl 1 "Sun May 26 18:25:20 2024" "arm2hpdl 0.0" -'\" -'\" -'\"========================================================================== -'\" STRINGS and MACROS -'\"========================================================================== -'\" -'\" Define strings for special characters that nroff doesn't have -'\" -'\" N.B. using .if cua to test for special characters did not work. -'\" -.if !'\*[.T]'ps' .ds ua up -.if '\*[.T]'ps' .ds ua \(ua -.if !'\*[.T]'ps' .ds da down -.if '\*[.T]'ps' .ds da \(da -.if !'\*[.T]'ps' .ds <- left -.if '\*[.T]'ps' .ds <- \(<- -.if !'\*[.T]'ps' .ds -> right -.if '\*[.T]'ps' .ds -> \(-> -'\" -'\" bx - box a Courier string for making keycaps -'\" -'\" N.B. this mess is to make the line drawing come out only -'\" if we are really generating postscript -'\" -.de bx -.ie !'\*[.T]'ps' \{\ -. RB [ \\$1 ]\\$2 -.\} -.el \{\ -. ie !r ps4html \{\ -'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' -. ft CW -. nr par*bxw \w'\\$1'+.4m -\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ -\Z'\h'.2m'\s-1\\$1\s+1'\ -\h'\\n[par*bxw]u'\\$2 -. ft P -. \} -. el \{\ -. RB [ \\$1 ]\\$2 -. \} -.\} -.. -'\" -'\" strings to set current color (null with old groff) -'\" -.if mred .ds red \m[red] -.if mgreen .ds green \m[green] -.if mblue .ds blue \m[blue] -.if mblack .ds black \m[black] -.if mblack .ds mP \mP -'\" -'\" fix for grotty + xterm. We call for orange, grotty outputs yellow, -'\" but xterm displays yellow as orange. The cycle is complete. -'\" -.if n .defcolor orange rgb #ffff00 -'\" -'\" color - set the current color (ignores request with old groff) -'\" -.de color -.if mred \m[\\$1]\c -.. -'\" -'\" colorword - colorize a word (ignored by old groff) -'\" -.de colorword -.ie m\\$1 \m[\\$1]\\$2\mP\c -.el \\$2\c -.. -'\" -'\" colbox - colorize a word in a filled box -'\" -.de colbox -.ie mred \M[\\$2]\ -\v'+.167v'\ -\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ -\v'-.167v'\ -\m[\\$1]\\$3\mP\MP -.el \\$3\c -.. -'\" -'\" Macros for doing pdfmarks -'\" -.de specialps -.if '\*[.T]'ps' \\k_\X'ps: \\$*'\h'|\\n_u'\c -.. -'\" -'\" pdfmark PDFMARKCODE -'\" -.ds pdfmarks -.if d pdfmarks \{\ -.de pdfmark -. specialps exec [\\$1 pdfmark -.. -'\" -'\" pdfdest LINKNAME -'\" -.de pdfdest -.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" -.. -'\" -'\" pdfbookmark COUNT LINKNAME STRING -'\" -.de pdfbookmark -. pdfmark "/View [/XYZ 44 730 1.0] /Count \\$1 /Dest /\\$2 /Title (\\$3) /OUT" -.. -'\" -'\" Define the SH and SS macros to save pdfmark information -'\" in "arrays" of numbers and strings. -'\" -.if !r rr_n \{\ -.nr rr_n 0 1 -.am SH -. nr rr_levels!\\n+[rr_n] 2 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.am SS -. nr rr_levels!\\n+[rr_n] 3 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.\} -'\" -'\" Called at the end of the document to generate the pdfmark outline -'\" -.de pdf_outline -.nr rr_levels!\\n+[rr_n] 1 -.nr rr_i 0 1 -.while \\n+[rr_i]<\\n[rr_n] \{\ -. nr rr_ip1 \\n[rr_i]+1 -. nr rr_count 0 -. if \\n[rr_levels!\\n[rr_ip1]]>\\n[rr_levels!\\n[rr_i]] \{\ -. nr rr_j \\n[rr_i] 1 -. while \\n+[rr_j]<\\n[rr_n] \{\ -. if \\n[rr_levels!\\n[rr_j]]<=\\n[rr_levels!\\n[rr_i]] \{\ -. break -. \} -. if \\n[rr_levels!\\n[rr_j]]==(\\n[rr_levels!\\n[rr_i]]+1) \{\ -. nr rr_count \\n[rr_count]+1 -. \} -. \} -. \} -. ds hhh \\*[rr_labels!\\n[rr_i]] -. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" -.\} -.. -'\" -'\" Some postscript to make pdfmarks harmless on old interpreters... -'\" -.specialps "def /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse" -'\" -'\" Force display of Bookmarks in Acrobat when document is viewed. -'\" -.pdfmark "[/PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW" -'\" -'\" Output the document info in pdfmarks -'\" -.pdfmark "\ - /Title (\*[an-title](\*[an-section])) \ - /Subject (\*[an-title] Manual Page) \ - /Author (Rick Richardson) \ - /Keywords (printing) \ - /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ - /CreationDate (\*[an-extra1]) \ - /ModDate (\*[an-extra1]) \ - /DOCINFO" -\} -'\" -'\" The manual page name is only 1st level mark -'\" -.nr rr_levels!\n+[rr_n] 1 -.ds rr_labels!\n[rr_n] \*[an-title](\*[an-section]) -.pdfdest Link\n[rr_n] -'\" -'\"========================================================================== -'\" MANUAL PAGE SOURCE -'\"========================================================================== -.SH NAME -arm2hpdl \- Add HP download header/trailer to an ARM ELF binary. -.SH SYNOPSIS -.B arm2hpdl -.RI [ options "] arm-binary.img > hpdl.dl" -.SH DESCRIPTION -.B arm2hpdl -adds an HP download header/trailer to an ARM ELF binary. -If the file already has an HP header, just copy it to stdout. -.SH COMMAND LINE OPTIONS -These are the options that can appear on the command line. -.TP -.BI \-D\0 level -Set Debug level [0]. - -.SH EXAMPLES -Add an HPDL header to a HP LaserJet 1005. - -.nf -.ft CW -$ arm2hpdl sihp1005.img > sihp1005.dl -.ft P -.fi - -.SH FILES -.BR /usr/bin/arm2hpdl, -.BR /usr/share/foo2*/firmware/ -.SH SEE ALSO -.BR foo2zjs (1) -.SH "AUTHOR" -Rick Richardson -.br -http://foo2zjs.rkkda.com/ -'\" -'\" -'\" -.em pdf_outline diff --git a/crd/zjs/prolog.ps b/crd/zjs/prolog.ps index 4b879228a7b14ea9a19f5a96bf4666c0b63956e8..cebce2d2d7febf9deb3430f70921864072c5acb4 100644 GIT binary patch delta 50 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

+wS^28H@zif>HyUZ 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 IPaG@!H<>-RHUIzs diff --git a/foo2hbpl1-wrapper b/foo2hbpl1-wrapper deleted file mode 100755 index 474972d..0000000 --- a/foo2hbpl1-wrapper +++ /dev/null @@ -1,577 +0,0 @@ -#!/bin/sh - -#* Copyright (C) 2013 Rick Richardson -#* -#* 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. -#* -#* Authors: Rick Richardson - -VERSION='$Id: foo2hbpl1-wrapper.in,v 1.3 2014/03/24 23:14:24 rick Exp $' - -# -# Printer Notes: -# -# Dell 1250c -# Dell C1660w -# Dell C1760w -# Epson AcuLaser C1700 -# Fuji-Xerox DocuPrint CP105b -# - -PROGNAME="$0" -BASENAME=`basename $PROGNAME` -PREFIX=/usr -SHARE=$PREFIX/share/foo2hbpl -PATH=$PATH:/sw/bin:/opt/local/bin - -# -# Log the command line, for debugging and problem reports -# -if [ -x /usr/bin/logger -o -x /bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" &2 - exit 1 -} - -dbgcmd() { - if [ $DEBUG -ge 1 ]; then - echo "$@" >&2 - fi - "$@" -} - -# -# N-up-ify the job. Requires psnup from psutils package -# -nup() { - case "$NUP" in - [2368]|1[0458]) - tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q - ;; - [49]|1[26]) - tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q - ;; - *) - error "Illegal call to nup()." - ;; - esac -} - -# -# Process the options -# - -# Try to use a local copy of GhostScript 8.54, if available. Otherwise, -# fallback to whatever the Linux distro has installed (usually 7.07) -# -# N.B. := operator used here, when :- would be better, because "ash" -# doesn't have :- -if eval gs.foo -v >/dev/null 2>&1; then - GSBIN=${GSBIN:-gs.foo} -else - GSBIN=${GSBIN:-gs} -fi - -CMDLINE="$*" -DEBUG=0 -COLOR= -COLORMODE=default -MODEL=0 -MEDIA=1 # plain -COPIES=1 -PAPER=letter -RES=600x600 # do not change this -SOURCE=1 -NUP= -CLIP_ALL= -BC= -AIB= -NOPLANES= -COLOR2MONO= -GAMMAFILE=default -INTENT=0 -GSOPTS= -EXTRAPAD= -SAVETONER= -NUP_ORIENT= -GSDEV=-sDEVICE=pgmraw -# What mode to use if the user wants us to pick the "best" mode -case `$GSBIN --version` in -7*) DEFAULTCOLORMODE=10 - DEFAULTCOLORMODE=1 - ;; -8.1*) - DEFAULTCOLORMODE=1 - QUALITY=1 - ;; -*) DEFAULTCOLORMODE=1 - ;; -esac -while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:s:tz:ABS:D:G:I:PX:Vh?" opt -do - case $opt in - b) GSBIN="$OPTARG";; - c) COLOR=-c;; - d) DUPLEX="$OPTARG";; - g) GSOPTS="$GSOPTS $OPTARG";; - m) MEDIA="$OPTARG";; - n) COPIES="$OPTARG";; - p) PAPER="$OPTARG";; - q) QUALITY="$OPTARG";; - s) SOURCE="$OPTARG";; - t) SAVETONER="-t";; - z) MODEL="$OPTARG";; - u) CLIP_ALL="-u $OPTARG";; - A) AIB=-A;; - B) BC=-B;; - C) COLORMODE="$OPTARG";; - S) COLOR2MONO="-S$OPTARG";; - D) DEBUG="$OPTARG";; - G) GAMMAFILE="$OPTARG";; - I) INTENT="$OPTARG";; - P) NOPLANES=-P;; - X) EXTRAPAD="-X $OPTARG";; - [234689]) NUP="$opt";; - [57]) error "Can't find acceptable layout for $opt-up";; - 1) case "$OPTARG" in - [024568]) NUP="1$OPTARG";; - *) error "Can't find acceptable layout for 1$OPTARG-up";; - esac - ;; - o) case "$OPTARG" in - l*) NUP_ORIENT=-l;; - s*) NUP_ORIENT=-r;; - p*|*) NUP_ORIENT=;; - esac;; - V) echo "$VERSION"; foo2hbpl -V; foo2zjs-pstops -V; exit 0;; - h|\?) - if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then - echo "Illegal command:" - echo " $0 $CMDLINE" - echo - fi - usage;; - esac -done -shift `expr $OPTIND - 1` - -# -# If there is an argument left, take it as the file to print. -# Else, the input comes from stdin. -# -if [ $# -ge 1 ]; then - if [ "$LPJOB" = "" ]; then - : # LPJOB="$1" - fi - exec < $1 -fi - -# -# Validate media code -# -case "$MEDIA" in -1|plain) MEDIA=1;; -2|bond) MEDIA=2;; -3|lwcard) MEDIA=3;; -4|lwgcard) MEDIA=4;; -5|labels) MEDIA=5;; -6|envelope) MEDIA=6;; -7|recycled) MEDIA=7;; -8|plain2) MEDIA=8;; -9|bond2) MEDIA=9;; -10|lwcard2) MEDIA=10;; -11|lwgcard2) MEDIA=11;; -12|recycled2) MEDIA=12;; -[0-9]*) ;; -*) error "Unknown media code $MEDIA";; -esac - -# -# Validate source (InputSlot) code -# -case "$SOURCE" in -1|auto) SOURCE=1;; -2|manual) SOURCE=2;; -3|multi) SOURCE=3;; -4|tray1) SOURCE=4;; -[0-9]*) ;; -*) error "Unknown source code $SOURCE";; -esac - -# -# Figure out the paper dimensions in pixels/inch, and set the -# default clipping region. Unfortunately, this is a trouble -# area for ZjStream printers. Various versions of ZjS print -# engines react differently when asked to print into their -# unprintable regions. -# -set_clipping() { - - # Set clipping region if it isn't already set - if [ "$CLIP_ALL" = "" ]; then - CLIP_ALL="-u $1,$2,$3,$4" - fi -} - -case "$PAPER" in -Custom*x*) - # Command line only - XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` - YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` - if [ "$XDIM" = "" -o "$YDIM" = "" ]; then - error "Custom page size '$PAPER' != 1-99999" - fi - if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then - error "Custom page size '$PAPER' != 1-99999" - fi - XDIM=`dc -e "$XDIM 600* 72/p"` - YDIM=`dc -e "$YDIM 600* 72/p"` - PAPER=21; paper=letter; - DIM="${XDIM}x${YDIM}" - ;; -Custom*) - #%%BeginFeature: *CustomPageSize True - #216 - #360 - #0 - #0 - #0 - #pop pop pop pop pop - - #%%BeginFeature: *CustomPageSize True - #792.000000 612.000000 1 0.000000 0.000000 - #pop pop pop pop pop - - if [ $DEBUG = 0 ]; then - TMPFILE=/tmp/cus$$ - else - TMPFILE=/tmp/custom.ps - fi - cat >$TMPFILE - exec <$TMPFILE - - tmp=`head -n 10000 $TMPFILE \ - | sed -n '/CustomPageSize/{n;p;n;p;}' \ - | tr '\n' ' '` - case "$tmp" in - [0-9]*\ [0-9]*) - XDIM=`echo "$tmp" | sed 's/ .*//'` - YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` - ;; - *) - if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi - error "Custom page size [XY]DIM != 1-99999" - ;; - esac - XDIM=`dc -e "$XDIM 600* 72/p"` - YDIM=`dc -e "$YDIM 600* 72/p"` - PAPER=21; paper=letter; - DIM="${XDIM}x${YDIM}" - ;; - -# Use names that Ghostscript recognizes, referring to -# /usr/share/ghostscript/9.10/Resource/Init/gs_statd.ps -# foo2hbpl1 will provide the appropriate numeric value - -4|letter|Letter) DIM=5100x6600 ;; -7|legal|Legal) DIM=5100x8400 ;; -1|a4|A4) DIM=4961x7016 ;; -5|executive|Executive) DIM=4350x6300 ;; -9|env10|Env10) DIM=2475x5700 ;; -10|monarch|EnvMonarch) DIM=2325x4500 ;; -11|c5|EnvC5) DIM=3827x5409 ;; -12|envDL|EnvDL) DIM=2599x5197 ;; -isob5|b5) DIM=4158x5906 ;; -2|jisb5|B5jis) DIM=4299x6071 ;; -3|a5|A5) DIM=3496x4961 ;; -6|folio|Folio) DIM=5100x7800 ;; -pa4) DIM=4961x6600 ;; -archA) DIM=5400x7200 ;; -*) error "Unimplemented paper code $PAPER";; -esac - -#set_clipping 47 48 51 46 # exact values for Dell C1660w on letter paper - set_clipping 51 51 51 51 # default is 0.085 inches all around - -PAPERSIZE="-sPAPERSIZE=$PAPER"; - -# -# Filter thru psnup if N-up printing has been requested -# -case $NUP in -[234689]|1[024568]) PREFILTER="nup";; -*) PREFILTER=cat;; -esac -if [ "$DEBUG" -ge 9 ]; then - PREFILTER="tee /tmp/$BASENAME.ps" -fi - -# -# Overload -G. If the file name ends with ".icm" or ".ICM" -# then convert the ICC color profile to a Postscript CRD, -# then prepend it to the users job. Select the intent -# using the -I option. -# - -create_crd() { - # - # Create a Postscript CRD - # - ICC2PS=$PREFIX/bin/foo2zjs-icc2ps - if [ -x $ICC2PS ]; then - case "$GAMMAFILE" in - none | none.icm | */none.icm) - ;; - *) - if [ -x /usr/bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- \ - "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" - fi - $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ - || error "Problem converting .ICM file to Postscript" - ;; - esac - - PSTOPS_OPTS="$PSTOPS_OPTS -c" - cat > $ICCTMP.usecie.ps <<-EOF - %!PS-Adobe-3.0 - <>setpagedevice - EOF - if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then - if [ "$QUALITY" = wts ]; then - cat >> $ICCTMP.usecie.ps <<-EOF - << /UseWTS true >> setuserparams - EOF - else - cat >> $ICCTMP.usecie.ps <<-EOF - << /UseWTS false >> setuserparams - EOF - fi - cat >> $ICCTMP.usecie.ps <<-EOF - << - /AccurateScreens true - /HalftoneType 1 - /HalftoneName (Round Dot Screen) cvn - /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} - /Frequency 137 - /Angle 37 - >> sethalftone - EOF - fi - cat > $ICCTMP.selcrd.ps <<-EOF - /Current /ColorRendering findresource setcolorrendering - EOF - case "$GAMMAFILE" in - none | none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; - *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; - esac - else - GAMMAFILE= - fi -} - -if [ $DEBUG -gt 0 ]; then - ICCTMP=/tmp/icc -else - ICCTMP=/tmp/icc$$ -fi - -if [ "" = "$COLOR" ]; then - COLORMODE= - GAMMAFILE= -else - case "$COLORMODE" in - default) COLORMODE=$DEFAULTCOLORMODE;; - esac - case "$GAMMAFILE" in - default) GAMMAFILE=samclp300-0.icm;; - esac -fi - -CRDBASE="$PREFIX/share/foo2hbpl/crd" -case "$MODEL" in - 0) model=CLP-300;; - 1) model=CLP-600;; - 2) model=CLP-600;; - 3) model=CLP-600;; -esac - -PSTOPS_OPTS="-n" - -case "$COLORMODE" in -0|"") - # Monochrome - ;; -10|icm) - # Use old ICM method - AIB=-A - BC=-B - case "$GAMMAFILE" in - none | none.icm | */none.icm) - create_crd - ;; - *.icm|*.ICM|*.icc|*.ICC) - # - # Its really an .ICM file, not a gamma file. - # - # The file can be a full path name, or the name of a file in $SHARE/icm/ - # - if [ -r "$GAMMAFILE" ]; then - create_crd - elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then - GAMMAFILE="$SHARE/icm/$GAMMAFILE" - create_crd - else - GAMMAFILE= - fi - ;; - esac - ;; -1|crd) - # CRD - GAMMAFILE="" - GAMMAFILE="$GAMMAFILE $CRDBASE/${model}cms" - GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" - # Black text... - TMPFILE2=/tmp/black$$ - cat $CRDBASE/black-text.ps - >$TMPFILE2 - exec <$TMPFILE2 - ;; -*.crd) - GAMMAFILE="$CRDBASE/prolog.ps" - if [ -f $COLORMODE ]; then - GAMMAFILE="$GAMMAFILE $COLORMODE" - elif [ -f $CRDBASE/$COLORMODE ]; then - GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" - else - error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" - fi - GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" - ;; -*) - error "Unknown color method '$COLORMODE'" - ;; -esac - -if [ "" != "$COLOR" ]; then - GSDEV=-sDEVICE=pamcmyk32 - $GSBIN --help | grep -q pamcmyk32 || GSDEV=-sDEVICE=ppmraw -fi - -# -# Figure out USERNAME -# -if [ "$LPUSER" != "" ]; then - USER="$LPUSER@$LPHOST" -else - USER="" -fi - -# -# Main Program, just cobble together the pipeline and run it -# -# The malarky with file descriptors 1 and 3 is to avoid a bug in -# (some versions?) of Ghostscript where Postscript's stdout gets -# intermingled with the printer drivers output, resulting in -# corrupted image data. -# -GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" - -foo2zjs-pstops $PSTOPS_OPTS | \ -$PREFILTER \ -| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ - -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null) 3>&1 \ -| foo2hbpl1 -m$MEDIA $CLIP_ALL -J "$LPJOB" -U "$USER" - -# -# Log the command line, for debugging and problem reports -# -if [ -x /usr/bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- \ - "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" - logger -t "$BASENAME" -p lpr.info -- \ - "foo2hbpl1 -m$MEDIA $CLIP_ALL" -fi - -# -# Remove cruft -# -if [ $DEBUG -eq 0 ]; then - for i in crd.ps log usecie.ps selcrd.ps - do - file="$ICCTMP.$i" - [ -f $file ] && rm -f $file - done - [ -f "$TMPFILE" ] && rm -f $TMPFILE - [ -f "$TMPFILE2" ] && rm -f $TMPFILE2 -fi - -exit 0 diff --git a/foo2hbpl1-wrapper.1 b/foo2hbpl1-wrapper.1 deleted file mode 100644 index d9c3f24..0000000 --- a/foo2hbpl1-wrapper.1 +++ /dev/null @@ -1,416 +0,0 @@ -'\" t -'\" -'\" DO NOT EDIT! This file is generated from foo2hbpl1-wrapper.1in -'\" -'\" t -.TH foo2hbpl1-wrapper 1 "Sun May 26 18:25:20 2024" "foo2hbpl1-wrapper 0.0" -'\" -'\" -'\"========================================================================== -'\" STRINGS and MACROS -'\"========================================================================== -'\" -'\" Define strings for special characters that nroff doesn't have -'\" -'\" N.B. using .if cua to test for special characters did not work. -'\" -.if !'\*[.T]'ps' .ds ua up -.if '\*[.T]'ps' .ds ua \(ua -.if !'\*[.T]'ps' .ds da down -.if '\*[.T]'ps' .ds da \(da -.if !'\*[.T]'ps' .ds <- left -.if '\*[.T]'ps' .ds <- \(<- -.if !'\*[.T]'ps' .ds -> right -.if '\*[.T]'ps' .ds -> \(-> -'\" -'\" bx - box a Courier string for making keycaps -'\" -'\" N.B. this mess is to make the line drawing come out only -'\" if we are really generating postscript -'\" -.de bx -.ie !'\*[.T]'ps' \{\ -. RB [ \\$1 ]\\$2 -.\} -.el \{\ -. ie !r ps4html \{\ -'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' -. ft CW -. nr par*bxw \w'\\$1'+.4m -\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ -\Z'\h'.2m'\s-1\\$1\s+1'\ -\h'\\n[par*bxw]u'\\$2 -. ft P -. \} -. el \{\ -. RB [ \\$1 ]\\$2 -. \} -.\} -.. -'\" -'\" strings to set current color (null with old groff) -'\" -.if mred .ds red \m[red] -.if mgreen .ds green \m[green] -.if mblue .ds blue \m[blue] -.if mblack .ds black \m[black] -.if mblack .ds mP \mP -'\" -'\" fix for grotty + xterm. We call for orange, grotty outputs yellow, -'\" but xterm displays yellow as orange. The cycle is complete. -'\" -.if n .defcolor orange rgb #ffff00 -'\" -'\" color - set the current color (ignores request with old groff) -'\" -.de color -.if mred \m[\\$1]\c -.. -'\" -'\" colorword - colorize a word (ignored by old groff) -'\" -.de colorword -.ie m\\$1 \m[\\$1]\\$2\mP\c -.el \\$2\c -.. -'\" -'\" colbox - colorize a word in a filled box -'\" -.de colbox -.ie mred \M[\\$2]\ -\v'+.167v'\ -\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ -\v'-.167v'\ -\m[\\$1]\\$3\mP\MP -.el \\$3\c -.. -'\" -'\" Macros for doing pdfmarks -'\" -.de specialps -.if '\*[.T]'ps' \\k_\X'ps: \\$*'\h'|\\n_u'\c -.. -'\" -'\" pdfmark PDFMARKCODE -'\" -.ds pdfmarks -.if d pdfmarks \{\ -.de pdfmark -. specialps exec [\\$1 pdfmark -.. -'\" -'\" pdfdest LINKNAME -'\" -.de pdfdest -.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" -.. -'\" -'\" pdfbookmark COUNT LINKNAME STRING -'\" -.de pdfbookmark -. pdfmark "/View [/XYZ 44 730 1.0] /Count \\$1 /Dest /\\$2 /Title (\\$3) /OUT" -.. -'\" -'\" Define the SH and SS macros to save pdfmark information -'\" in "arrays" of numbers and strings. -'\" -.if !r rr_n \{\ -.nr rr_n 0 1 -.am SH -. nr rr_levels!\\n+[rr_n] 2 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.am SS -. nr rr_levels!\\n+[rr_n] 3 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.\} -'\" -'\" Called at the end of the document to generate the pdfmark outline -'\" -.de pdf_outline -.nr rr_levels!\\n+[rr_n] 1 -.nr rr_i 0 1 -.while \\n+[rr_i]<\\n[rr_n] \{\ -. nr rr_ip1 \\n[rr_i]+1 -. nr rr_count 0 -. if \\n[rr_levels!\\n[rr_ip1]]>\\n[rr_levels!\\n[rr_i]] \{\ -. nr rr_j \\n[rr_i] 1 -. while \\n+[rr_j]<\\n[rr_n] \{\ -. if \\n[rr_levels!\\n[rr_j]]<=\\n[rr_levels!\\n[rr_i]] \{\ -. break -. \} -. if \\n[rr_levels!\\n[rr_j]]==(\\n[rr_levels!\\n[rr_i]]+1) \{\ -. nr rr_count \\n[rr_count]+1 -. \} -. \} -. \} -. ds hhh \\*[rr_labels!\\n[rr_i]] -. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" -.\} -.. -'\" -'\" Some postscript to make pdfmarks harmless on old interpreters... -'\" -.specialps "def /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse" -'\" -'\" Force display of Bookmarks in Acrobat when document is viewed. -'\" -.pdfmark "[/PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW" -'\" -'\" Output the document info in pdfmarks -'\" -.pdfmark "\ - /Title (\*[an-title](\*[an-section])) \ - /Subject (\*[an-title] Manual Page) \ - /Author (Rick Richardson) \ - /Keywords (printing) \ - /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ - /CreationDate (\*[an-extra1]) \ - /ModDate (\*[an-extra1]) \ - /DOCINFO" -\} -'\" -'\" The manual page name is only 1st level mark -'\" -.nr rr_levels!\n+[rr_n] 1 -.ds rr_labels!\n[rr_n] \*[an-title](\*[an-section]) -.pdfdest Link\n[rr_n] -'\" -'\"========================================================================== -'\" MANUAL PAGE SOURCE -'\"========================================================================== -.SH NAME -foo2hbpl1-wrapper \- Convert Postscript into a ZJS printer stream -.SH SYNOPSIS -.B foo2hbpl1-wrapper -.RI [ options "] [" ps-file ] -.SH DESCRIPTION -.B foo2hbpl1-wrapper -is a Foomatic compatible printer wrapper for the \fBfoo2hbpl1\fP printer driver. -This script reads a Postscript \fIps-file\fP or standard input -and converts it to Zenographics ZjStream printer format -for driving the -Dell 1250c, Dell C1660w, Dell C1760w, -Epson AcuLaser C1700, -and Fuji-Xerox CP105b printers. -.P -This script can be used in a standalone fashion, but is intended to -be called from a printer spooler system which uses the Foomatic -printer database. - -.SH COMMAND LINE OPTIONS -.SS Normal Options -These are the options used to select the parameters of a -print job that are usually controlled on a per job basis. -.TP -.BI \-c -Print in color (else monochrome). -.TP -.BI \-C\0 colormode -Color correction mode [0]. -.TS -n l . -10 ICM color profile (using -G *.icm file) -.TE -.TP -.BI \-d\0 duplex -Duplex code to send to printer [1]. -.TS -| n l | n l | n l . -1 off 2 long edge 3 short edge -.TE -.TP -.BI \-m\0 media -Media code to send to printer [1]. -.TS -l r. -_ -Media HBPL -_ -plain 1 -bond 2 -lwcard 3 -lwgcard 4 -labels 5 -envelope 6 -recycled 7 -plain2 8 -bond2 9 -lwcard2 10 -lwgcard2 11 -recycled2 12 -.TE -.TP -.BI \-p\0 paper -Paper size code to send to printer [1]. -.TS -l r. -_ -Paper HBPL -_ -A4 1 -B5jis 2 -letter 4 -executive 5 -fanfold german legal 6 -folio 6 -legal 7 -env#10 9 -envMonarch 10 -envC5 11 -envDL 12 -.TE -.TP -.BI \-n\0 copies -Number of copies [1]. -.TP -.BI \-r\0 xres x yres -Set device resolution in pixels/inch [1200x600]. -.TP -.BI \-s\0 source -Source (Input Slot) code to send to printer [7]. -.TS -| n l | n l. -1 upper 4 manual -2 lower 7 auto -.TE -.TP -.BI \-t -Draft mode. Every other pixel is white. -.TP -.BI \-T\0 density -Print density (1-5). The default is 3 (medium). -.TP -.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" -Print in N-up. Requires the \fBpsutils\fP package. -.TP -.BI \-o\0 orient -Orientation used for N-up. -.TS -l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) -.TE -.SS Printer Tweaking Options -These are the options used to customize the operation of \fBfoo2hbpl1\fP -for a particular printer. -.TP -.BI \-u\0 xoff x yoff -Set the offset of the start of the printable region from the -upper left corner, in pixels [varies with paper size]. -The defaults should work on the 2200DL and 2300DL, and have not -been tested on any other printers. -.TP -.BI \-l\0 xoff x yoff -Set the offset of the end of the printable region from the -lower right corner, in pixels [varies with paper size]. -The defaults should work on the 2200DL and 2300DL, and have not -been tested on any other printers. -.TP -.BI \-L\0 mask -Send the logical clipping values from -u/-l in the ZjStream. -\fBfoo2hbpl1-wrapper\fP always runs Ghostscript with the ideal page dimensions, -so that the scale of the image is correct, -regardless whether or not the printer has unprintable regions. -This option is used to move the position of the clipped image -back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be -good in most cases. -.TS -l l. -0 don't send any logical clipping amounts -1 only send Y clipping amount -2 only send X clipping amount -3 send both X and Y clipping amounts -.TE -.TP -.BI \-P -Do not send START_PLANE codes on monochrome output. May be -needed by some monochrome-only printers, such as the -HP LaserJet 1000. -.TP -.BI \-X\0 padlen -Add extra zero padding to the end of BID segments. The default is -16 bytes. Padding 16 bytes of zeroes -is needed for older ZjStream printers, such as the Minolta 2200DL -and HP LaserJet 1000, and seems harmless to newer ones, such as -the Minolta 2300DL. So the default should be good for all cases. -.SS Color Tweaking Options -These are the options used to control the quality of color output. -Color correction is currently a WORK IN PROGRESS. -.TP -.BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, -etc. This option may appear more than once. -.TP -.BI \-G\0 profile.icm -Convert \fIprofile.icm\fP to a Postscript color rendering -dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and -adjust the printer colors by using the Postscript \fBsetcolorrendering\fP -operator. (WORK IN PROGRESS). -.TP -.BI \-G\0 gamma-file.ps -Prepend \fIgamma-file.ps\fP to the Postscript input to perform -color correction using the \fBsetcolortransfer\fP Postscript operator. -For example, the file might contain: -.br -{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer -.TP -.BI \-I\0 intent -Select profile intent from the ICM file. -0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. -Default is 0 (perceptual). -.SS Debugging Options -These options are used for debugging \fBfoo2hbpl1\fP and its wrapper. -.TP -.BI \-S\0 plane -Output just a single color plane from a color print and print it -on the black plane. The default is to output all color planes. -.TS -l l. -1 Cyan -2 Magenta -3 Yellow -4 Black -.TE -.TP -.BI \-D\0 level -Set Debug level [0]. - -.SH EXAMPLES -Create a monochrome ZjStream from a Postscript document, -examine it, and then print it using a RAW print queue: - -.RS -.nf -foo2hbpl1-wrapper testpage.ps > testpage.prn -hbpl1decode < testpage.prn -lpr -P raw testpage.prn -.fi -.RE -.P -Create a color ZjStream stream from a Postscript document: - -.RS -.nf -foo2hbpl1-wrapper -c testpage.ps > testpage.prn -.fi -.RE - -.SH FILES -.BR /usr/bin/foo2hbpl1-wrapper -.SH SEE ALSO -.BR foo2hbpl1 (1), -.BR hbpldecode (1) -.SH "AUTHOR" -Rick Richardson -.br -http://foo2hbpl.rkkda.com/ -'\" -'\" -'\" -.em pdf_outline diff --git a/foo2hbpl1.1 b/foo2hbpl1.1 deleted file mode 100644 index e78e309..0000000 --- a/foo2hbpl1.1 +++ /dev/null @@ -1,244 +0,0 @@ -'\" t -'\" -'\" DO NOT EDIT! This file is generated from foo2hbpl1.1in -'\" -'\" t -.TH foo2hbpl1 1 "Sun May 26 18:25:20 2024" "foo2hbpl1 0.0" -'\" -'\" -'\"========================================================================== -'\" STRINGS and MACROS -'\"========================================================================== -'\" -'\" Define strings for special characters that nroff doesn't have -'\" -'\" N.B. using .if cua to test for special characters did not work. -'\" -.if !'\*[.T]'ps' .ds ua up -.if '\*[.T]'ps' .ds ua \(ua -.if !'\*[.T]'ps' .ds da down -.if '\*[.T]'ps' .ds da \(da -.if !'\*[.T]'ps' .ds <- left -.if '\*[.T]'ps' .ds <- \(<- -.if !'\*[.T]'ps' .ds -> right -.if '\*[.T]'ps' .ds -> \(-> -'\" -'\" bx - box a Courier string for making keycaps -'\" -'\" N.B. this mess is to make the line drawing come out only -'\" if we are really generating postscript -'\" -.de bx -.ie !'\*[.T]'ps' \{\ -. RB [ \\$1 ]\\$2 -.\} -.el \{\ -. ie !r ps4html \{\ -'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' -. ft CW -. nr par*bxw \w'\\$1'+.4m -\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ -\Z'\h'.2m'\s-1\\$1\s+1'\ -\h'\\n[par*bxw]u'\\$2 -. ft P -. \} -. el \{\ -. RB [ \\$1 ]\\$2 -. \} -.\} -.. -'\" -'\" strings to set current color (null with old groff) -'\" -.if mred .ds red \m[red] -.if mgreen .ds green \m[green] -.if mblue .ds blue \m[blue] -.if mblack .ds black \m[black] -.if mblack .ds mP \mP -'\" -'\" fix for grotty + xterm. We call for orange, grotty outputs yellow, -'\" but xterm displays yellow as orange. The cycle is complete. -'\" -.if n .defcolor orange rgb #ffff00 -'\" -'\" color - set the current color (ignores request with old groff) -'\" -.de color -.if mred \m[\\$1]\c -.. -'\" -'\" colorword - colorize a word (ignored by old groff) -'\" -.de colorword -.ie m\\$1 \m[\\$1]\\$2\mP\c -.el \\$2\c -.. -'\" -'\" colbox - colorize a word in a filled box -'\" -.de colbox -.ie mred \M[\\$2]\ -\v'+.167v'\ -\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ -\v'-.167v'\ -\m[\\$1]\\$3\mP\MP -.el \\$3\c -.. -'\" -'\" Macros for doing pdfmarks -'\" -.de specialps -.if '\*[.T]'ps' \\k_\X'ps: \\$*'\h'|\\n_u'\c -.. -'\" -'\" pdfmark PDFMARKCODE -'\" -.ds pdfmarks -.if d pdfmarks \{\ -.de pdfmark -. specialps exec [\\$1 pdfmark -.. -'\" -'\" pdfdest LINKNAME -'\" -.de pdfdest -.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" -.. -'\" -'\" pdfbookmark COUNT LINKNAME STRING -'\" -.de pdfbookmark -. pdfmark "/View [/XYZ 44 730 1.0] /Count \\$1 /Dest /\\$2 /Title (\\$3) /OUT" -.. -'\" -'\" Define the SH and SS macros to save pdfmark information -'\" in "arrays" of numbers and strings. -'\" -.if !r rr_n \{\ -.nr rr_n 0 1 -.am SH -. nr rr_levels!\\n+[rr_n] 2 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.am SS -. nr rr_levels!\\n+[rr_n] 3 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.\} -'\" -'\" Called at the end of the document to generate the pdfmark outline -'\" -.de pdf_outline -.nr rr_levels!\\n+[rr_n] 1 -.nr rr_i 0 1 -.while \\n+[rr_i]<\\n[rr_n] \{\ -. nr rr_ip1 \\n[rr_i]+1 -. nr rr_count 0 -. if \\n[rr_levels!\\n[rr_ip1]]>\\n[rr_levels!\\n[rr_i]] \{\ -. nr rr_j \\n[rr_i] 1 -. while \\n+[rr_j]<\\n[rr_n] \{\ -. if \\n[rr_levels!\\n[rr_j]]<=\\n[rr_levels!\\n[rr_i]] \{\ -. break -. \} -. if \\n[rr_levels!\\n[rr_j]]==(\\n[rr_levels!\\n[rr_i]]+1) \{\ -. nr rr_count \\n[rr_count]+1 -. \} -. \} -. \} -. ds hhh \\*[rr_labels!\\n[rr_i]] -. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" -.\} -.. -'\" -'\" Some postscript to make pdfmarks harmless on old interpreters... -'\" -.specialps "def /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse" -'\" -'\" Force display of Bookmarks in Acrobat when document is viewed. -'\" -.pdfmark "[/PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW" -'\" -'\" Output the document info in pdfmarks -'\" -.pdfmark "\ - /Title (\*[an-title](\*[an-section])) \ - /Subject (\*[an-title] Manual Page) \ - /Author (Rick Richardson) \ - /Keywords (printing) \ - /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ - /CreationDate (\*[an-extra1]) \ - /ModDate (\*[an-extra1]) \ - /DOCINFO" -\} -'\" -'\" The manual page name is only 1st level mark -'\" -.nr rr_levels!\n+[rr_n] 1 -.ds rr_labels!\n[rr_n] \*[an-title](\*[an-section]) -.pdfdest Link\n[rr_n] -'\" -'\"========================================================================== -'\" MANUAL PAGE SOURCE -'\"========================================================================== -.SH NAME -foo2hbpl1 \- Convert Ghostscript output to an HBPLv1 printer stream -.SH SYNOPSIS -.B foo2hbpl1 -.RI [ options "] <" pnm-or-pam-file " >" hbpl1-file -.SH DESCRIPTION -.B foo2hbpl1 -converts Ghostscript pbmraw, pgmraw, ppmraw, or pamcmyk32 output -formats to monochrome or color HBPL version 1 streams, to drive the -Dell 1250c, Dell C1660w, Dell C1760w, -Epson AcuLaser C1700, -and Fuji-Xerox CP105b printers. - -.SH COMMAND LINE OPTIONS -.TP -.BI \-J\0 filename -Filename string to send to printer. -.TP -.BI \-U\0 username -Username string to send to printer. -.SH EXAMPLES -Create a black and white ZJS stream: - -.RS -.nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r600x600 -sDEVICE=pgmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2hbpl1 >testpage.zm -.fi -.RE -.P -Create a color ZJS stream: - -.RS -.nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=pamcmyk32 \ - -sOutputFile=- - < testpage.ps \ -| foo2hbpl1 >testpage.zc -.fi -.RE - -.SH FILES -.BR /usr/bin/foo2hbpl1 -.SH SEE ALSO -.BR foo2hbpl1-wrapper (1), -.BR hbpldecode (1) -.SH "AUTHOR" -Rick Richardson -.br -Peter Korf -.br -Dave Coffin -.br -http://foo2hbpl.rkkda.com/ -'\" -'\" -'\" -.em pdf_outline diff --git a/foo2hbpl2 b/foo2hbpl2 deleted file mode 100755 index 38d9346bacea4de0bee1cdeb7621d135117c5d14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88392 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 VjDRY;!Vw%_D=5#iG1#Ko{{gs|HjV%Q diff --git a/foo2hbpl2-wrapper b/foo2hbpl2-wrapper deleted file mode 100755 index 7b597c2..0000000 --- a/foo2hbpl2-wrapper +++ /dev/null @@ -1,729 +0,0 @@ -#!/bin/sh - -#* Copyright (C) 2013 Rick Richardson -#* -#* 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. -#* -#* Authors: Rick Richardson - -VERSION='$Id: foo2hbpl2-wrapper.in,v 1.7 2014/03/01 21:04:47 rick Exp $' - -# -# Printer Notes: -# -# Dell 1355 Multifunction Color Printer -# Dell C1765 Multifunction Color Printer -# Epson AcuLaser M1400 -# Fuji Xerox DocuPrint CM205 Multifunction Color Printer -# Fuji Xerox DocuPrint M215 -# Fuji Xerox DocuPrint P205 -# Xerox WorkCentre 3045 Multifunction Monochrome Printer -# Xerox WorkCentre 6015 Multifunction Color Printer -# - -PROGNAME="$0" -BASENAME=`basename $PROGNAME` -PREFIX=/usr -SHARE=$PREFIX/share/foo2hbpl -PATH=$PATH:/sw/bin:/opt/local/bin - -# -# Log the command line, for debugging and problem reports -# -if [ -x /usr/bin/logger -o -x /bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" x Set device resolution in pixels/inch [$RES] --s source Source code to send to printer [$SOURCE] - 1=upper, 2=lower, 4=manual, 7=auto - Code numbers may vary with printer model. --t Draft mode. Every other pixel is white. --2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 - Print with N-up (requires psutils) --o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. - -Printer Tweaking Options: --u x Set offset of upper left printable in pixels [varies] --l x Set offset of lower right printable in pixels [varies] --L mask Send logical clipping values from -u/-l in ZjStream [3] - 0=no, 1=Y, 2=X, 3=XY --P Do not output START_PLANE codes. May be needed by some - monochrome-only printers. --X padlen Add extra zero padding to the end of BID segments [16] - -Color Tweaking Options: --g gsopts Additional options to pass to Ghostscript, such as - -dDITHERPPI=nnn, etc. May appear more than once. [] --G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and - adjust colors using the setcolorrendering PS operator. - $SHARE/icm/ will be searched for profile.icm. --I intent Select profile intent from ICM file [$INTENT] - 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute --G gamma-file.ps Prepend gamma-file to the Postscript input to perform - color correction using the setcolortransfer PS operator. - -Debugging Options: --S plane Output just a single color plane from a color print [all] - 1=Cyan, 2=Magenta, 3=Yellow, 4=Black --D lvl Set Debug level [$DEBUG] --V $VERSION -EOF - - exit 1 -} - -# -# Report an error and exit -# -error() { - echo "$BASENAME: $1" >&2 - exit 1 -} - -dbgcmd() { - if [ $DEBUG -ge 1 ]; then - echo "$@" >&2 - fi - "$@" -} - -# -# N-up-ify the job. Requires psnup from psutils package -# -nup() { - case "$NUP" in - [2368]|1[0458]) - tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q - ;; - [49]|1[26]) - tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q - ;; - *) - error "Illegal call to nup()." - ;; - esac -} - -# -# Process the options -# - -# Try to use a local copy of GhostScript 8.54, if available. Otherwise, -# fallback to whatever the Linux distro has installed (usually 7.07) -# -# N.B. := operator used here, when :- would be better, because "ash" -# doesn't have :- -if eval gs.foo -v >/dev/null 2>&1; then - GSBIN=${GSBIN:-gs.foo} -else - GSBIN=${GSBIN:-gs} -fi - -CMDLINE="$*" -DEBUG=0 -DUPLEX=1 -COLOR= -COLORMODE=default -MODEL=0 -QUALITY=1 -QUALITY=wts -MEDIA=1 # plain -COPIES=1 -PAPER=4 # letter -RES=1200x600 -SOURCE=1 -NUP= -CLIP_UL= -CLIP_LR= -CLIP_LOG= -BC= -AIB= -NOPLANES= -COLOR2MONO= -GAMMAFILE=default -INTENT=0 -GSOPTS= -EXTRAPAD= -SAVETONER= -NUP_ORIENT= -GSDEV=-sDEVICE=pbmraw -# What mode to use if the user wants us to pick the "best" mode -case `$GSBIN --version` in -7*) DEFAULTCOLORMODE=10 - DEFAULTCOLORMODE=1 - ;; -8.1*) - DEFAULTCOLORMODE=1 - QUALITY=1 - ;; -*) DEFAULTCOLORMODE=1 - ;; -esac -while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:r:s:tz:ABS:D:G:I:PX:Vh?" opt -do - case $opt in - b) GSBIN="$OPTARG";; - c) COLOR=-c;; - d) DUPLEX="$OPTARG";; - g) GSOPTS="$GSOPTS $OPTARG";; - m) MEDIA="$OPTARG";; - n) COPIES="$OPTARG";; - p) PAPER="$OPTARG";; - q) QUALITY="$OPTARG";; - r) RES="$OPTARG";; - s) SOURCE="$OPTARG";; - t) SAVETONER="-t";; - z) MODEL="$OPTARG";; - l) CLIP_LR="-l $OPTARG";; - u) CLIP_UL="-u $OPTARG";; - L) CLIP_LOG="-L $OPTARG";; - A) AIB=-A;; - B) BC=-B;; - C) COLORMODE="$OPTARG";; - S) COLOR2MONO="-S$OPTARG";; - D) DEBUG="$OPTARG";; - G) GAMMAFILE="$OPTARG";; - I) INTENT="$OPTARG";; - P) NOPLANES=-P;; - X) EXTRAPAD="-X $OPTARG";; - [234689]) NUP="$opt";; - [57]) error "Can't find acceptable layout for $opt-up";; - 1) case "$OPTARG" in - [024568]) NUP="1$OPTARG";; - *) error "Can't find acceptable layout for 1$OPTARG-up";; - esac - ;; - o) case "$OPTARG" in - l*) NUP_ORIENT=-l;; - s*) NUP_ORIENT=-r;; - p*|*) NUP_ORIENT=;; - esac;; - V) echo "$VERSION"; foo2hbpl -V; foo2zjs-pstops -V; exit 0;; - h|\?) - if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then - echo "Illegal command:" - echo " $0 $CMDLINE" - echo - fi - usage;; - esac -done -shift `expr $OPTIND - 1` - -# -# If there is an argument left, take it as the file to print. -# Else, the input comes from stdin. -# -if [ $# -ge 1 ]; then - if [ "$LPJOB" = "" ]; then - : # LPJOB="$1" - fi - exec < $1 -fi - -# -case "$QUALITY" in -0) - GSOPTS="-dCOLORSCREEN $GSOPTS" - ;; -1) - GSOPTS="-dCOLORSCREEN $GSOPTS" - ;; -2) - GSOPTS="-dMaxBitmap=500000000 $GSOPTS" - ;; -as) - GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" - ;; -wts) - GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" - ;; -esac - -# -# Validate model code -# -case "$MODEL" in -0|1|2|3) ;; -*) error "Unknown model code $MODEL";; -esac - -# -# Validate media code -# -case "$MEDIA" in -1|plain) MEDIA=1;; -2|bond) MEDIA=2;; -3|lwcard) MEDIA=3;; -4|lwgcard) MEDIA=4;; -5|labels) MEDIA=5;; -6|envelope) MEDIA=6;; -7|recycled) MEDIA=7;; -8|plain2) MEDIA=1;; -9|bond2) MEDIA=2;; -10|lwcard2) MEDIA=3;; -11|lwgcard2) MEDIA=4;; -12|recycled2) MEDIA=7;; -[0-9]*) ;; -*) error "Unknown media code $MEDIA";; -esac - -# -# Validate source (InputSlot) code -# -case "$SOURCE" in -1|auto) SOURCE=1;; -2|manual) SOURCE=2;; -3|multi) SOURCE=3;; -4|tray1) SOURCE=4;; -[0-9]*) ;; -*) error "Unknown source code $SOURCE";; -esac - -# -# Validate Duplex code -# -case "$DUPLEX" in -1|off|none) DUPLEX=1;; -2|long*) DUPLEX=2;; -3|short*) DUPLEX=3;; -[0-9]*) ;; -*) error "Unknown duplex code $DUPLEX";; -esac - -# -# Validate Resolution -# -case "$RES" in -600x600) ;; -1200x600) ;; -1200x1200) ;; -#2400x600) ;; -*) error "Illegal resolution $RES";; -esac - -# -# Figure out the paper dimensions in pixels/inch, and set the -# default clipping region. Unfortunately, this is a trouble -# area for ZjStream printers. Various versions of ZjS print -# engines react differently when asked to print into their -# unprintable regions. -# -set_clipping() { - ulx=$1; uly=$2 - lrx=$3; lry=$4 - - # Set clipping region if it isn't already set - if [ "$CLIP_UL" = "" ]; then - case "$RES" in - 600x600) ulx=`expr $ulx / 2`;; - 2400x600) ulx=`expr $ulx \* 2`;; - esac - CLIP_UL="-u ${ulx}x${uly}" - fi - if [ "$CLIP_LR" = "" ]; then - case "$RES" in - 600x600) lrx=`expr $lrx / 2`;; - 2400x600) lrx=`expr $lrx \* 2`;; - esac - CLIP_LR="-l ${lrx}x${lry}" - fi -} - -case "$PAPER" in -Custom*x*) - # Command line only - XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` - YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` - if [ "$XDIM" = "" -o "$YDIM" = "" ]; then - error "Custom page size '$PAPER' != 1-99999" - fi - if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then - error "Custom page size '$PAPER' != 1-99999" - fi - XDIM=`dc -e "$XDIM 1200* 72/p"` - YDIM=`dc -e "$YDIM 600* 72/p"` - PAPER=21; paper=letter; - # Doesn't work on a real printer - smudges. - # set_clipping 2 100 2 100 - set_clipping 150 100 150 100 - ;; -Custom*) - #%%BeginFeature: *CustomPageSize True - #216 - #360 - #0 - #0 - #0 - #pop pop pop pop pop - - #%%BeginFeature: *CustomPageSize True - #792.000000 612.000000 1 0.000000 0.000000 - #pop pop pop pop pop - - if [ $DEBUG = 0 ]; then - TMPFILE=/tmp/cus$$ - else - TMPFILE=/tmp/custom.ps - fi - cat >$TMPFILE - exec <$TMPFILE - - tmp=`head -n 10000 $TMPFILE \ - | sed -n '/CustomPageSize/{n;p;n;p;}' \ - | tr '\n' ' '` - case "$tmp" in - [0-9]*\ [0-9]*) - XDIM=`echo "$tmp" | sed 's/ .*//'` - YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` - ;; - *) - if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi - error "Custom page size [XY]DIM != 1-99999" - ;; - esac - XDIM=`dc -e "$XDIM 1200* 72/p"` - YDIM=`dc -e "$YDIM 600* 72/p"` - PAPER=21; paper=letter; - # Doesn't work on a real printer - smudges. - # set_clipping 2 100 2 100 - set_clipping 150 100 150 100 - ;; -1|a4|A4) PAPER=1; paper=a4; XDIM="9920"; YDIM="7016" - set_clipping 150 100 150 100 - ;; -2|b5jis|B5jis) PAPER=2; paper=b5; XDIM="8598"; YDIM="6070" - set_clipping 138 100 138 100 # modulo 256 - ;; -4|letter) PAPER=4; paper=letter; XDIM="10200"; YDIM="6600" - set_clipping 150 100 150 100 - ;; -5|executive) PAPER=5; paper=executive; XDIM="8700"; YDIM="6300" - set_clipping 150 100 150 100 - ;; -6|fanfoldgermanlegal|folio) - PAPER=6; paper=legal; XDIM="10200"; YDIM="7800" - set_clipping 150 100 150 100 - ;; -7|legal) PAPER=7; paper=legal; XDIM="10200"; YDIM="8400" - set_clipping 150 100 150 100 - ;; -9|"env#10") PAPER=9; paper=env10; XDIM="4950"; YDIM="5700" - set_clipping 171 100 171 100 # modulo 256 - ;; -10|envMonarch) PAPER=10; paper=envMonarch;XDIM="4650"; YDIM="4500" - set_clipping 150 100 150 100 - ;; -11|envC5) PAPER=11; paper=envC5; XDIM="7650"; YDIM="5408" - set_clipping 150 100 150 100 - ;; -12|envDL) PAPER=12; paper=envDL; XDIM="5200"; YDIM="5200" - set_clipping 168 100 168 100 # modulo 256 - ;; -#16|a5|A5) PAPER=16; paper=a5; XDIM="6992"; YDIM="4960" -# set_clipping 168 100 168 100 # modulo 256 -# ;; -#24|folio) PAPER=24; paper=folio; XDIM="9922"; YDIM="7796" -# set_clipping 150 100 150 100 -# ;; -#26|"env#9") PAPER=26; paper=env9; XDIM="4496"; YDIM="5324" -# set_clipping 200 100 200 100 # modulo 256 -# ;; -#23|envC6) PAPER=23; paper=envC6; XDIM="5386"; YDIM="3826" -# set_clipping 150 100 150 100 -# ;; -#12|b5iso|B5iso) PAPER=12; paper=b5; XDIM="8314"; YDIM="5906" -# set_clipping 189 100 189 100 # modulo 256 -# ;; -#25|env6.75) PAPER=25; paper=env6.75; XDIM="4348"; YDIM="3900" -# set_clipping 150 100 150 100 -# ;; -#17|a6|A6) PAPER=17; paper=a6; XDIM="4960"; YDIM="3496" -# set_clipping 176 100 176 100 # modulo 256 -# ;; -#28|oficio) PAPER=28; paper=a6; XDIM="10200"; YDIM="8100" -# set_clipping 150 100 150 100 -# ;; -*) error "Unimplemented paper code $PAPER";; -esac -# e.g. /usr/share/ghostscript/7.07/lib/gs_statd.ps -PAPERSIZE="-sPAPERSIZE=$paper"; - -case "$RES" in -600x600) XDIM=`expr $XDIM / 2`;; -1200x600) ;; -1200x1200) YDIM=`expr $YDIM \* 2`;; -2400x600) XDIM=`expr $XDIM \* 2`;; -esac -DIM="${XDIM}x${YDIM}" - -# -# Filter thru psnup if N-up printing has been requested -# -case $NUP in -[234689]|1[024568]) PREFILTER="nup";; -*) PREFILTER=cat;; -esac -if [ "$DEBUG" -ge 9 ]; then - PREFILTER="tee /tmp/$BASENAME.ps" -fi - -# -# Overload -G. If the file name ends with ".icm" or ".ICM" -# then convert the ICC color profile to a Postscript CRD, -# then prepend it to the users job. Select the intent -# using the -I option. -# - -create_crd() { - # - # Create a Postscript CRD - # - ICC2PS=$PREFIX/bin/foo2zjs-icc2ps - if [ -x $ICC2PS ]; then - case "$GAMMAFILE" in - none | none.icm | */none.icm) - ;; - *) - if [ -x /usr/bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- \ - "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" - fi - $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ - || error "Problem converting .ICM file to Postscript" - ;; - esac - - PSTOPS_OPTS="$PSTOPS_OPTS -c" - cat > $ICCTMP.usecie.ps <<-EOF - %!PS-Adobe-3.0 - <>setpagedevice - EOF - if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then - if [ "$QUALITY" = wts ]; then - cat >> $ICCTMP.usecie.ps <<-EOF - << /UseWTS true >> setuserparams - EOF - else - cat >> $ICCTMP.usecie.ps <<-EOF - << /UseWTS false >> setuserparams - EOF - fi - cat >> $ICCTMP.usecie.ps <<-EOF - << - /AccurateScreens true - /HalftoneType 1 - /HalftoneName (Round Dot Screen) cvn - /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} - /Frequency 137 - /Angle 37 - >> sethalftone - EOF - fi - cat > $ICCTMP.selcrd.ps <<-EOF - /Current /ColorRendering findresource setcolorrendering - EOF - case "$GAMMAFILE" in - none | none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; - *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; - esac - else - GAMMAFILE= - fi -} - -if [ $DEBUG -gt 0 ]; then - ICCTMP=/tmp/icc -else - ICCTMP=/tmp/icc$$ -fi - -if [ "" = "$COLOR" ]; then - COLORMODE= - GAMMAFILE= -else - case "$COLORMODE" in - default) COLORMODE=$DEFAULTCOLORMODE;; - esac - case "$GAMMAFILE" in - default) GAMMAFILE=samclp300-0.icm;; - esac -fi - -CRDBASE="$PREFIX/share/foo2hbpl/crd" -case "$MODEL" in - 0) model=CLP-300;; - 1) model=CLP-600;; - 2) model=CLP-600;; - 3) model=CLP-600;; -esac -case "$RES" in - 600x600) SCREEN=$model-600x600cms2;; - 1200x600) SCREEN=$model-1200x600cms2;; - 1200x1200) SCREEN=$model-1200x1200cms2;; -esac - -PSTOPS_OPTS="-n" - -case "$COLORMODE" in -0|"") - # Monochrome - ;; -10|icm) - # Use old ICM method - AIB=-A - BC=-B - case "$GAMMAFILE" in - none | none.icm | */none.icm) - create_crd - ;; - *.icm|*.ICM|*.icc|*.ICC) - # - # Its really an .ICM file, not a gamma file. - # - # The file can be a full path name, or the name of a file in $SHARE/icm/ - # - if [ -r "$GAMMAFILE" ]; then - create_crd - elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then - GAMMAFILE="$SHARE/icm/$GAMMAFILE" - create_crd - else - GAMMAFILE= - fi - ;; - esac - ;; -1|crd) - # CRD - GAMMAFILE="" - GAMMAFILE="$GAMMAFILE $CRDBASE/${model}cms" - GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" - # Black text... - TMPFILE2=/tmp/black$$ - cat $CRDBASE/black-text.ps - >$TMPFILE2 - exec <$TMPFILE2 - ;; -*.crd) - GAMMAFILE="$CRDBASE/prolog.ps" - if [ -f $COLORMODE ]; then - GAMMAFILE="$GAMMAFILE $COLORMODE" - elif [ -f $CRDBASE/$COLORMODE ]; then - GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" - else - error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" - fi - GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" - ;; -*) - error "Unknown color method '$COLORMODE'" - ;; -esac - -if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then - PSTOPS_OPTS="$PSTOPS_OPTS -w" -elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then - PSTOPS_OPTS="$PSTOPS_OPTS -a" -fi - -if [ "" != "$COLOR" ]; then - if [ "" = "$AIB" -a "" = "$BC" ]; then - # Faster, but can't handle AllIsBlack or BlackClears - GSDEV=-sDEVICE=pksmraw - else - # Can't handle different size pages - GSDEV=-sDEVICE=bitcmyk - fi -fi - -# -# Figure out USERNAME -# -if [ "$LPUSER" != "" ]; then - USER="$LPUSER@$LPHOST" -else - USER="" -fi - -# -# Main Program, just cobble together the pipeline and run it -# -# The malarky with file descriptors 1 and 3 is to avoid a bug in -# (some versions?) of Ghostscript where Postscript's stdout gets -# intermingled with the printer drivers output, resulting in -# corrupted image data. -# -GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" - -foo2zjs-pstops $PSTOPS_OPTS | \ -$PREFILTER \ -| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ - -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null) 3>&1 \ -| foo2hbpl2 -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ - -z$MODEL $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG $SAVETONER \ - -J "$LPJOB" -U "$USER" \ - $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD -D$DEBUG - -# -# Log the command line, for debugging and problem reports -# -if [ -x /usr/bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- \ - "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" - logger -t "$BASENAME" -p lpr.info -- \ - "foo2hbpl2 -r$RES -g$DIM -p$PAPER -m$MEDIA \ --n$COPIES -d$DUPLEX -s$SOURCE -z$MODEL $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG \ -$SAVETONER $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD" -fi - -# -# Remove cruft -# -if [ $DEBUG -eq 0 ]; then - for i in crd.ps log usecie.ps selcrd.ps - do - file="$ICCTMP.$i" - [ -f $file ] && rm -f $file - done - [ -f "$TMPFILE" ] && rm -f $TMPFILE - [ -f "$TMPFILE2" ] && rm -f $TMPFILE2 -fi - -exit 0 diff --git a/foo2hbpl2-wrapper.1 b/foo2hbpl2-wrapper.1 deleted file mode 100644 index 8a2a0a3..0000000 --- a/foo2hbpl2-wrapper.1 +++ /dev/null @@ -1,419 +0,0 @@ -'\" t -'\" -'\" DO NOT EDIT! This file is generated from foo2hbpl2-wrapper.1in -'\" -'\" t -.TH foo2hbpl2-wrapper 1 "Sun May 26 18:25:20 2024" "foo2hbpl2-wrapper 0.0" -'\" -'\" -'\"========================================================================== -'\" STRINGS and MACROS -'\"========================================================================== -'\" -'\" Define strings for special characters that nroff doesn't have -'\" -'\" N.B. using .if cua to test for special characters did not work. -'\" -.if !'\*[.T]'ps' .ds ua up -.if '\*[.T]'ps' .ds ua \(ua -.if !'\*[.T]'ps' .ds da down -.if '\*[.T]'ps' .ds da \(da -.if !'\*[.T]'ps' .ds <- left -.if '\*[.T]'ps' .ds <- \(<- -.if !'\*[.T]'ps' .ds -> right -.if '\*[.T]'ps' .ds -> \(-> -'\" -'\" bx - box a Courier string for making keycaps -'\" -'\" N.B. this mess is to make the line drawing come out only -'\" if we are really generating postscript -'\" -.de bx -.ie !'\*[.T]'ps' \{\ -. RB [ \\$1 ]\\$2 -.\} -.el \{\ -. ie !r ps4html \{\ -'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' -. ft CW -. nr par*bxw \w'\\$1'+.4m -\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ -\Z'\h'.2m'\s-1\\$1\s+1'\ -\h'\\n[par*bxw]u'\\$2 -. ft P -. \} -. el \{\ -. RB [ \\$1 ]\\$2 -. \} -.\} -.. -'\" -'\" strings to set current color (null with old groff) -'\" -.if mred .ds red \m[red] -.if mgreen .ds green \m[green] -.if mblue .ds blue \m[blue] -.if mblack .ds black \m[black] -.if mblack .ds mP \mP -'\" -'\" fix for grotty + xterm. We call for orange, grotty outputs yellow, -'\" but xterm displays yellow as orange. The cycle is complete. -'\" -.if n .defcolor orange rgb #ffff00 -'\" -'\" color - set the current color (ignores request with old groff) -'\" -.de color -.if mred \m[\\$1]\c -.. -'\" -'\" colorword - colorize a word (ignored by old groff) -'\" -.de colorword -.ie m\\$1 \m[\\$1]\\$2\mP\c -.el \\$2\c -.. -'\" -'\" colbox - colorize a word in a filled box -'\" -.de colbox -.ie mred \M[\\$2]\ -\v'+.167v'\ -\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ -\v'-.167v'\ -\m[\\$1]\\$3\mP\MP -.el \\$3\c -.. -'\" -'\" Macros for doing pdfmarks -'\" -.de specialps -.if '\*[.T]'ps' \\k_\X'ps: \\$*'\h'|\\n_u'\c -.. -'\" -'\" pdfmark PDFMARKCODE -'\" -.ds pdfmarks -.if d pdfmarks \{\ -.de pdfmark -. specialps exec [\\$1 pdfmark -.. -'\" -'\" pdfdest LINKNAME -'\" -.de pdfdest -.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" -.. -'\" -'\" pdfbookmark COUNT LINKNAME STRING -'\" -.de pdfbookmark -. pdfmark "/View [/XYZ 44 730 1.0] /Count \\$1 /Dest /\\$2 /Title (\\$3) /OUT" -.. -'\" -'\" Define the SH and SS macros to save pdfmark information -'\" in "arrays" of numbers and strings. -'\" -.if !r rr_n \{\ -.nr rr_n 0 1 -.am SH -. nr rr_levels!\\n+[rr_n] 2 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.am SS -. nr rr_levels!\\n+[rr_n] 3 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.\} -'\" -'\" Called at the end of the document to generate the pdfmark outline -'\" -.de pdf_outline -.nr rr_levels!\\n+[rr_n] 1 -.nr rr_i 0 1 -.while \\n+[rr_i]<\\n[rr_n] \{\ -. nr rr_ip1 \\n[rr_i]+1 -. nr rr_count 0 -. if \\n[rr_levels!\\n[rr_ip1]]>\\n[rr_levels!\\n[rr_i]] \{\ -. nr rr_j \\n[rr_i] 1 -. while \\n+[rr_j]<\\n[rr_n] \{\ -. if \\n[rr_levels!\\n[rr_j]]<=\\n[rr_levels!\\n[rr_i]] \{\ -. break -. \} -. if \\n[rr_levels!\\n[rr_j]]==(\\n[rr_levels!\\n[rr_i]]+1) \{\ -. nr rr_count \\n[rr_count]+1 -. \} -. \} -. \} -. ds hhh \\*[rr_labels!\\n[rr_i]] -. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" -.\} -.. -'\" -'\" Some postscript to make pdfmarks harmless on old interpreters... -'\" -.specialps "def /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse" -'\" -'\" Force display of Bookmarks in Acrobat when document is viewed. -'\" -.pdfmark "[/PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW" -'\" -'\" Output the document info in pdfmarks -'\" -.pdfmark "\ - /Title (\*[an-title](\*[an-section])) \ - /Subject (\*[an-title] Manual Page) \ - /Author (Rick Richardson) \ - /Keywords (printing) \ - /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ - /CreationDate (\*[an-extra1]) \ - /ModDate (\*[an-extra1]) \ - /DOCINFO" -\} -'\" -'\" The manual page name is only 1st level mark -'\" -.nr rr_levels!\n+[rr_n] 1 -.ds rr_labels!\n[rr_n] \*[an-title](\*[an-section]) -.pdfdest Link\n[rr_n] -'\" -'\"========================================================================== -'\" MANUAL PAGE SOURCE -'\"========================================================================== -.SH NAME -foo2hbpl2-wrapper \- Convert Postscript into a ZJS printer stream -.SH SYNOPSIS -.B foo2hbpl2-wrapper -.RI [ options "] [" ps-file ] -.SH DESCRIPTION -.B foo2hbpl2-wrapper -is a Foomatic compatible printer wrapper for the \fBfoo2hbpl2\fP printer driver. -This script reads a Postscript \fIps-file\fP or standard input -and converts it to Zenographics ZjStream printer format -for driving the -Dell 1355, Dell C1765, -Epson AcuLaser M1400, -Fuji Xerox DocuPrint CM205, -Fuji Xerox DocuPrint P205, -Xerox WorkCentre 3045 MFP, -and Xerox WorkCentre 6015 MFP printers. -.P -This script can be used in a standalone fashion, but is intended to -be called from a printer spooler system which uses the Foomatic -printer database. - -.SH COMMAND LINE OPTIONS -.SS Normal Options -These are the options used to select the parameters of a -print job that are usually controlled on a per job basis. -.TP -.BI \-c -Print in color (else monochrome). -.TP -.BI \-C\0 colormode -Color correction mode [0]. -.TS -n l . -10 ICM color profile (using -G *.icm file) -.TE -.TP -.BI \-d\0 duplex -Duplex code to send to printer [1]. -.TS -| n l | n l | n l . -1 off 2 long edge 3 short edge -.TE -.TP -.BI \-m\0 media -Media code to send to printer [1]. -.TS -l r. -_ -Media HBPL -_ -plain 1 -bond 2 -lwcard 3 -lwgcard 4 -labels 5 -envelope 6 -recycled 7 -plain2 8 -bond2 9 -lwcard2 10 -lwgcard2 11 -recycled2 12 -.TE -.TP -.BI \-p\0 paper -Paper size code to send to printer [1]. -.TS -l r. -_ -Paper HBPL -_ -A4 1 -B5jis 2 -letter 4 -executive 5 -fanfold german legal 6 -folio 6 -legal 7 -env#10 9 -envMonarch 10 -envC5 11 -envDL 12 -.TE -.TP -.BI \-n\0 copies -Number of copies [1]. -.TP -.BI \-r\0 xres x yres -Set device resolution in pixels/inch [1200x600]. -.TP -.BI \-s\0 source -Source (Input Slot) code to send to printer [7]. -.TS -| n l | n l. -1 upper 4 manual -2 lower 7 auto -.TE -.TP -.BI \-t -Draft mode. Every other pixel is white. -.TP -.BI \-T\0 density -Print density (1-5). The default is 3 (medium). -.TP -.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" -Print in N-up. Requires the \fBpsutils\fP package. -.TP -.BI \-o\0 orient -Orientation used for N-up. -.TS -l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) -.TE -.SS Printer Tweaking Options -These are the options used to customize the operation of \fBfoo2hbpl2\fP -for a particular printer. -.TP -.BI \-u\0 xoff x yoff -Set the offset of the start of the printable region from the -upper left corner, in pixels [varies with paper size]. -The defaults should work on the 2200DL and 2300DL, and have not -been tested on any other printers. -.TP -.BI \-l\0 xoff x yoff -Set the offset of the end of the printable region from the -lower right corner, in pixels [varies with paper size]. -The defaults should work on the 2200DL and 2300DL, and have not -been tested on any other printers. -.TP -.BI \-L\0 mask -Send the logical clipping values from -u/-l in the ZjStream. -\fBfoo2hbpl2-wrapper\fP always runs Ghostscript with the ideal page dimensions, -so that the scale of the image is correct, -regardless whether or not the printer has unprintable regions. -This option is used to move the position of the clipped image -back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be -good in most cases. -.TS -l l. -0 don't send any logical clipping amounts -1 only send Y clipping amount -2 only send X clipping amount -3 send both X and Y clipping amounts -.TE -.TP -.BI \-P -Do not send START_PLANE codes on monochrome output. May be -needed by some monochrome-only printers, such as the -HP LaserJet 1000. -.TP -.BI \-X\0 padlen -Add extra zero padding to the end of BID segments. The default is -16 bytes. Padding 16 bytes of zeroes -is needed for older ZjStream printers, such as the Minolta 2200DL -and HP LaserJet 1000, and seems harmless to newer ones, such as -the Minolta 2300DL. So the default should be good for all cases. -.SS Color Tweaking Options -These are the options used to control the quality of color output. -Color correction is currently a WORK IN PROGRESS. -.TP -.BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, -etc. This option may appear more than once. -.TP -.BI \-G\0 profile.icm -Convert \fIprofile.icm\fP to a Postscript color rendering -dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and -adjust the printer colors by using the Postscript \fBsetcolorrendering\fP -operator. (WORK IN PROGRESS). -.TP -.BI \-G\0 gamma-file.ps -Prepend \fIgamma-file.ps\fP to the Postscript input to perform -color correction using the \fBsetcolortransfer\fP Postscript operator. -For example, the file might contain: -.br -{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer -.TP -.BI \-I\0 intent -Select profile intent from the ICM file. -0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. -Default is 0 (perceptual). -.SS Debugging Options -These options are used for debugging \fBfoo2hbpl2\fP and its wrapper. -.TP -.BI \-S\0 plane -Output just a single color plane from a color print and print it -on the black plane. The default is to output all color planes. -.TS -l l. -1 Cyan -2 Magenta -3 Yellow -4 Black -.TE -.TP -.BI \-D\0 level -Set Debug level [0]. - -.SH EXAMPLES -Create a monochrome ZjStream from a Postscript document, -examine it, and then print it using a RAW print queue: - -.RS -.nf -foo2hbpl2-wrapper testpage.ps > testpage.prn -hbpl2decode < testpage.prn -lpr -P raw testpage.prn -.fi -.RE -.P -Create a color ZjStream stream from a Postscript document: - -.RS -.nf -foo2hbpl2-wrapper -c testpage.ps > testpage.prn -.fi -.RE - -.SH FILES -.BR /usr/bin/foo2hbpl2-wrapper -.SH SEE ALSO -.BR foo2hbpl2 (1), -.BR hbpldecode (1) -.SH "AUTHOR" -Rick Richardson -.br -http://foo2hbpl.rkkda.com/ -'\" -'\" -'\" -.em pdf_outline diff --git a/foo2hbpl2.1 b/foo2hbpl2.1 deleted file mode 100644 index fe7921b..0000000 --- a/foo2hbpl2.1 +++ /dev/null @@ -1,384 +0,0 @@ -'\" t -'\" -'\" DO NOT EDIT! This file is generated from foo2hbpl2.1in -'\" -'\" t -.TH foo2hbpl2 1 "Sun May 26 18:25:20 2024" "foo2hbpl2 0.0" -'\" -'\" -'\"========================================================================== -'\" STRINGS and MACROS -'\"========================================================================== -'\" -'\" Define strings for special characters that nroff doesn't have -'\" -'\" N.B. using .if cua to test for special characters did not work. -'\" -.if !'\*[.T]'ps' .ds ua up -.if '\*[.T]'ps' .ds ua \(ua -.if !'\*[.T]'ps' .ds da down -.if '\*[.T]'ps' .ds da \(da -.if !'\*[.T]'ps' .ds <- left -.if '\*[.T]'ps' .ds <- \(<- -.if !'\*[.T]'ps' .ds -> right -.if '\*[.T]'ps' .ds -> \(-> -'\" -'\" bx - box a Courier string for making keycaps -'\" -'\" N.B. this mess is to make the line drawing come out only -'\" if we are really generating postscript -'\" -.de bx -.ie !'\*[.T]'ps' \{\ -. RB [ \\$1 ]\\$2 -.\} -.el \{\ -. ie !r ps4html \{\ -'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' -. ft CW -. nr par*bxw \w'\\$1'+.4m -\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ -\Z'\h'.2m'\s-1\\$1\s+1'\ -\h'\\n[par*bxw]u'\\$2 -. ft P -. \} -. el \{\ -. RB [ \\$1 ]\\$2 -. \} -.\} -.. -'\" -'\" strings to set current color (null with old groff) -'\" -.if mred .ds red \m[red] -.if mgreen .ds green \m[green] -.if mblue .ds blue \m[blue] -.if mblack .ds black \m[black] -.if mblack .ds mP \mP -'\" -'\" fix for grotty + xterm. We call for orange, grotty outputs yellow, -'\" but xterm displays yellow as orange. The cycle is complete. -'\" -.if n .defcolor orange rgb #ffff00 -'\" -'\" color - set the current color (ignores request with old groff) -'\" -.de color -.if mred \m[\\$1]\c -.. -'\" -'\" colorword - colorize a word (ignored by old groff) -'\" -.de colorword -.ie m\\$1 \m[\\$1]\\$2\mP\c -.el \\$2\c -.. -'\" -'\" colbox - colorize a word in a filled box -'\" -.de colbox -.ie mred \M[\\$2]\ -\v'+.167v'\ -\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ -\v'-.167v'\ -\m[\\$1]\\$3\mP\MP -.el \\$3\c -.. -'\" -'\" Macros for doing pdfmarks -'\" -.de specialps -.if '\*[.T]'ps' \\k_\X'ps: \\$*'\h'|\\n_u'\c -.. -'\" -'\" pdfmark PDFMARKCODE -'\" -.ds pdfmarks -.if d pdfmarks \{\ -.de pdfmark -. specialps exec [\\$1 pdfmark -.. -'\" -'\" pdfdest LINKNAME -'\" -.de pdfdest -.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" -.. -'\" -'\" pdfbookmark COUNT LINKNAME STRING -'\" -.de pdfbookmark -. pdfmark "/View [/XYZ 44 730 1.0] /Count \\$1 /Dest /\\$2 /Title (\\$3) /OUT" -.. -'\" -'\" Define the SH and SS macros to save pdfmark information -'\" in "arrays" of numbers and strings. -'\" -.if !r rr_n \{\ -.nr rr_n 0 1 -.am SH -. nr rr_levels!\\n+[rr_n] 2 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.am SS -. nr rr_levels!\\n+[rr_n] 3 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.\} -'\" -'\" Called at the end of the document to generate the pdfmark outline -'\" -.de pdf_outline -.nr rr_levels!\\n+[rr_n] 1 -.nr rr_i 0 1 -.while \\n+[rr_i]<\\n[rr_n] \{\ -. nr rr_ip1 \\n[rr_i]+1 -. nr rr_count 0 -. if \\n[rr_levels!\\n[rr_ip1]]>\\n[rr_levels!\\n[rr_i]] \{\ -. nr rr_j \\n[rr_i] 1 -. while \\n+[rr_j]<\\n[rr_n] \{\ -. if \\n[rr_levels!\\n[rr_j]]<=\\n[rr_levels!\\n[rr_i]] \{\ -. break -. \} -. if \\n[rr_levels!\\n[rr_j]]==(\\n[rr_levels!\\n[rr_i]]+1) \{\ -. nr rr_count \\n[rr_count]+1 -. \} -. \} -. \} -. ds hhh \\*[rr_labels!\\n[rr_i]] -. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" -.\} -.. -'\" -'\" Some postscript to make pdfmarks harmless on old interpreters... -'\" -.specialps "def /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse" -'\" -'\" Force display of Bookmarks in Acrobat when document is viewed. -'\" -.pdfmark "[/PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW" -'\" -'\" Output the document info in pdfmarks -'\" -.pdfmark "\ - /Title (\*[an-title](\*[an-section])) \ - /Subject (\*[an-title] Manual Page) \ - /Author (Rick Richardson) \ - /Keywords (printing) \ - /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ - /CreationDate (\*[an-extra1]) \ - /ModDate (\*[an-extra1]) \ - /DOCINFO" -\} -'\" -'\" The manual page name is only 1st level mark -'\" -.nr rr_levels!\n+[rr_n] 1 -.ds rr_labels!\n[rr_n] \*[an-title](\*[an-section]) -.pdfdest Link\n[rr_n] -'\" -'\"========================================================================== -'\" MANUAL PAGE SOURCE -'\"========================================================================== -.SH NAME -foo2hbpl2 \- Convert Ghostscript pbmraw or bitcmyk format into a -ZJS printer stream -.SH SYNOPSIS -.B foo2hbpl2 -.RI [ options "] <" pbmraw-file " >" hbpl2-file -.sp 1 -.B foo2hbpl2 -.RI [ options "] <" bitcmyk-file " >" hbpl2-file -.sp 1 -.B foo2hbpl2 -.RI [ options "] <" pksmraw-file " >" hbpl2-file -.SH DESCRIPTION -.B foo2hbpl2 -converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats to monochrome -or color HBPL version 2 streams, -for driving the -Dell 1355, Dell C1765, -Epson AcuLaser M1400, -Fuji Xerox DocuPrint CM205, -Fuji Xerox DocuPrint M215, -Fuji Xerox DocuPrint P205, -Xerox WorkCentre 3045 MFP, -and Xerox WorkCentre 6015 MFP printers. - -.SH COMMAND LINE OPTIONS -.SS Normal Options -These are the options used to select the parameters of a -print job that are usually controlled on a per job basis. -.TP -.BI \-c -Force color mode if autodetect doesn't work. -.TP -.BI \-d\0 duplex -Duplex code to send to printer [1]. -.TS -| n l | n l | n l . -1 off 2 long edge 3 short edge -.TE -.TP -.BI \-g\0 xpix x ypix -Set page dimensions in pixels [10200x6600]. -.TP -.BI \-m\0 media -Media code to send to printer [1]. -.TS -l r. -_ -Media HBPL -_ -plain 1 -bond 2 -lwcard 3 -lwgcard 4 -labels 5 -envelope 6 -recycled 7 -plain2 8 -bond2 9 -lwcard2 10 -lwgcard2 11 -recycled2 12 -.TE -.TP -.BI \-p\0 paper -Paper code to send to printer [1]. -.TS -l r. -_ -Paper HBPL -_ -A4 1 -B5jis 2 -letter 4 -executive 5 -fanfold german legal 6 -folio 6 -legal 7 -env#10 9 -envMonarch 10 -envC5 11 -envDL 12 -.TE -.TP -.BI \-n\0 copies -Number of copies [1]. -.TP -.BI \-r\0 xres x yres -Set device resolution in pixels/inch [1200x600]. -.TP -.BI \-s\0 source -Source (InputSlot) code to send to printer [7]. -.TS -| n l | n l. -1 upper 4 manual -2 lower 7 auto -.TE -.TP -.BI \-t -Draft mode. Every other pixel is white. -.TP -.BI \-J\0 filename -Filename string to send to printer. -.TP -.BI \-U\0 username -Username string to send to printer. -.SS Printer Tweaking Options -These are the options used to customize the operation of \fBfoo2hbpl2\fP -for a particular printer. -.TP -.BI \-u\0 xoff x yoff -Set the offset of the start of the printable region from the -upper left corner, in pixels [0x0]. -.TP -.BI \-l\0 xoff x yoff -Set the offset of the end of the printable region from the -lower right corner, in pixels [0x0]. -.TP -.BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the ZjStream [3]. -.TS -l l. -0 don't send any logical clipping amounts -1 only send Y clipping amount -2 only send X clipping amount -3 send both X and Y clipping amounts -.TE -.TP -.BI \-P -Do not send START_PLANE codes on monochrome output. May be -needed by some black and white only printers, such as the -HP LaserJet 1000. -.TP -.BI \-A -AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. -.TP -.BI \-B -BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. -.TP -.BI \-X\0 padlen -Add extra zero padding to the end of BID segments. The default is -16 bytes. Padding 16 bytes of zeroes -is needed for older ZjStream printers, such as the Minolta 2200DL -and HP LaserJet 1000, and seems harmless to newer ones, such as -the Minolta 2300DL. So the default should be good for all cases. -.SS Debugging Options -These options are used for debugging \fBfoo2hbpl2\fP. -.TP -.BI \-S\0 plane -Output just a single color plane from a color print and print it -on the black plane. The default is to output all color planes. -.TS -l l. -1 Cyan -2 Magenta -3 Yellow -4 Black -.TE -.TP -.BI \-D\0 level -Set Debug level [0]. - -.SH EXAMPLES -Create a black and white ZJS stream: - -.RS -.nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2hbpl2 -r1200x600 -g10200x6600 -p1 >testpage.zm -.fi -.RE -.P -Create a color ZJS stream: - -.RS -.nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2hbpl2 -r1200x600 -g10200x6600 -p1 >testpage.zc -.fi -.RE - -.SH FILES -.BR /usr/bin/foo2hbpl2 -.SH SEE ALSO -.BR foo2hbpl2-wrapper (1), -.BR hbpldecode (1) -.SH "AUTHOR" -Rick Richardson -.br -Peter Korf -.br -http://foo2hbpl.rkkda.com/ -'\" -'\" -'\" -.em pdf_outline diff --git a/foo2hiperc b/foo2hiperc deleted file mode 100755 index 07f5a85277d13e31c823e8842c58978cbbe67c2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95552 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 diff --git a/foo2hiperc-wrapper b/foo2hiperc-wrapper deleted file mode 100755 index adcc98d..0000000 --- a/foo2hiperc-wrapper +++ /dev/null @@ -1,750 +0,0 @@ -#!/bin/sh - -#* Copyright (C) 2003-2006 Rick Richardson -#* -#* 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. -#* -#* Authors: Rick Richardson - -VERSION='$Id: foo2hiperc-wrapper.in,v 1.34 2013/12/01 20:25:17 rick Exp $' - -# -# Printer Notes: -# -# Oki Data C301dn -z0 -# Oki Data C310dn -z0 -# Oki Data C3100 -z0 -# Oki Data C3200 -z0 -# Oki Data C3300 -z0 -# Oki Data C3400 -z0 -# Oki Data C5100 -z0 -# Oki Data C5250 -z0 -# Oki Data C5500 -z0 -# Oki Data C5600 -z0 -# Oki Data C5800 -z0 -# Olivetti d-Color P160W -z0 -# Oki C810 -z1 uses A3/tabloid paper! -# - -PROGNAME="$0" -BASENAME=`basename $PROGNAME` -PREFIX=/usr -SHARE=$PREFIX/share/foo2hiperc -PATH=$PATH:/sw/bin:/opt/local/bin -PATH=$PATH:. - -# -# Log the command line, for debugging and problem reports -# -if [ -x /usr/bin/logger -o -x /bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" x Set device resolution in pixels/inch [$RES] --s source Source code to send to printer [$SOURCE] - 0=auto 1=tray1 2=tray2 3=multi 4=manual - Code numbers may vary with printer model. --t Draft mode. Every other pixel is white. --2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 - Print with N-up (requires psutils) --o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. - -Printer Tweaking Options: --u x Set offset of upper left printable in pixels [varies] --l x Set offset of lower right printable in pixels [varies] --L mask Send logical clipping values from -u/-l in ZjStream [3] - 0=no, 1=Y, 2=X, 3=XY --P Do not output START_PLANE codes. May be needed by some - monochrome-only printers. --X padlen Add extra zero padding to the end of BID segments [16] --z model Model: 0=no A3 (usual), 1=A3 (C810 etc.) [$MODEL] --Z compressed Use uncompressed (0) or compressed (1) data [0] - -Color Tweaking Options: --g gsopts Additional options to pass to Ghostscript, such as - -dDITHERPPI=nnn, etc. May appear more than once. [] --G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and - adjust colors using the setcolorrendering PS operator. - $SHARE/icm/ will be searched for profile.icm. --I intent Select profile intent from ICM file [$INTENT] - 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute --G gamma-file.ps Prepend gamma-file to the Postscript input to perform - color correction using the setcolortransfer PS operator. - -Debugging Options: --S plane Output just a single color plane from a color print [all] - 1=Cyan, 2=Magenta, 3=Yellow, 4=Black --D lvl Set Debug level [$DEBUG] --V $VERSION -EOF - - exit 1 -} - -# -# Report an error and exit -# -error() { - echo "$BASENAME: $1" >&2 - exit 1 -} - -dbgcmd() { - if [ $DEBUG -ge 1 ]; then - echo "$@" >&2 - fi - "$@" -} - -# -# N-up-ify the job. Requires psnup from psutils package -# -nup() { - case "$NUP" in - [2368]|1[0458]) - tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q - ;; - [49]|1[26]) - tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q - ;; - *) - error "Illegal call to nup()." - ;; - esac -} - -# -# Process the options -# - -# Try to use a local copy of GhostScript 8.54, if available. Otherwise, -# fallback to whatever the Linux distro has installed (usually 7.07) -# -# N.B. := operator used here, when :- would be better, because "ash" -# doesn't have :- -if eval gs.foo -v >/dev/null 2>&1; then - GSBIN=${GSBIN:-gs.foo} -else - GSBIN=${GSBIN:-gs} -fi - -CMDLINE="$*" -DEBUG=0 -DUPLEX=1 -COLOR= -COLORMODE=default -MODEL=0 -QUALITY=1 -QUALITY=wts -MEDIA=0 -COPIES=1 -PAPER=2 -RES=600x600 -SOURCE=0 -NUP= -CLIP_UL= -CLIP_LR= -CLIP_LOG= -BC= -AIB= -NOPLANES= -COLOR2MONO= -GAMMAFILE=default -INTENT=0 -GSOPTS= -EXTRAPAD= -SAVETONER= -NUP_ORIENT= -COMPRESSED= -GSDEV=-sDEVICE=pbmraw -# What mode to use if the user wants us to pick the "best" mode -case `$GSBIN --version` in -7*) DEFAULTCOLORMODE=10 - DEFAULTCOLORMODE=10 - ;; -8.1*) - DEFAULTCOLORMODE=10 - QUALITY=1 - ;; -*) DEFAULTCOLORMODE=10 - ;; -esac -while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:r:s:tz:ABS:D:G:I:PX:Z:Vh?" opt -do - case $opt in - b) GSBIN="$OPTARG";; - c) COLOR=-c;; - d) DUPLEX="$OPTARG";; - g) GSOPTS="$GSOPTS $OPTARG";; - m) MEDIA="$OPTARG";; - n) COPIES="$OPTARG";; - p) PAPER="$OPTARG";; - q) QUALITY="$OPTARG";; - r) RES="$OPTARG";; - s) SOURCE="$OPTARG";; - t) SAVETONER="-t";; - z) MODEL="$OPTARG";; - l) CLIP_LR="-l $OPTARG";; - u) CLIP_UL="-u $OPTARG";; - L) CLIP_LOG="-L $OPTARG";; - A) AIB=-A;; - B) BC=-B;; - C) COLORMODE="$OPTARG";; - S) COLOR2MONO="-S$OPTARG";; - D) DEBUG="$OPTARG";; - G) GAMMAFILE="$OPTARG";; - I) INTENT="$OPTARG";; - P) NOPLANES=-P;; - X) EXTRAPAD="-X $OPTARG";; - Z) COMPRESSED="-Z $OPTARG";; - [234689]) NUP="$opt";; - [57]) error "Can't find acceptable layout for $opt-up";; - 1) case "$OPTARG" in - [024568]) NUP="1$OPTARG";; - *) error "Can't find acceptable layout for 1$OPTARG-up";; - esac - ;; - o) case "$OPTARG" in - l*) NUP_ORIENT=-l;; - s*) NUP_ORIENT=-r;; - p*|*) NUP_ORIENT=;; - esac;; - V) echo "$VERSION"; foo2hiperc -V; foo2zjs-pstops -V; exit 0;; - h|\?) - if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then - echo "Illegal command:" - echo " $0 $CMDLINE" - echo - fi - usage;; - esac -done -shift `expr $OPTIND - 1` - -# -# If there is an argument left, take it as the file to print. -# Else, the input comes from stdin. -# -if [ $# -ge 1 ]; then - if [ "$LPJOB" = "" ]; then - : # LPJOB="$1" - fi - exec < $1 -fi - -# -case "$QUALITY" in -0) - GSOPTS="-dCOLORSCREEN $GSOPTS" - ;; -1) - GSOPTS="-dCOLORSCREEN $GSOPTS" - ;; -2) - GSOPTS="-dMaxBitmap=500000000 $GSOPTS" - ;; -as) - GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" - ;; -wts) - GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" - ;; -esac - -# -# Validate model code -# -case "$MODEL" in -0|1) ;; -*) error "Unknown model code $MODEL";; -esac - -# -# Validate media code -# -case "$MEDIA" in -0|plain) MEDIA=0;; -1|labels) MEDIA=1;; -2|transparency) MEDIA=2;; -[0-9]*) ;; -*) error "Unknown media code $MEDIA";; -esac - -# -# Validate source (InputSlot) code -# -case "$SOURCE" in -1|tray1) SOURCE=1;; -2|tray2) SOURCE=2;; -3|multi) SOURCE=3;; -4|manual) SOURCE=4;; -[0-9]*) ;; -*) error "Unknown source code $SOURCE";; -esac - -# -# Validate Duplex code -# -case "$DUPLEX" in -1|off|none) DUPLEX=1;; -2|long*) DUPLEX=2;; -3|short*) DUPLEX=3;; -[0-9]*) ;; -*) error "Unknown duplex code $DUPLEX";; -esac - -# -# Validate Resolution -# -case "$RES" in -300x300) ;; -600x600) ;; -1200x600) ;; -1200x1200) ;; -600x1200) ;; -*) error "Illegal resolution $RES";; -esac - -# -# Figure out the paper dimensions in pixels/inch, and set the -# default clipping region. Unfortunately, this is a trouble -# area for ZjStream printers. Various versions of ZjS print -# engines react differently when asked to print into their -# unprintable regions. -# -set_clipping() { - ulx=$1; uly=$2 - lrx=$3; lry=$4 - - # Set clipping region if it isn't already set - if [ "$CLIP_UL" = "" ]; then - case "$RES" in - 300x300) ulx=`expr $ulx / 4`; uly=`expr $uly / 2`;; - 600x600) ulx=`expr $ulx / 2`;; - 600x1200) ulx=`expr $ulx / 2`; uly=`expr $uly \* 2`;; - 2400x600) ulx=`expr $ulx \* 2`;; - esac - CLIP_UL="-u ${ulx}x${uly}" - fi - if [ "$CLIP_LR" = "" ]; then - case "$RES" in - 300x300) lrx=`expr $lrx / 4`; lry=`expr $lry / 2`;; - 600x600) lrx=`expr $lrx / 2`;; - 600x1200) lrx=`expr $lrx / 2`; lry=`expr $lry \* 2`;; - 2400x600) lrx=`expr $lrx \* 2`;; - esac - CLIP_LR="-l ${lrx}x${lry}" - fi -} - -case "$PAPER" in -Custom*x*) - # Command line only - XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` - YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` - if [ "$XDIM" = "" -o "$YDIM" = "" ]; then - error "Custom page size '$PAPER' != 1-99999" - fi - if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then - error "Custom page size '$PAPER' != 1-99999" - fi - XDIM=`dc -e "$XDIM 1200* 72/p"` - YDIM=`dc -e "$YDIM 600* 72/p"` - PAPER=21; paper=letter; - set_clipping 2 100 2 100 - ;; -Custom*) - #%%BeginFeature: *CustomPageSize True - #216 - #360 - #0 - #0 - #0 - #pop pop pop pop pop - - #%%BeginFeature: *CustomPageSize True - #792.000000 612.000000 1 0.000000 0.000000 - #pop pop pop pop pop - - if [ $DEBUG = 0 ]; then - TMPFILE=/tmp/cus$$ - else - TMPFILE=/tmp/custom.ps - fi - cat >$TMPFILE - exec <$TMPFILE - - tmp=`head -n 10000 $TMPFILE \ - | sed -n '/CustomPageSize/{n;p;n;p;}' \ - | tr '\n' ' '` - case "$tmp" in - [0-9]*\ [0-9]*) - XDIM=`echo "$tmp" | sed 's/ .*//'` - YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` - ;; - *) - if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi - error "Custom page size [XY]DIM != 1-99999" - ;; - esac - XDIM=`dc -e "$XDIM 1200* 72/p"` - YDIM=`dc -e "$YDIM 600* 72/p"` - PAPER=21; paper=letter; - set_clipping 2 100 2 100 - ;; -1|a4|A4) PAPER=1; paper=a4; XDIM="9920"; YDIM="7016" - set_clipping 150 100 150 100 - ;; -2|letter) PAPER=2; paper=letter; XDIM="10200"; YDIM="6600" - set_clipping 150 100 150 100 - ;; -3|legal) PAPER=3; paper=legal; XDIM="10200"; YDIM="8400" - set_clipping 150 100 150 100 - ;; -5|a5|A5) PAPER=5; paper=a5; XDIM="6992"; YDIM="4960" - set_clipping 150 100 150 100 - ;; -6|b5jis|B5jis) PAPER=6; paper=b5; XDIM="8598"; YDIM="6070" - set_clipping 150 100 150 100 - ;; -7|a6|A6) PAPER=7; paper=a6; XDIM="4960"; YDIM="3496" - set_clipping 150 100 150 100 - ;; -8|envMonarch) PAPER=8; paper=envMonarch;XDIM="4650"; YDIM="4500" - set_clipping 150 100 150 100 - ;; -9|envDL) PAPER=9; paper=envDL; XDIM="5200"; YDIM="5200" - set_clipping 150 100 150 100 - ;; -10|envC5) PAPER=10; paper=envC5; XDIM="7650"; YDIM="5408" - set_clipping 150 100 150 100 - ;; -11|"env#10") PAPER=11; paper=env10; XDIM="4950"; YDIM="5700" - set_clipping 150 100 150 100 - ;; -12|executive) PAPER=12; paper=executive; XDIM="8700"; YDIM="6300" - set_clipping 150 100 150 100 - ;; -13|"env#9") PAPER=13; paper=env9; XDIM="4496"; YDIM="5324" - set_clipping 150 100 150 100 - ;; -14|legal135) PAPER=14; paper=legal135; XDIM="10200"; YDIM="8100" - set_clipping 150 100 150 100 - ;; -15|a3|A3) PAPER=15; paper=a3; XDIM="19842"; YDIM="7016" - set_clipping 150 100 150 100 - ;; -16|ledger|tabloid) - PAPER=16; paper=tabloid; XDIM="20400"; YDIM="6600" - set_clipping 150 100 150 100 - ;; -*) error "Unimplemented paper code $PAPER";; -esac -# e.g. /usr/share/ghostscript/7.07/lib/gs_statd.ps -PAPERSIZE="-sPAPERSIZE=$paper"; - -case "$RES" in -300x300) XDIM=`expr $XDIM / 4`; YDIM=`expr $YDIM / 2`;; -600x600) XDIM=`expr $XDIM / 2`;; -1200x600) ;; -1200x1200) YDIM=`expr $YDIM \* 2`;; -600x1200) XDIM=`expr $XDIM / 2`; YDIM=`expr $YDIM \* 2`;; -esac - -ROTATE90=0 -case "$MODEL" in -1) # A3 or 11x17 printer - case "$paper" in - a3) # A3, do not rotate - ;; - ledger|tabloid) # ledger, do not rotate - ;; - *) # Rotate all others - ROTATE90=1 - tmp=$XDIM - XDIM=$YDIM - YDIM=$tmp - case "$RES" in - 600x600) YDIMpoints=`dc -e "6k $YDIM 600 / 72 *p"`;; - 1200x600) YDIMpoints=`dc -e "6k $YDIM 1200 / 72 *p"`;; - 2400x600) YDIMpoints=`dc -e "6k $YDIM 2400 / 72 *p"`;; - esac - esac - ;; -esac - -DIM="${XDIM}x${YDIM}" - -# -# Filter thru psnup if N-up printing has been requested -# -case $NUP in -[234689]|1[024568]) PREFILTER="nup";; -*) PREFILTER=cat;; -esac -if [ "$DEBUG" -ge 9 ]; then - PREFILTER="tee /tmp/$BASENAME.ps" -fi - -# -# Overload -G. If the file name ends with ".icm" or ".ICM" -# then convert the ICC color profile to a Postscript CRD, -# then prepend it to the users job. Select the intent -# using the -I option. -# - -create_crd() { - # - # Create a Postscript CRD - # - ICC2PS=$PREFIX/bin/foo2zjs-icc2ps - if [ -x $ICC2PS ]; then - case "$GAMMAFILE" in - none | none.icm | */none.icm) - ;; - *) - if [ -x /usr/bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- \ - "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" - fi - $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ - || error "Problem converting .ICM file to Postscript" - ;; - esac - - PSTOPS_OPTS="$PSTOPS_OPTS -c" - cat > $ICCTMP.usecie.ps <<-EOF - %!PS-Adobe-3.0 - <>setpagedevice - EOF - if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then - if [ "$QUALITY" = wts ]; then - cat >> $ICCTMP.usecie.ps <<-EOF - << /UseWTS true >> setuserparams - EOF - else - cat >> $ICCTMP.usecie.ps <<-EOF - << /UseWTS false >> setuserparams - EOF - fi - cat >> $ICCTMP.usecie.ps <<-EOF - << - /AccurateScreens true - /HalftoneType 1 - /HalftoneName (Round Dot Screen) cvn - /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} - /Frequency 137 - /Angle 37 - >> sethalftone - EOF - fi - cat > $ICCTMP.selcrd.ps <<-EOF - /Current /ColorRendering findresource setcolorrendering - EOF - case "$GAMMAFILE" in - none | none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; - *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; - esac - else - GAMMAFILE= - fi -} - -if [ $DEBUG -gt 0 ]; then - ICCTMP=/tmp/icc -else - ICCTMP=/tmp/icc$$ -fi - -if [ "" = "$COLOR" ]; then - COLORMODE= - GAMMAFILE= -else - case "$COLORMODE" in - default) COLORMODE=$DEFAULTCOLORMODE;; - esac - case "$GAMMAFILE" in - default) GAMMAFILE=samclp300-0.icm;; - esac -fi - -CRDBASE="$PREFIX/share/foo2hiperc/crd" -if false; then - case "$MODEL" in - 0) model=CLP-300;; - 1) model=CLP-600;; - esac - case "$RES" in - 600x600) SCREEN=$model-600x600cms2;; - 1200x600) SCREEN=$model-1200x600cms2;; - 1200x1200) SCREEN=$model-1200x1200cms2;; - esac -fi - -PSTOPS_OPTS="-n" -if [ $ROTATE90 = 1 ]; then - case $paper in - a3) ;; - ledger) ;; - tabloid) ;; - *) PSTOPS_OPTS="$PSTOPS_OPTS -h $YDIMpoints -r";; - esac -fi - -case "$COLORMODE" in -0|"") - # Monochrome - ;; -10|icm) - # Use old ICM method - AIB=-A - BC=-B - case "$GAMMAFILE" in - none | none.icm | */none.icm) - create_crd - ;; - *.icm|*.ICM|*.icc|*.ICC) - # - # Its really an .ICM file, not a gamma file. - # - # The file can be a full path name, or the name of a file in $SHARE/icm/ - # - if [ -r "$GAMMAFILE" ]; then - create_crd - elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then - GAMMAFILE="$SHARE/icm/$GAMMAFILE" - create_crd - else - GAMMAFILE= - fi - ;; - esac - ;; -1|crd) - # CRD - GAMMAFILE="" - GAMMAFILE="$GAMMAFILE $CRDBASE/${model}cms" - GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" - ;; -*.crd) - GAMMAFILE="$CRDBASE/prolog.ps" - if [ -f $COLORMODE ]; then - GAMMAFILE="$GAMMAFILE $COLORMODE" - elif [ -f $CRDBASE/$COLORMODE ]; then - GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" - else - error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" - fi - GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" - ;; -*) - error "Unknown color method '$COLORMODE'" - ;; -esac - -if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then - PSTOPS_OPTS="$PSTOPS_OPTS -w" -elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then - PSTOPS_OPTS="$PSTOPS_OPTS -a" -fi - -if [ "" != "$COLOR" ]; then - if [ "" = "$AIB" -a "" = "$BC" ]; then - # Faster, but can't handle AllIsBlack or BlackClears - GSDEV=-sDEVICE=pksmraw - else - # Can't handle different size pages - GSDEV=-sDEVICE=bitcmyk - fi -fi - -# -# Figure out USERNAME -# -if [ "$LPUSER" != "" ]; then - USER="$LPUSER@$LPHOST" -else - USER="" -fi - -# -# Main Program, just cobble together the pipeline and run it -# -# The malarky with file descriptors 1 and 3 is to avoid a bug in -# (some versions?) of Ghostscript where Postscript's stdout gets -# intermingled with the printer drivers output, resulting in -# corrupted image data. -# -GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" - -foo2zjs-pstops $PSTOPS_OPTS | \ -$PREFILTER \ -| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ - -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null) 3>&1 \ -| foo2hiperc -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ - $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG $SAVETONER \ - -J "$LPJOB" -U "$USER" \ - $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD $COMPRESSED -D$DEBUG - -# -# Log the command line, for debugging and problem reports -# -if [ -x /usr/bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- \ - "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" - logger -t "$BASENAME" -p lpr.info -- \ - "foo2hiperc -r$RES -g$DIM -p$PAPER -m$MEDIA \ --n$COPIES -d$DUPLEX -s$SOURCE $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG \ -$SAVETONER $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD $COMPRESSED" -fi - -# -# Remove cruft -# -if [ $DEBUG -eq 0 ]; then - for i in crd.ps log usecie.ps selcrd.ps - do - file="$ICCTMP.$i" - [ -f $file ] && rm -f $file - done - [ -f "$TMPFILE" ] && rm -f $TMPFILE - [ -f "$TMPFILE2" ] && rm -f $TMPFILE2 -fi - -exit 0 diff --git a/foo2hiperc-wrapper.1 b/foo2hiperc-wrapper.1 deleted file mode 100644 index a695bd3..0000000 --- a/foo2hiperc-wrapper.1 +++ /dev/null @@ -1,393 +0,0 @@ -'\" t -'\" -'\" DO NOT EDIT! This file is generated from foo2hiperc-wrapper.1in -'\" -'\" t -.TH foo2hiperc-wrapper 1 "Sun May 26 18:25:20 2024" "foo2hiperc-wrapper 0.0" -'\" -'\" -'\"========================================================================== -'\" STRINGS and MACROS -'\"========================================================================== -'\" -'\" Define strings for special characters that nroff doesn't have -'\" -'\" N.B. using .if cua to test for special characters did not work. -'\" -.if !'\*[.T]'ps' .ds ua up -.if '\*[.T]'ps' .ds ua \(ua -.if !'\*[.T]'ps' .ds da down -.if '\*[.T]'ps' .ds da \(da -.if !'\*[.T]'ps' .ds <- left -.if '\*[.T]'ps' .ds <- \(<- -.if !'\*[.T]'ps' .ds -> right -.if '\*[.T]'ps' .ds -> \(-> -'\" -'\" bx - box a Courier string for making keycaps -'\" -'\" N.B. this mess is to make the line drawing come out only -'\" if we are really generating postscript -'\" -.de bx -.ie !'\*[.T]'ps' \{\ -. RB [ \\$1 ]\\$2 -.\} -.el \{\ -. ie !r ps4html \{\ -'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' -. ft CW -. nr par*bxw \w'\\$1'+.4m -\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ -\Z'\h'.2m'\s-1\\$1\s+1'\ -\h'\\n[par*bxw]u'\\$2 -. ft P -. \} -. el \{\ -. RB [ \\$1 ]\\$2 -. \} -.\} -.. -'\" -'\" strings to set current color (null with old groff) -'\" -.if mred .ds red \m[red] -.if mgreen .ds green \m[green] -.if mblue .ds blue \m[blue] -.if mblack .ds black \m[black] -.if mblack .ds mP \mP -'\" -'\" fix for grotty + xterm. We call for orange, grotty outputs yellow, -'\" but xterm displays yellow as orange. The cycle is complete. -'\" -.if n .defcolor orange rgb #ffff00 -'\" -'\" color - set the current color (ignores request with old groff) -'\" -.de color -.if mred \m[\\$1]\c -.. -'\" -'\" colorword - colorize a word (ignored by old groff) -'\" -.de colorword -.ie m\\$1 \m[\\$1]\\$2\mP\c -.el \\$2\c -.. -'\" -'\" colbox - colorize a word in a filled box -'\" -.de colbox -.ie mred \M[\\$2]\ -\v'+.167v'\ -\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ -\v'-.167v'\ -\m[\\$1]\\$3\mP\MP -.el \\$3\c -.. -'\" -'\" Macros for doing pdfmarks -'\" -.de specialps -.if '\*[.T]'ps' \\k_\X'ps: \\$*'\h'|\\n_u'\c -.. -'\" -'\" pdfmark PDFMARKCODE -'\" -.ds pdfmarks -.if d pdfmarks \{\ -.de pdfmark -. specialps exec [\\$1 pdfmark -.. -'\" -'\" pdfdest LINKNAME -'\" -.de pdfdest -.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" -.. -'\" -'\" pdfbookmark COUNT LINKNAME STRING -'\" -.de pdfbookmark -. pdfmark "/View [/XYZ 44 730 1.0] /Count \\$1 /Dest /\\$2 /Title (\\$3) /OUT" -.. -'\" -'\" Define the SH and SS macros to save pdfmark information -'\" in "arrays" of numbers and strings. -'\" -.if !r rr_n \{\ -.nr rr_n 0 1 -.am SH -. nr rr_levels!\\n+[rr_n] 2 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.am SS -. nr rr_levels!\\n+[rr_n] 3 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.\} -'\" -'\" Called at the end of the document to generate the pdfmark outline -'\" -.de pdf_outline -.nr rr_levels!\\n+[rr_n] 1 -.nr rr_i 0 1 -.while \\n+[rr_i]<\\n[rr_n] \{\ -. nr rr_ip1 \\n[rr_i]+1 -. nr rr_count 0 -. if \\n[rr_levels!\\n[rr_ip1]]>\\n[rr_levels!\\n[rr_i]] \{\ -. nr rr_j \\n[rr_i] 1 -. while \\n+[rr_j]<\\n[rr_n] \{\ -. if \\n[rr_levels!\\n[rr_j]]<=\\n[rr_levels!\\n[rr_i]] \{\ -. break -. \} -. if \\n[rr_levels!\\n[rr_j]]==(\\n[rr_levels!\\n[rr_i]]+1) \{\ -. nr rr_count \\n[rr_count]+1 -. \} -. \} -. \} -. ds hhh \\*[rr_labels!\\n[rr_i]] -. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" -.\} -.. -'\" -'\" Some postscript to make pdfmarks harmless on old interpreters... -'\" -.specialps "def /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse" -'\" -'\" Force display of Bookmarks in Acrobat when document is viewed. -'\" -.pdfmark "[/PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW" -'\" -'\" Output the document info in pdfmarks -'\" -.pdfmark "\ - /Title (\*[an-title](\*[an-section])) \ - /Subject (\*[an-title] Manual Page) \ - /Author (Rick Richardson) \ - /Keywords (printing) \ - /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ - /CreationDate (\*[an-extra1]) \ - /ModDate (\*[an-extra1]) \ - /DOCINFO" -\} -'\" -'\" The manual page name is only 1st level mark -'\" -.nr rr_levels!\n+[rr_n] 1 -.ds rr_labels!\n[rr_n] \*[an-title](\*[an-section]) -.pdfdest Link\n[rr_n] -'\" -'\"========================================================================== -'\" MANUAL PAGE SOURCE -'\"========================================================================== -.SH NAME -foo2hiperc-wrapper \- Convert Postscript into a HIPERC printer stream -.SH SYNOPSIS -.B foo2hiperc-wrapper -.RI [ options "] [" ps-file ] -.SH DESCRIPTION -.B foo2hiperc-wrapper -is a Foomatic compatible printer wrapper for the -\fBfoo2hiperc\fP printer driver. -This script reads a Postscript \fIps-file\fP or standard input -and converts it to the Oki HIPERC printer format -for driving the -Oki C310dn, C3100, C3200, C3300n, C3400n, C5100n, C5500n, C5600n and the C5800n -HIPERC printers. -.P -This script can be used in a standalone fashion, but is intended to -be called from a printer spooler system which uses the Foomatic -printer database. - -.SH COMMAND LINE OPTIONS -.SS Normal Options -These are the options used to select the parameters of a -print job that are usually controlled on a per job basis. -.TP -.BI \-c -Print in color (else monochrome). -.TP -.BI \-C\0 colormode -Color correction mode [0]. -.TS -n l . -10 ICM color profile (using -G *.icm file) -.TE -.TP -.BI \-d\0 duplex -Duplex code to send to printer [1]. -.TS -| n l | n l | n l . -1 off 2 long edge 3 short edge -.TE -.TP -.BI \-m\0 media -Media code to send to printer [0]. -.TS -l l l -l n n. -_ -Media HIPERC -_ -plain 0 -labels 1 -transparency 2 -.TE -.TP -.BI \-p\0 paper -Paper size code to send to printer [2]. -.TS -box; -| n l | n l. -1 A4 2 letter -3 legal - - -5 A5 6 B5jis -7 A6 8 env Monarch -9 env DL 10 env C5 -11 env #10 12 executive -13 env #9 14 legal 13.5" -15 A3 16 tabloid/ledger -.TE -.TP -.BI \-n\0 copies -Number of copies [1]. -.TP -.BI \-r\0 xres x yres -Set device resolution in pixels/inch [600x600]. -.TP -.BI \-s\0 source -Source (Input Slot) code to send to printer [0]. -.TS -| n l | n l. -0 auto select -1 tray1 2 tray2 -3 multi 4 manual -.TE -.TP -.BI \-t -Draft mode. Every other pixel is white. -.TP -.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" -Print in N-up. Requires the \fBpsutils\fP package. -.TP -.BI \-o\0 orient -Orientation used for N-up. -.TS -l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) -.TE -.SS Printer Tweaking Options -These are the options used to customize the operation of \fBfoo2hiperc\fP -for a particular printer. -.TP -.BI \-u\0 xoff x yoff -Set the offset of the start of the printable region from the -upper left corner, in pixels [varies with paper size]. -.TP -.BI \-l\0 xoff x yoff -Set the offset of the end of the printable region from the -lower right corner, in pixels [varies with paper size]. -.TP -.BI \-L\0 mask -Send the logical clipping values from -u/-l in the HIPERC stream. -\fBfoo2hiperc-wrapper\fP always runs Ghostscript with the ideal page dimensions, -so that the scale of the image is correct, -regardless whether or not the printer has unprintable regions. -This option is used to move the position of the clipped image -back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be -good in most cases. -.TS -l l. -0 don't send any logical clipping amounts -1 only send Y clipping amount -2 only send X clipping amount -3 send both X and Y clipping amounts -.TE -.TP -.BI \-z\0 model -Model is 0 for non-A3 sized printers, -and 1 for A3/Tabloid/Ledger sized printers (i.e. C810, etc.). -The default is 0. -.TP -.BI \-Z\0 compressed -Use uncompressed (0) or compressed (1) JBIG data. -.SS Color Tweaking Options -These are the options used to control the quality of color output. -Color correction is currently a WORK IN PROGRESS. -.TP -.BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, -etc. This option may appear more than once. -.TP -.BI \-G\0 profile.icm -Convert \fIprofile.icm\fP to a Postscript color rendering -dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and -adjust the printer colors by using the Postscript \fBsetcolorrendering\fP -operator. (WORK IN PROGRESS). -.TP -.BI \-G\0 gamma-file.ps -Prepend \fIgamma-file.ps\fP to the Postscript input to perform -color correction using the \fBsetcolortransfer\fP Postscript operator. -For example, the file might contain: -.br -{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer -.TP -.BI \-I\0 intent -Select profile intent from the ICM file. -0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. -Default is 0 (perceptual). -.SS Debugging Options -These options are used for debugging \fBfoo2hiperc\fP and its wrapper. -.TP -.BI \-S\0 plane -Output just a single color plane from a color print and print it -on the black plane. The default is to output all color planes. -.TS -l l. -1 Cyan -2 Magenta -3 Yellow -4 Black -.TE -.TP -.BI \-D\0 level -Set Debug level [0]. - -.SH EXAMPLES -Create a monochrome HIPERC stream from a Postscript document, -examine it, and then print it using nc(1) or netcat(1): - -.RS -.nf -foo2hiperc-wrapper testpage.ps > testpage.hc -hipercdecode < testpage.hc -nc 192.168.1.NNN 9100 < testpage.hc -.fi -.RE -.P -Create a color HIPERC stream from a Postscript document: - -.RS -.nf -foo2hiperc-wrapper -c testpage.ps > testpage.hc -.fi -.RE - -.SH FILES -.BR /usr/bin/foo2hiperc-wrapper -.SH SEE ALSO -.BR foo2hiperc (1), -.BR hipercdecode (1) -.SH "AUTHOR" -Rick Richardson -.br -http://foo2hiperc.rkkda.com/ -'\" -'\" -'\" -.em pdf_outline diff --git a/foo2hiperc-wrapper.1in b/foo2hiperc-wrapper.1in index 3601f56..0dca96b 100644 --- a/foo2hiperc-wrapper.1in +++ b/foo2hiperc-wrapper.1in @@ -37,7 +37,7 @@ Print in color (else monochrome). Color correction mode [0]. .TS n l . -10 ICM color profile (using -G *.icm file) +10 ICM color profile (using \-G *.icm file) .TE .TP .BI \-d\0 duplex @@ -66,7 +66,7 @@ Paper size code to send to printer [2]. box; | n l | n l. 1 A4 2 letter -3 legal - - +3 legal \- \- 5 A5 6 B5jis 7 A6 8 env Monarch 9 env DL 10 env C5 @@ -100,9 +100,9 @@ Print in N-up. Requires the \fBpsutils\fP package. Orientation used for N-up. .TS l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) +Portrait \-op (normal) +Landscape \-ol (rotated 90 degrees anticlockwise) +Seascape \-os (rotated 90 degrees clockwise) .TE .SS Printer Tweaking Options These are the options used to customize the operation of \fBfoo2hiperc\fP @@ -117,13 +117,13 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [varies with paper size]. .TP .BI \-L\0 mask -Send the logical clipping values from -u/-l in the HIPERC stream. +Send the logical clipping values from \-u/-l in the HIPERC stream. \fBfoo2hiperc-wrapper\fP always runs Ghostscript with the ideal page dimensions, so that the scale of the image is correct, regardless whether or not the printer has unprintable regions. This option is used to move the position of the clipped image back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be +the amount which was clipped by \-u and \-l, and should be good in most cases. .TS l l. @@ -145,7 +145,7 @@ These are the options used to control the quality of color output. Color correction is currently a WORK IN PROGRESS. .TP .BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, etc. This option may appear more than once. .TP .BI \-G\0 profile.icm @@ -198,7 +198,7 @@ Create a color HIPERC stream from a Postscript document: .RS .nf -foo2hiperc-wrapper -c testpage.ps > testpage.hc +foo2hiperc-wrapper \-c testpage.ps > testpage.hc .fi .RE diff --git a/foo2hiperc-wrapper.in b/foo2hiperc-wrapper.in index adcc98d..86b6cee 100755 --- a/foo2hiperc-wrapper.in +++ b/foo2hiperc-wrapper.in @@ -13,8 +13,8 @@ #* 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. +#* along with this program; if not, see +#* . #* #* Authors: Rick Richardson diff --git a/foo2hiperc.1 b/foo2hiperc.1 deleted file mode 100644 index 09c7809..0000000 --- a/foo2hiperc.1 +++ /dev/null @@ -1,356 +0,0 @@ -'\" t -'\" -'\" DO NOT EDIT! This file is generated from foo2hiperc.1in -'\" -'\" t -.TH foo2hiperc 1 "Sun May 26 18:25:20 2024" "foo2hiperc 0.0" -'\" -'\" -'\"========================================================================== -'\" STRINGS and MACROS -'\"========================================================================== -'\" -'\" Define strings for special characters that nroff doesn't have -'\" -'\" N.B. using .if cua to test for special characters did not work. -'\" -.if !'\*[.T]'ps' .ds ua up -.if '\*[.T]'ps' .ds ua \(ua -.if !'\*[.T]'ps' .ds da down -.if '\*[.T]'ps' .ds da \(da -.if !'\*[.T]'ps' .ds <- left -.if '\*[.T]'ps' .ds <- \(<- -.if !'\*[.T]'ps' .ds -> right -.if '\*[.T]'ps' .ds -> \(-> -'\" -'\" bx - box a Courier string for making keycaps -'\" -'\" N.B. this mess is to make the line drawing come out only -'\" if we are really generating postscript -'\" -.de bx -.ie !'\*[.T]'ps' \{\ -. RB [ \\$1 ]\\$2 -.\} -.el \{\ -. ie !r ps4html \{\ -'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' -. ft CW -. nr par*bxw \w'\\$1'+.4m -\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ -\Z'\h'.2m'\s-1\\$1\s+1'\ -\h'\\n[par*bxw]u'\\$2 -. ft P -. \} -. el \{\ -. RB [ \\$1 ]\\$2 -. \} -.\} -.. -'\" -'\" strings to set current color (null with old groff) -'\" -.if mred .ds red \m[red] -.if mgreen .ds green \m[green] -.if mblue .ds blue \m[blue] -.if mblack .ds black \m[black] -.if mblack .ds mP \mP -'\" -'\" fix for grotty + xterm. We call for orange, grotty outputs yellow, -'\" but xterm displays yellow as orange. The cycle is complete. -'\" -.if n .defcolor orange rgb #ffff00 -'\" -'\" color - set the current color (ignores request with old groff) -'\" -.de color -.if mred \m[\\$1]\c -.. -'\" -'\" colorword - colorize a word (ignored by old groff) -'\" -.de colorword -.ie m\\$1 \m[\\$1]\\$2\mP\c -.el \\$2\c -.. -'\" -'\" colbox - colorize a word in a filled box -'\" -.de colbox -.ie mred \M[\\$2]\ -\v'+.167v'\ -\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ -\v'-.167v'\ -\m[\\$1]\\$3\mP\MP -.el \\$3\c -.. -'\" -'\" Macros for doing pdfmarks -'\" -.de specialps -.if '\*[.T]'ps' \\k_\X'ps: \\$*'\h'|\\n_u'\c -.. -'\" -'\" pdfmark PDFMARKCODE -'\" -.ds pdfmarks -.if d pdfmarks \{\ -.de pdfmark -. specialps exec [\\$1 pdfmark -.. -'\" -'\" pdfdest LINKNAME -'\" -.de pdfdest -.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" -.. -'\" -'\" pdfbookmark COUNT LINKNAME STRING -'\" -.de pdfbookmark -. pdfmark "/View [/XYZ 44 730 1.0] /Count \\$1 /Dest /\\$2 /Title (\\$3) /OUT" -.. -'\" -'\" Define the SH and SS macros to save pdfmark information -'\" in "arrays" of numbers and strings. -'\" -.if !r rr_n \{\ -.nr rr_n 0 1 -.am SH -. nr rr_levels!\\n+[rr_n] 2 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.am SS -. nr rr_levels!\\n+[rr_n] 3 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.\} -'\" -'\" Called at the end of the document to generate the pdfmark outline -'\" -.de pdf_outline -.nr rr_levels!\\n+[rr_n] 1 -.nr rr_i 0 1 -.while \\n+[rr_i]<\\n[rr_n] \{\ -. nr rr_ip1 \\n[rr_i]+1 -. nr rr_count 0 -. if \\n[rr_levels!\\n[rr_ip1]]>\\n[rr_levels!\\n[rr_i]] \{\ -. nr rr_j \\n[rr_i] 1 -. while \\n+[rr_j]<\\n[rr_n] \{\ -. if \\n[rr_levels!\\n[rr_j]]<=\\n[rr_levels!\\n[rr_i]] \{\ -. break -. \} -. if \\n[rr_levels!\\n[rr_j]]==(\\n[rr_levels!\\n[rr_i]]+1) \{\ -. nr rr_count \\n[rr_count]+1 -. \} -. \} -. \} -. ds hhh \\*[rr_labels!\\n[rr_i]] -. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" -.\} -.. -'\" -'\" Some postscript to make pdfmarks harmless on old interpreters... -'\" -.specialps "def /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse" -'\" -'\" Force display of Bookmarks in Acrobat when document is viewed. -'\" -.pdfmark "[/PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW" -'\" -'\" Output the document info in pdfmarks -'\" -.pdfmark "\ - /Title (\*[an-title](\*[an-section])) \ - /Subject (\*[an-title] Manual Page) \ - /Author (Rick Richardson) \ - /Keywords (printing) \ - /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ - /CreationDate (\*[an-extra1]) \ - /ModDate (\*[an-extra1]) \ - /DOCINFO" -\} -'\" -'\" The manual page name is only 1st level mark -'\" -.nr rr_levels!\n+[rr_n] 1 -.ds rr_labels!\n[rr_n] \*[an-title](\*[an-section]) -.pdfdest Link\n[rr_n] -'\" -'\"========================================================================== -'\" MANUAL PAGE SOURCE -'\"========================================================================== -.SH NAME -foo2hiperc \- Convert Ghostscript pbmraw or bitcmyk format into a -HIPERC printer stream -.SH SYNOPSIS -.B foo2hiperc -.RI [ options "] <" pbmraw-file " >" hiperc-file -.sp 1 -.B foo2hiperc -.RI [ options "] <" bitcmyk-file " >" hiperc-file -.sp 1 -.B foo2hiperc -.RI [ options "] <" pksmraw-file " >" hiperc-file -.SH DESCRIPTION -.B foo2hiperc -converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats to monochrome -or color HIPERC streams, -for driving the -Oki C310dn, C3100, C3200, C3300n, C3400n, C5100n, C5500n, C5600n, and the C5800n -HIPERC printers. - -.SH COMMAND LINE OPTIONS -.SS Normal Options -These are the options used to select the parameters of a -print job that are usually controlled on a per job basis. -.TP -.BI \-c -Force color mode if autodetect doesn't work. -.TP -.BI \-d\0 duplex -Duplex code to send to printer [1]. -.TS -| n l | n l | n l . -1 off 2 long edge 3 short edge -.TE -.TP -.BI \-g\0 xpix x ypix -Set page dimensions in pixels [5100x6600]. -.TP -.BI \-m\0 media -Media code to send to printer [0]. -.TS -l l l -l n n. -_ -Media HIPERC -_ -plain 0 -labels 1 -transparency 2 -.TE -.TP -.BI \-p\0 paper -Paper code to send to printer [2]. -.TS -box; -| n l | n l. -1 A4 2 letter -3 legal - - -5 A5 6 B5jis -7 A6 8 env Monarch -9 env DL 10 env C5 -11 env #10 12 executive -13 env #9 14 legal 13.5" -15 A3 16 tabloid/ledger -.TE -.TP -.BI \-n\0 copies -Number of copies [1]. -.TP -.BI \-r\0 xres x yres -Set device resolution in pixels/inch [600x600]. -.TP -.BI \-s\0 source -Source (InputSlot) code to send to printer [0]. -.TS -| n l | n l. -0 auto select -1 tray1 2 tray2 -3 multi 4 manual -.TE -.TP -.BI \-t -Draft mode. Every other pixel is white. -.TP -.BI \-J\0 filename -Filename string to send to printer. -.TP -.BI \-U\0 username -Username string to send to printer. -.SS Printer Tweaking Options -These are the options used to customize the operation of \fBfoo2hiperc\fP -for a particular printer. -.TP -.BI \-u\0 xoff x yoff -Set the offset of the start of the printable region from the -upper left corner, in pixels [0x0]. -.TP -.BI \-l\0 xoff x yoff -Set the offset of the end of the printable region from the -lower right corner, in pixels [0x0]. -.TP -.BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the HIPERC stream [3]. -.TS -l l. -0 don't send any logical clipping amounts -1 only send Y clipping amount -2 only send X clipping amount -3 send both X and Y clipping amounts -.TE -.TP -.BI \-A -AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. -.TP -.BI \-B -BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. -.TP -.BI \-Z\0 compressed -Use uncompressed (0) or compressed (1) JBIG data. -.SS Debugging Options -These options are used for debugging \fBfoo2hiperc\fP. -.TP -.BI \-S\0 plane -Output just a single color plane from a color print and print it -on the black plane. The default is to output all color planes. -.TS -l l. -1 Cyan -2 Magenta -3 Yellow -4 Black -.TE -.TP -.BI \-D\0 level -Set Debug level [0]. - -.SH EXAMPLES -Create a black and white HIPERC stream: - -.RS -.nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2hiperc -r600x600 -g5100x6600 -p0 >testpage.zm -.fi -.RE -.P -Create a color HIPERC stream: - -.RS -.nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2hiperc -r600x600 -g5100x6600 -p0 >testpage.zc -.fi -.RE - -.SH FILES -.BR /usr/bin/foo2hiperc -.SH SEE ALSO -.BR foo2hiperc-wrapper (1), -.BR hipercdecode (1) -.SH "AUTHOR" -Rick Richardson -.br -http://foo2hiperc.rkkda.com/ -'\" -'\" -'\" -.em pdf_outline diff --git a/foo2hiperc.1in b/foo2hiperc.1in index 6496984..dca0143 100644 --- a/foo2hiperc.1in +++ b/foo2hiperc.1in @@ -11,13 +11,13 @@ foo2hiperc \- Convert Ghostscript pbmraw or bitcmyk format into a HIPERC printer stream .SH SYNOPSIS .B foo2hiperc -.RI [ options "] <" pbmraw-file " >" hiperc-file +.RI [ options "] <" pbmraw\-file " >" hiperc\-file .sp 1 .B foo2hiperc -.RI [ options "] <" bitcmyk-file " >" hiperc-file +.RI [ options "] <" bitcmyk\-file " >" hiperc\-file .sp 1 .B foo2hiperc -.RI [ options "] <" pksmraw-file " >" hiperc-file +.RI [ options "] <" pksmraw\-file " >" hiperc\-file .SH DESCRIPTION .B foo2hiperc converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats to monochrome @@ -63,7 +63,7 @@ Paper code to send to printer [2]. box; | n l | n l. 1 A4 2 letter -3 legal - - +3 legal \- \- 5 A5 6 B5jis 7 A6 8 env Monarch 9 env DL 10 env C5 @@ -108,7 +108,7 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [0x0]. .TP .BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the HIPERC stream [3]. +Send logical clipping amounts implied by \-u/-l in the HIPERC stream [3]. .TS l l. 0 don't send any logical clipping amounts @@ -147,10 +147,10 @@ Create a black and white HIPERC stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2hiperc -r600x600 -g5100x6600 -p0 >testpage.zm +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-r600x600 \-sDEVICE=pbmraw \ + \-sOutputFile=- \- < testpage.ps \ +| foo2hiperc \-r600x600 \-g5100x6600 \-p0 >testpage.zm .fi .RE .P @@ -158,10 +158,10 @@ Create a color HIPERC stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2hiperc -r600x600 -g5100x6600 -p0 >testpage.zc +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-g5100x6600 \-r600x600 \-sDEVICE=bitcmyk \ + \-sOutputFile=- \- < testpage.ps \ +| foo2hiperc \-r600x600 \-g5100x6600 \-p0 >testpage.zc .fi .RE diff --git a/foo2hiperc.c b/foo2hiperc.c index 509028c..bb220ea 100644 --- a/foo2hiperc.c +++ b/foo2hiperc.c @@ -5,7 +5,7 @@ This program converts pbm (B/W) images and 1-bit-per-pixel cmyk images (both produced by ghostscript) to Zenographics ZJ-stream format. There is some information about the ZJS format at http://ddk.zeno.com. -With this utility, you can print to some HP printers, such as these: +With this utility, you can print to some Oki printers, such as these: - Oki C310dn, C3100, C3200, C3300n, C3400n, C5100n, C5500n AUTHORS @@ -31,8 +31,8 @@ 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. +along with this program; if not, see +. If you want to use this program under different license conditions, then contact the author for an arrangement. @@ -48,7 +48,7 @@ yourself. */ -static char Version[] = "$Id: foo2hiperc.c,v 1.35 2013/12/01 20:13:58 rick Exp $"; +static char Version[] = "$Id: foo2hiperc.c,v 1.37 2019/05/17 21:55:07 rick Exp $"; #include #include @@ -1645,8 +1645,8 @@ main(int argc, char *argv[]) if (getenv("DEVICE_URI")) IsCUPS = 1; -if (getenv("ccc")) - Compressed = 1; + if (getenv("ccc")) + Compressed = 1; Bpp = ResX / 600; //ResX = 600; diff --git a/foo2hp b/foo2hp deleted file mode 100755 index fa9d11213f458f96bcc21e8226639516970345c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95744 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 right -.if '\*[.T]'ps' .ds -> \(-> -'\" -'\" bx - box a Courier string for making keycaps -'\" -'\" N.B. this mess is to make the line drawing come out only -'\" if we are really generating postscript -'\" -.de bx -.ie !'\*[.T]'ps' \{\ -. RB [ \\$1 ]\\$2 -.\} -.el \{\ -. ie !r ps4html \{\ -'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' -. ft CW -. nr par*bxw \w'\\$1'+.4m -\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ -\Z'\h'.2m'\s-1\\$1\s+1'\ -\h'\\n[par*bxw]u'\\$2 -. ft P -. \} -. el \{\ -. RB [ \\$1 ]\\$2 -. \} -.\} -.. -'\" -'\" strings to set current color (null with old groff) -'\" -.if mred .ds red \m[red] -.if mgreen .ds green \m[green] -.if mblue .ds blue \m[blue] -.if mblack .ds black \m[black] -.if mblack .ds mP \mP -'\" -'\" fix for grotty + xterm. We call for orange, grotty outputs yellow, -'\" but xterm displays yellow as orange. The cycle is complete. -'\" -.if n .defcolor orange rgb #ffff00 -'\" -'\" color - set the current color (ignores request with old groff) -'\" -.de color -.if mred \m[\\$1]\c -.. -'\" -'\" colorword - colorize a word (ignored by old groff) -'\" -.de colorword -.ie m\\$1 \m[\\$1]\\$2\mP\c -.el \\$2\c -.. -'\" -'\" colbox - colorize a word in a filled box -'\" -.de colbox -.ie mred \M[\\$2]\ -\v'+.167v'\ -\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ -\v'-.167v'\ -\m[\\$1]\\$3\mP\MP -.el \\$3\c -.. -'\" -'\" Macros for doing pdfmarks -'\" -.de specialps -.if '\*[.T]'ps' \\k_\X'ps: \\$*'\h'|\\n_u'\c -.. -'\" -'\" pdfmark PDFMARKCODE -'\" -.ds pdfmarks -.if d pdfmarks \{\ -.de pdfmark -. specialps exec [\\$1 pdfmark -.. -'\" -'\" pdfdest LINKNAME -'\" -.de pdfdest -.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" -.. -'\" -'\" pdfbookmark COUNT LINKNAME STRING -'\" -.de pdfbookmark -. pdfmark "/View [/XYZ 44 730 1.0] /Count \\$1 /Dest /\\$2 /Title (\\$3) /OUT" -.. -'\" -'\" Define the SH and SS macros to save pdfmark information -'\" in "arrays" of numbers and strings. -'\" -.if !r rr_n \{\ -.nr rr_n 0 1 -.am SH -. nr rr_levels!\\n+[rr_n] 2 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.am SS -. nr rr_levels!\\n+[rr_n] 3 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.\} -'\" -'\" Called at the end of the document to generate the pdfmark outline -'\" -.de pdf_outline -.nr rr_levels!\\n+[rr_n] 1 -.nr rr_i 0 1 -.while \\n+[rr_i]<\\n[rr_n] \{\ -. nr rr_ip1 \\n[rr_i]+1 -. nr rr_count 0 -. if \\n[rr_levels!\\n[rr_ip1]]>\\n[rr_levels!\\n[rr_i]] \{\ -. nr rr_j \\n[rr_i] 1 -. while \\n+[rr_j]<\\n[rr_n] \{\ -. if \\n[rr_levels!\\n[rr_j]]<=\\n[rr_levels!\\n[rr_i]] \{\ -. break -. \} -. if \\n[rr_levels!\\n[rr_j]]==(\\n[rr_levels!\\n[rr_i]]+1) \{\ -. nr rr_count \\n[rr_count]+1 -. \} -. \} -. \} -. ds hhh \\*[rr_labels!\\n[rr_i]] -. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" -.\} -.. -'\" -'\" Some postscript to make pdfmarks harmless on old interpreters... -'\" -.specialps "def /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse" -'\" -'\" Force display of Bookmarks in Acrobat when document is viewed. -'\" -.pdfmark "[/PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW" -'\" -'\" Output the document info in pdfmarks -'\" -.pdfmark "\ - /Title (\*[an-title](\*[an-section])) \ - /Subject (\*[an-title] Manual Page) \ - /Author (Rick Richardson) \ - /Keywords (printing) \ - /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ - /CreationDate (\*[an-extra1]) \ - /ModDate (\*[an-extra1]) \ - /DOCINFO" -\} -'\" -'\" The manual page name is only 1st level mark -'\" -.nr rr_levels!\n+[rr_n] 1 -.ds rr_labels!\n[rr_n] \*[an-title](\*[an-section]) -.pdfdest Link\n[rr_n] -'\" -'\"========================================================================== -'\" MANUAL PAGE SOURCE -'\"========================================================================== -.SH NAME -foo2hp \- Convert Ghostscript pbmraw or bitcmyk format into a -ZJS printer stream -.SH SYNOPSIS -.B foo2hp -.RI [ options "] <" pbmraw-file " >" zjs-file -.sp 1 -.B foo2hp -.RI [ options "] <" bitcmyk-file " >" zjs-file -.sp 1 -.B foo2hp -.RI [ options "] <" cups-file " >" zjs-file -.SH DESCRIPTION -.B foo2hp -converts Ghostscript pbmraw, bitcmyk, or cups output formats to monochrome -or color ZJS streams, -for driving the Hewlett-Packard 2600n color laser printer -and other Zenographics-based printers. - -.SH COMMAND LINE OPTIONS -.SS Normal Options -These are the options used to select the parameters of a -print job that are usually controlled on a per job basis. -.TP -.BI \-b\0 bits -Bits per plane if autodetect doesn't work (1 or 2) [1]. -.TP -.BI \-c -Force color mode if autodetect doesn't work. -.TP -.BI \-d\0 duplex -Duplex code to send to printer [1]. -.TS -| n l | n l | n l . -1 off 2 long edge 3 short edge -.TE -.TP -.BI \-g\0 xpix x ypix -Set page dimensions in pixels [10200x6600]. -.TP -.BI \-m\0 media -Media code to send to printer [1]. -.TS -l l -l n. -_ -Media HPLJ 2600n -_ -plain 1 -preprinted 514 -letterhead 513 -transparency 2 -prepunched 515 -labels 265 -bond 260 -recycled 516 -color 512 -tough 276 -envelope 267 -light 258 -heavy 262 -cardstock 261 -lightglossy 268 -glossy 269 -heavyglossy 270 -cover 277 -photo 278 -.TE -.TP -.BI \-p\0 paper -Paper code to send to printer [1]. -.TS -box; -| n l | n l. -1 letter 9 A4 -5 legal 11 A5 -7 executive 13 B5jis -20 env #10 27 env DL -28 env C5 34 env B5 -37 env Monarch -.TE -.TP -.BI \-n\0 copies -Number of copies [1]. -.TP -.BI \-r\0 xres x yres -Set device resolution in pixels/inch [600x600]. -.TP -.BI \-s\0 source -Source (InputSlot) code to send to printer [7]. -.TS -| n l | n l. -1 tray 2 7 auto -2 tray 1 -.TE -.TP -.BI \-t -Draft mode. Every other pixel is white. -.TP -.BI \-J\0 filename -Filename string to send to printer. -.TP -.BI \-U\0 username -Username string to send to printer. -.SS Printer Tweaking Options -These are the options used to customize the operation of \fBfoo2hp\fP -for a particular printer. -.TP -.BI \-u\0 xoff x yoff -Set the offset of the start of the printable region from the -upper left corner, in pixels [0x0]. -.TP -.BI \-l\0 xoff x yoff -Set the offset of the end of the printable region from the -lower right corner, in pixels [0x0]. -.TP -.BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the ZjStream [3]. -.TS -l l. -0 don't send any logical clipping amounts -1 only send Y clipping amount -2 only send X clipping amount -3 send both X and Y clipping amounts -.TE -.TP -.BI \-O\0 c,m,y,k -Alignment of CMYK in rows. The default is 0,0,0,0. -.TP -.BI \-P -Do not send START_PLANE codes on monochrome output. May be -needed by some black and white only printers, such as the -HP LaserJet 1000. -.TP -.BI \-A -AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. -.TP -.BI \-B -BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. -.TP -.BI \-X\0 padlen -Add extra zero padding to the end of BID segments. The default is -16 bytes. -.SS Debugging Options -These options are used for debugging \fBfoo2hp\fP. -.TP -.BI \-S\0 plane -Output just a single color plane from a color print and print it -on the black plane. The default is to output all color planes. -.TS -l l. -1 Cyan -2 Magenta -3 Yellow -4 Black -.TE -.TP -.BI \-D\0 level -Set Debug level [0]. - -.SH EXAMPLES -Create a black and white ZJS stream: - -.RS -.nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2hp -r600x600 -g5100x6600 -p1 >testpage.zm -.fi -.RE -.P -Create a color ZJS stream: - -.RS -.nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2hp -r600x600 -g5100x6600 -p1 >testpage.zc -.fi -.RE - -.SH FILES -.BR /usr/bin/foo2hp -.SH SEE ALSO -.BR foo2hp2600-wrapper (1), -.BR zjsdecode (1) -.SH "AUTHOR" -Rick Richardson -.br -http://foo2hp.rkkda.com/ -'\" -'\" -'\" -.em pdf_outline diff --git a/foo2hp.1in b/foo2hp.1in index d037311..f4e5e49 100644 --- a/foo2hp.1in +++ b/foo2hp.1in @@ -123,7 +123,7 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [0x0]. .TP .BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the ZjStream [3]. +Send logical clipping amounts implied by \-u/-l in the ZjStream [3]. .TS l l. 0 don't send any logical clipping amounts @@ -171,10 +171,10 @@ Create a black and white ZJS stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2hp -r600x600 -g5100x6600 -p1 >testpage.zm +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-r600x600 \-sDEVICE=pbmraw \ + \-sOutputFile=- \- < testpage.ps \ +| foo2hp \-r600x600 \-g5100x6600 \-p1 >testpage.zm .fi .RE .P @@ -182,10 +182,10 @@ Create a color ZJS stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2hp -r600x600 -g5100x6600 -p1 >testpage.zc +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-g5100x6600 \-r600x600 \-sDEVICE=bitcmyk \ + \-sOutputFile=- \- < testpage.ps \ +| foo2hp \-r600x600 \-g5100x6600 \-p1 >testpage.zc .fi .RE diff --git a/foo2hp.c b/foo2hp.c index 297635d..0f73451 100644 --- a/foo2hp.c +++ b/foo2hp.c @@ -25,8 +25,8 @@ 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. +along with this program; if not, see +. If you want to use this program under different license conditions, then contact the author for an arrangement. diff --git a/foo2hp2600-wrapper b/foo2hp2600-wrapper deleted file mode 100755 index c63e183..0000000 --- a/foo2hp2600-wrapper +++ /dev/null @@ -1,819 +0,0 @@ -#!/bin/sh - -#* Copyright (C) 2005-2006 Rick Richardson -#* -#* 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. -#* -#* Authors: Rick Richardson - -VERSION='$Id: foo2hp2600-wrapper.in,v 1.77 2011/01/20 00:59:57 rick Exp $' - -# -# Printer Notes: -# -# HP Color LaserJet 1600: -z0 -# HP Color LaserJet 2600n: -z0 -# HP Color LaserJet CP1215: -z1 -# - -PROGNAME="$0" -BASENAME=`basename $PROGNAME` -PREFIX=/usr -SHARE=$PREFIX/share/foo2hp -PATH=$PATH:/sw/bin:/opt/local/bin - -# -# Log the command line, for debugging and problem reports -# -if [ -x /usr/bin/logger -o -x /bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" x Set device resolution in pixels/inch [$RES] --s source Source code to send to printer [$SOURCE] - 1=tray2, 2=tray3, 4=manual/tray1, 7=auto - Code numbers may vary with printer model. --t Draft mode. Every other pixel is white. --2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 - Print with N-up (requires psutils) --o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. - -Printer Tweaking Options: --u x Set offset of upper left printable in pixels [varies] --l x Set offset of lower right printable in pixels [varies] --L mask Send logical clipping values from -u/-l in ZjStream [3] - 0=no, 1=Y, 2=X, 3=XY --P Do not output START_PLANE codes. May be needed by some - monochrome-only printers. --X padlen Add extra zero padding to the end of BID segments [16] --z model Model: 0=HP CLJ 1600/2600n; 1=HP CLJ CP1215 [$MODEL] --O parm=val Alignment of CMYK. "parm" is c,m,y, or k. "val" is in rows. - -Color Tweaking Options: --g gsopts Additional options to pass to Ghostscript, such as - -dDITHERPPI=nnn, etc. May appear more than once. [] --G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and - adjust colors using the setcolorrendering PS operator. - $SHARE/icm/ will be searched for profile.icm. --I intent Select profile intent from ICM file [$INTENT] - 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute --G gamma-file.ps Prepend gamma-file to the Postscript input to perform - color correction using the setcolortransfer PS operator. - -Debugging Options: --S plane Output just a single color plane from a color print [all] - 1=Cyan, 2=Magenta, 3=Yellow, 4=Black --D lvl Set Debug level [$DEBUG] --V $VERSION -EOF - - exit 1 -} - -# -# Report an error and exit -# -error() { - echo "$BASENAME: $1" >&2 - exit 1 -} - -dbgcmd() { - if [ $DEBUG -ge 1 ]; then - echo "$@" >&2 - fi - "$@" -} - -# -# Portable version of 'which' -# -pathfind() { - if [ "$1" = -p ]; then - optp=1 - shift - else - optp=0 - fi - OLDIFS="$IFS" - IFS=: - for p in $PATH; do - if [ -x "$p/$*" ]; then - if [ $optp = 1 ]; then - echo "$p/$*" - fi - IFS="$OLDIFS" - return 0 - fi - done - IFS="$OLDIFS" - return 1 -} - -# -# Returns true if $1 is 32-bit binary -# -is32() { - if pathfind file; then - path=`pathfind -p "$*"` - is32=`file -L "$path" | grep 32-bit` - if [ "$is32" = "" ]; then - return 1 - else - return 0 - fi - else - return 1 - fi -} - -# -# N-up-ify the job. Requires psnup from psutils package -# -nup() { - case "$NUP" in - [2368]|1[0458]) - tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q - ;; - [49]|1[26]) - tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q - ;; - *) - error "Illegal call to nup()." - ;; - esac -} - -# -# Process the options -# - -# Try to use a local copy of GhostScript 8.54, if available. Otherwise, -# fallback to whatever the Linux distro has installed (usually 7.07) -# -# N.B. := operator used here, when :- would be better, because "ash" -# doesn't have :- -if eval gs.foo -v >/dev/null 2>&1; then - GSBIN=${GSBIN:-gs.foo} -else - GSBIN=${GSBIN:-gs} -fi - -CMDLINE="$*" -DEBUG=0 -DUPLEX=1 -BPP=1 -COLOR= -COLORMODE=default -MODEL=0 -QUALITY=1 -QUALITY=wts -MEDIA=1 -COPIES=1 -PAPER=1 -RES=600x600 -SOURCE=7 -NUP= -CLIP_UL= -CLIP_LR= -CLIP_LOG= -BC= -AIB= -NOPLANES= -COLOR2MONO= -GAMMAFILE=default -INTENT=0 -GSOPTS= -EXTRAPAD= -SAVETONER= -NUP_ORIENT= -OFF_C=0 -OFF_M=0 -OFF_Y=0 -OFF_K=0 -GSDEV=-sDEVICE=pbmraw -SEGFAULT=0 -# What mode to use if the user wants us to pick the "best" mode -case `$GSBIN --version` in -7*) - DEFAULTCOLORMODE=10 - ;; -8.1*) - # Buggy 8.14/8.15 in Ubuntu - DEFAULTCOLORMODE=10 - if is32 $GSBIN; then - GAMMAFILE=km2430_2.icm - else - GAMMAFILE=hpclj2600n-0.icm - SEGFAULT=1 - fi - QUALITY=1 - ;; -*) - DEFAULTCOLORMODE=10 - ;; -esac - -while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:r:s:tz:ABS:D:G:I:PO:X:Vh?-" opt -do - case $opt in - b) BPP="$OPTARG";; - c) COLOR=-c;; - d) DUPLEX="$OPTARG";; - g) GSOPTS="$GSOPTS $OPTARG";; - m) MEDIA="$OPTARG";; - n) COPIES="$OPTARG";; - p) PAPER="$OPTARG";; - q) QUALITY="$OPTARG";; - r) RES="$OPTARG";; - s) SOURCE="$OPTARG";; - t) SAVETONER="-t";; - z) MODEL="$OPTARG";; - l) CLIP_LR="-l $OPTARG";; - u) CLIP_UL="-u $OPTARG";; - L) CLIP_LOG="-L $OPTARG";; - A) AIB=-A;; - B) BC=-B;; - C) COLORMODE="$OPTARG";; - S) COLOR2MONO="-S$OPTARG";; - D) DEBUG="$OPTARG";; - G) GAMMAFILE="$OPTARG";; - I) INTENT="$OPTARG";; - O) case "$OPTARG" in - c=*|C=*) OFF_C=`echo "$OPTARG" | sed "s/^..//"`;; - m=*|M=*) OFF_M=`echo "$OPTARG" | sed "s/^..//"`;; - y=*|Y=*) OFF_Y=`echo "$OPTARG" | sed "s/^..//"`;; - k=*|K=*) OFF_K=`echo "$OPTARG" | sed "s/^..//"`;; - *) error "Not [cmyk]=NUM!";; - esac - ;; - P) NOPLANES=-P;; - X) EXTRAPAD="-X $OPTARG";; - [234689]) NUP="$opt";; - [57]) error "Can't find acceptable layout for $opt-up";; - 1) case "$OPTARG" in - [024568]) NUP="1$OPTARG";; - *) error "Can't find acceptable layout for 1$OPTARG-up";; - esac - ;; - o) case "$OPTARG" in - l*) NUP_ORIENT=-l;; - s*) NUP_ORIENT=-r;; - p*|*) NUP_ORIENT=;; - esac;; - -) - echo aaa - echo "$OPTARG"; - ;; - V) echo "$VERSION"; foo2hp -V; foo2zjs-pstops -V; exit 0;; - h|\?) - if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then - echo "Illegal command:" - echo " $0 $CMDLINE" - echo - fi - usage;; - esac -done -shift `expr $OPTIND - 1` - -# -# If there is an argument left, take it as the file to print. -# Else, the input comes from stdin. -# -if [ $# -ge 1 ]; then - if [ "$LPJOB" = "" ]; then - : # LPJOB="$1" - fi - exec < $1 -fi - - -# -# Select the ghostscript device to use -# -case "$BPP" in -1) if [ "" = "$COLOR" ]; then - GSDEV=-sDEVICE=pbmraw - else - GSDEV=-sDEVICE=bitcmyk - fi - case "$GAMMAFILE" in - default) - case "$MODEL" in - 0) - if [ $SEGFAULT = 0 ]; then - GAMMAFILE=hpclj2600n-1.icm - else - GAMMAFILE=hpclj2600n-0.icm - fi - ;; - 1) - GAMMAFILE=hp1215-argyll-0.icm - ;; - esac - ;; - none) GAMMAFILE=;; - esac - ;; -2) if [ "" = "$COLOR" ]; - then - # GSDEV=-sDEVICE=pgmraw - # error "2-bpp monochrome is not yet supported" - GSDEV="-sDEVICE=cups -dcupsColorSpace=3 -dcupsBitsPerColor=2" - GSDEV="$GSDEV -dcupsColorOrder=2" - else - GSDEV="-sDEVICE=cups -dcupsColorSpace=6 -dcupsBitsPerColor=2" - GSDEV="$GSDEV -dcupsColorOrder=2" - fi - if [ $GSBIN = "gs.foo" ]; then - GSBIN=gs - fi - - case "$GAMMAFILE" in - default) - case "$MODEL" in - 0) - if is32 $GSBIN; then - GAMMAFILE=km2430_2.icm - GAMMAFILE=hpclj2600n-1.icm - else - GAMMAFILE= - fi - ;; - 1) - GAMMAFILE=hp1215-argyll-0.icm - ;; - esac - ;; - none) GAMMAFILE=;; - esac - ;; -*) error "Illegal number of bits per plane ($BPP)";; -esac - -# -# Validate model code -# -case "$MODEL" in -0|1) ;; -*) error "Unknown model code $MODEL";; -esac - -# -case "$QUALITY" in -0) - GSOPTS="-dCOLORSCREEN $GSOPTS" - ;; -1) - GSOPTS="-dCOLORSCREEN $GSOPTS" - ;; -2) - GSOPTS="-dMaxBitmap=500000000 $GSOPTS" - ;; -as) - GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" - ;; -wts) - GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" - ;; -esac - -# -# Validate media code -# -case "$MEDIA" in -1|plain) MEDIA=1;; -514|preprinted) MEDIA=514;; -513|letterhead) MEDIA=513;; -2|transparency) MEDIA=2;; -515|prepunched) MEDIA=515;; -265|labels) MEDIA=265;; -260|bond) MEDIA=260;; -516|recycled) MEDIA=516;; -512|color) MEDIA=512;; -276|tough) MEDIA=276;; -267|envelope) MEDIA=267;; -258|light) MEDIA=258;; -262|heavy) MEDIA=262;; -261|cardstock) MEDIA=261;; -268|lightglossy) MEDIA=268;; -269|glossy) MEDIA=269;; -270|heavyglossy) MEDIA=270;; -277|cover) MEDIA=277;; -278|photo) MEDIA=278;; -[0-9]*) ;; -*) error "Unknown media code $MEDIA";; -esac - -# -# Validate source (InputSlot) code -# -case "$SOURCE" in -1|tray2) SOURCE=1;; -4|tray1) SOURCE=4;; -7|auto) SOURCE=7;; -[0-9]*) ;; -*) error "Unknown source code $SOURCE";; -esac - -# -# Validate Duplex code -# -case "$DUPLEX" in -1|off|none) DUPLEX=1;; -2|long*) DUPLEX=2;; -3|short*) DUPLEX=3;; -[0-9]*) ;; -*) error "Unknown duplex code $DUPLEX";; -esac - -# -# Validate Resolution -# -case "$RES" in -600x600) ;; -1200x600) ;; -2400x600) ;; -*) error "Illegal resolution $RES";; -esac - -# -# Figure out the paper dimensions in pixels/inch, and set the -# default clipping region. Unfortunately, this is a trouble -# area for ZjStream printers. Various versions of ZjS print -# engines react differently when asked to print into their -# unprintable regions. -# -set_clipping() { - ulx=$1; uly=$2 - lrx=$3; lry=$4 - - # Set clipping region if it isn't already set - if [ "$CLIP_UL" = "" ]; then - case "$RES" in - 600x600) ulx=`expr $ulx / 2`;; - 2400x600) ulx=`expr $ulx \* 2`;; - esac - CLIP_UL="-u ${ulx}x${uly}" - fi - if [ "$CLIP_LR" = "" ]; then - case "$RES" in - 600x600) lrx=`expr $lrx / 2`;; - 2400x600) lrx=`expr $lrx \* 2`;; - esac - CLIP_LR="-l ${lrx}x${lry}" - fi -} - -case "$PAPER" in -Custom*x*) - # Command line only - XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` - YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` - if [ "$XDIM" = "" -o "$YDIM" = "" ]; then - error "Custom page size '$PAPER' != 1-99999" - fi - if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then - error "Custom page size '$PAPER' != 1-99999" - fi - XDIM=`dc -e "$XDIM 1200* 72/p"` - YDIM=`dc -e "$YDIM 600* 72/p"` - PAPER=1; paper=letter; - set_clipping 2 80 2 80 - ;; -Custom*) - #%%BeginFeature: *CustomPageSize True - #216 - #360 - #0 - #0 - #0 - #pop pop pop pop pop - - #%%BeginFeature: *CustomPageSize True - #792.000000 612.000000 1 0.000000 0.000000 - #pop pop pop pop pop - - if [ $DEBUG = 0 ]; then - TMPFILE=/tmp/cus$$ - else - TMPFILE=/tmp/custom.ps - fi - cat >$TMPFILE - exec <$TMPFILE - - tmp=`head -n 10000 $TMPFILE \ - | sed -n '/CustomPageSize/{n;p;n;p;}' \ - | tr '\n' ' '` - case "$tmp" in - [0-9]*\ [0-9]*) - XDIM=`echo "$tmp" | sed 's/ .*//'` - YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` - ;; - *) - if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi - error "Custom page size [XY]DIM != 1-99999" - ;; - esac - XDIM=`dc -e "$XDIM 1200* 72/p"` - YDIM=`dc -e "$YDIM 600* 72/p"` - PAPER=1; paper=letter; - set_clipping 2 80 2 80 - ;; -1|letter) PAPER=1; paper=letter; XDIM="10200"; YDIM="6600" - set_clipping 172 80 172 80 - ;; -5|legal) PAPER=5; paper=legal; XDIM="10200"; YDIM="8400" - set_clipping 172 80 172 80 - ;; -7|executive) PAPER=7; paper=executive; XDIM="8700"; YDIM="6300" - set_clipping 174 78 174 78 - ;; -9|a4|A4) PAPER=9; paper=a4; XDIM="9920"; YDIM="7016" - set_clipping 176 84 176 84 - ;; -11|a5|A5) PAPER=11; paper=a5; XDIM="6992"; YDIM="4960" - set_clipping 176 80 176 80 - ;; -13|b5|B5|b5jis) PAPER=13; paper=b5; XDIM="8598"; YDIM="6070" - set_clipping 172 83 171 83 - ;; -20|"env#10") PAPER=20; paper=env10; XDIM="4950"; YDIM="5700" - set_clipping 171 78 171 78 - ;; -27|envDL) PAPER=27; paper=envDL; XDIM="5200"; YDIM="5200" - set_clipping 176 84 176 84 - ;; -28|envC5) PAPER=28; paper=envC5; XDIM="7650"; YDIM="5408" - set_clipping 170 80 169 80 - ;; -34|envB5) PAPER=34; paper=envB5; XDIM="8316"; YDIM="5892" - set_clipping 174 74 174 74 - ;; -37|envMonarch) PAPER=37; paper=envMonarch;XDIM="4650"; YDIM="4500" - set_clipping 174 78 173 78 - ;; -*) error "Unimplemented paper code $PAPER";; -esac -# e.g. /usr/share/ghostscript/7.07/lib/gs_statd.ps -PAPERSIZE="-sPAPERSIZE=$paper"; - -case "$RES" in -600x600) XDIM=`expr $XDIM / 2`;; -1200x600) ;; -2400x600) XDIM=`expr $XDIM \* 2`;; -esac -DIM="${XDIM}x${YDIM}" - -# -# Filter thru psnup if N-up printing has been requested -# -case $NUP in -[234689]|1[024568]) PREFILTER="nup";; -*) PREFILTER=cat;; -esac -if [ "$DEBUG" -ge 9 ]; then - PREFILTER="tee /tmp/$BASENAME.ps" -fi - -# -# Overload -G. If the file name ends with ".icm" or ".ICM" -# then convert the ICC color profile to a Postscript CRD, -# then prepend it to the users job. Select the intent -# using the -I option. -# - -create_crd() { - # - # Create a Postscript CRD - # - ICC2PS=$PREFIX/bin/foo2zjs-icc2ps - if [ -x $ICC2PS ]; then - case "$GAMMAFILE" in - none.icm | */none.icm) - ;; - *) - if [ -x /usr/bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- \ - "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" - fi - $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ - || error "Problem converting .ICM file to Postscript" - ;; - esac - - PSTOPS_OPTS="$PSTOPS_OPTS -c" - cat > $ICCTMP.usecie.ps <<-EOF - %!PS-Adobe-3.0 - <>setpagedevice - EOF - if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then - if [ "$QUALITY" = wts ]; then - cat >> $ICCTMP.usecie.ps <<-EOF - << /UseWTS true >> setuserparams - EOF - else - cat >> $ICCTMP.usecie.ps <<-EOF - << /UseWTS false >> setuserparams - EOF - fi - cat >> $ICCTMP.usecie.ps <<-EOF - << - /AccurateScreens true - /HalftoneType 1 - /HalftoneName (Round Dot Screen) cvn - /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} - /Frequency 137 - /Angle 37 - >> sethalftone - EOF - fi - cat > $ICCTMP.selcrd.ps <<-EOF - /Current /ColorRendering findresource setcolorrendering - EOF - case "$GAMMAFILE" in - none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; - *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; - esac - else - GAMMAFILE= - fi -} - -if [ $DEBUG -gt 0 ]; then - ICCTMP=/tmp/icc -else - ICCTMP=/tmp/icc$$ -fi - -if [ "" = "$COLOR" ]; then - COLORMODE= - GAMMAFILE= -else - case "$COLORMODE" in - default) COLORMODE=$DEFAULTCOLORMODE;; - esac -fi - -CRDBASE="$PREFIX/share/foo2zjs/crd" -PSFILES="$PREFIX/share/foo2hp/psfiles" -case "$RES" in - 600x600) SCREEN=screen1200.ps;; - 1200x600) SCREEN=screen1200.ps;; - 2400x600) SCREEN=screen2400.ps;; -esac - -PSTOPS_OPTS="-n" - -case "$COLORMODE" in -0|"") - # Monochrome - ;; -10|icm) - # Use old ICM method - AIB=-A - BC=-B - case "$GAMMAFILE" in - none.icm | */none.icm) - create_crd - ;; - *.icm|*.ICM|*.icc|*.ICC) - # - # Its really an .ICM file, not a gamma file. - # - # The file can be a full path name, or the name of a file in $SHARE/icm/ - # - if [ -r "$GAMMAFILE" ]; then - create_crd - elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then - GAMMAFILE="$SHARE/icm/$GAMMAFILE" - create_crd - else - GAMMAFILE= - fi - ;; - esac - ;; -*.crd) - GAMMAFILE="$CRDBASE/prolog.ps" - if [ -f $COLORMODE ]; then - GAMMAFILE="$GAMMAFILE $COLORMODE" - elif [ -f $CRDBASE/$COLORMODE ]; then - GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" - else - error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" - fi - GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" - ;; -*) - error "Unknown color method '$COLORMODE'" - ;; -esac - -if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then - PSTOPS_OPTS="$PSTOPS_OPTS -w" -elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then - PSTOPS_OPTS="$PSTOPS_OPTS -a" -fi - -if [ "" != "$COLOR" ]; then - if [ "" = "$AIB" -a "" = "$BC" ]; then - # Faster, but can't handle AllIsBlack or BlackClears - : #GSDEV=-sDEVICE=pksmraw - else - # Can't handle different size pages - : #GSDEV=-sDEVICE=bitcmyk - fi -fi - -# -# Figure out USERNAME -# -if [ "$LPUSER" != "" ]; then - USER="$LPUSER@$LPHOST" -else - USER="" -fi - -# -# Main Program, just cobble together the pipeline and run it -# -# The malarky with file descriptors 1 and 3 is to avoid a bug in -# (some versions?) of Ghostscript where Postscript's stdout gets -# intermingled with the printer drivers output, resulting in -# corrupted image data. -# -# CUPS also does grief by adding its own PS code to the input file. -# We take care of that with the sed command. Thus, Well Tempered -# Screening now works! -# -GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" - -foo2zjs-pstops $PSTOPS_OPTS | \ -$PREFILTER \ -| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ - -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null 2>&1) 3>&1 \ -| foo2hp -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ - $COLOR -b$BPP $CLIP_UL $CLIP_LR $CLIP_LOG $SAVETONER \ - -O$OFF_C,$OFF_M,$OFF_Y,$OFF_K -J "$LPJOB" -U "$USER" \ - $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD -D$DEBUG - -# -# Log the command line, for debugging and problem reports -# -if [ -x /usr/bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- \ - "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" - logger -t "$BASENAME" -p lpr.info -- \ - "foo2hp -r$RES -g$DIM -p$PAPER -m$MEDIA \ --n$COPIES -d$DUPLEX -s$SOURCE $COLOR -b$BPP $CLIP_UL $CLIP_LR $CLIP_LOG \ -$SAVETONER -O$OFF_C,$OFF_M,$OFF_Y,$OFF_K $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD" -fi - -# -# Remove cruft -# -if [ $DEBUG -eq 0 ]; then - for i in crd.ps log usecie.ps selcrd.ps - do - file="$ICCTMP.$i" - [ -f $file ] && rm -f $file - done - [ -f "$TMPFILE" ] && rm -f $TMPFILE -fi - -exit 0 diff --git a/foo2hp2600-wrapper.1 b/foo2hp2600-wrapper.1 deleted file mode 100644 index c2104b4..0000000 --- a/foo2hp2600-wrapper.1 +++ /dev/null @@ -1,417 +0,0 @@ -'\" t -'\" -'\" DO NOT EDIT! This file is generated from foo2hp2600-wrapper.1in -'\" -'\" t -.TH foo2hp2600-wrapper 1 "Sun May 26 18:25:20 2024" "foo2hp2600-wrapper 0.0" -'\" -'\" -'\"========================================================================== -'\" STRINGS and MACROS -'\"========================================================================== -'\" -'\" Define strings for special characters that nroff doesn't have -'\" -'\" N.B. using .if cua to test for special characters did not work. -'\" -.if !'\*[.T]'ps' .ds ua up -.if '\*[.T]'ps' .ds ua \(ua -.if !'\*[.T]'ps' .ds da down -.if '\*[.T]'ps' .ds da \(da -.if !'\*[.T]'ps' .ds <- left -.if '\*[.T]'ps' .ds <- \(<- -.if !'\*[.T]'ps' .ds -> right -.if '\*[.T]'ps' .ds -> \(-> -'\" -'\" bx - box a Courier string for making keycaps -'\" -'\" N.B. this mess is to make the line drawing come out only -'\" if we are really generating postscript -'\" -.de bx -.ie !'\*[.T]'ps' \{\ -. RB [ \\$1 ]\\$2 -.\} -.el \{\ -. ie !r ps4html \{\ -'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' -. ft CW -. nr par*bxw \w'\\$1'+.4m -\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ -\Z'\h'.2m'\s-1\\$1\s+1'\ -\h'\\n[par*bxw]u'\\$2 -. ft P -. \} -. el \{\ -. RB [ \\$1 ]\\$2 -. \} -.\} -.. -'\" -'\" strings to set current color (null with old groff) -'\" -.if mred .ds red \m[red] -.if mgreen .ds green \m[green] -.if mblue .ds blue \m[blue] -.if mblack .ds black \m[black] -.if mblack .ds mP \mP -'\" -'\" fix for grotty + xterm. We call for orange, grotty outputs yellow, -'\" but xterm displays yellow as orange. The cycle is complete. -'\" -.if n .defcolor orange rgb #ffff00 -'\" -'\" color - set the current color (ignores request with old groff) -'\" -.de color -.if mred \m[\\$1]\c -.. -'\" -'\" colorword - colorize a word (ignored by old groff) -'\" -.de colorword -.ie m\\$1 \m[\\$1]\\$2\mP\c -.el \\$2\c -.. -'\" -'\" colbox - colorize a word in a filled box -'\" -.de colbox -.ie mred \M[\\$2]\ -\v'+.167v'\ -\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ -\v'-.167v'\ -\m[\\$1]\\$3\mP\MP -.el \\$3\c -.. -'\" -'\" Macros for doing pdfmarks -'\" -.de specialps -.if '\*[.T]'ps' \\k_\X'ps: \\$*'\h'|\\n_u'\c -.. -'\" -'\" pdfmark PDFMARKCODE -'\" -.ds pdfmarks -.if d pdfmarks \{\ -.de pdfmark -. specialps exec [\\$1 pdfmark -.. -'\" -'\" pdfdest LINKNAME -'\" -.de pdfdest -.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" -.. -'\" -'\" pdfbookmark COUNT LINKNAME STRING -'\" -.de pdfbookmark -. pdfmark "/View [/XYZ 44 730 1.0] /Count \\$1 /Dest /\\$2 /Title (\\$3) /OUT" -.. -'\" -'\" Define the SH and SS macros to save pdfmark information -'\" in "arrays" of numbers and strings. -'\" -.if !r rr_n \{\ -.nr rr_n 0 1 -.am SH -. nr rr_levels!\\n+[rr_n] 2 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.am SS -. nr rr_levels!\\n+[rr_n] 3 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.\} -'\" -'\" Called at the end of the document to generate the pdfmark outline -'\" -.de pdf_outline -.nr rr_levels!\\n+[rr_n] 1 -.nr rr_i 0 1 -.while \\n+[rr_i]<\\n[rr_n] \{\ -. nr rr_ip1 \\n[rr_i]+1 -. nr rr_count 0 -. if \\n[rr_levels!\\n[rr_ip1]]>\\n[rr_levels!\\n[rr_i]] \{\ -. nr rr_j \\n[rr_i] 1 -. while \\n+[rr_j]<\\n[rr_n] \{\ -. if \\n[rr_levels!\\n[rr_j]]<=\\n[rr_levels!\\n[rr_i]] \{\ -. break -. \} -. if \\n[rr_levels!\\n[rr_j]]==(\\n[rr_levels!\\n[rr_i]]+1) \{\ -. nr rr_count \\n[rr_count]+1 -. \} -. \} -. \} -. ds hhh \\*[rr_labels!\\n[rr_i]] -. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" -.\} -.. -'\" -'\" Some postscript to make pdfmarks harmless on old interpreters... -'\" -.specialps "def /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse" -'\" -'\" Force display of Bookmarks in Acrobat when document is viewed. -'\" -.pdfmark "[/PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW" -'\" -'\" Output the document info in pdfmarks -'\" -.pdfmark "\ - /Title (\*[an-title](\*[an-section])) \ - /Subject (\*[an-title] Manual Page) \ - /Author (Rick Richardson) \ - /Keywords (printing) \ - /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ - /CreationDate (\*[an-extra1]) \ - /ModDate (\*[an-extra1]) \ - /DOCINFO" -\} -'\" -'\" The manual page name is only 1st level mark -'\" -.nr rr_levels!\n+[rr_n] 1 -.ds rr_labels!\n[rr_n] \*[an-title](\*[an-section]) -.pdfdest Link\n[rr_n] -'\" -'\"========================================================================== -'\" MANUAL PAGE SOURCE -'\"========================================================================== -.SH NAME -foo2hp2600-wrapper \- Convert Postscript into a ZJS printer stream -.SH SYNOPSIS -.B foo2hp2600-wrapper -.RI [ options "] [" ps-file ] -.SH DESCRIPTION -.B foo2hp2600-wrapper -is a Foomatic compatible printer wrapper for the \fBfoo2hp\fP printer driver. -This script reads a Postscript \fIps-file\fP or standard input -and converts it to Zenographics ZjStream printer format -for driving the Hewlett-Packard 2600n color laser printer -and other Zenographics-based printers. -.P -This script can be used in a standalone fashion, but is intended to -be called from a printer spooler system which uses the Foomatic -printer database. - -.SH COMMAND LINE OPTIONS -.SS Normal Options -These are the options used to select the parameters of a -print job that are usually controlled on a per job basis. -.TP -.BI \-b\0 bits -Number of bits per plane. 1 or 2. [1]. -.TP -.BI \-c -Print in color (else monochrome). -.TP -.BI \-d\0 duplex -Duplex code to send to printer [1]. -.TS -| n l | n l | n l . -1 off 2 long edge 3 short edge -.TE -.TP -.BI \-m\0 media -Media code to send to printer [1]. -.TS -l l -l n. -_ -Media HPLJ 2600n -_ -plain 1 -preprinted 514 -letterhead 513 -transparency 2 -prepunched 515 -labels 265 -bond 260 -recycled 516 -color 512 -tough 276 -envelope 267 -light 258 -heavy 262 -cardstock 261 -lightglossy 268 -glossy 269 -heavyglossy 270 -cover 277 -photo 278 -.TE -.TP -.BI \-p\0 paper -Paper size code to send to printer [1]. -.TS -box; -| n l | n l. -1 letter 9 A4 -5 legal 11 A5 -7 executive 13 B5jis -20 env #10 27 env DL -28 env C5 34 env B5 -37 env Monarch -.TE -.TP -.BI \-n\0 copies -Number of copies [1]. -.TP -.BI \-r\0 xres x yres -Set device resolution in pixels/inch [1200x600]. -.TP -.BI \-s\0 source -Source (Input Slot) code to send to printer [7]. -.TS -| n l | n l. -1 tray 2 4 manual/tray 1 -2 tray 3 7 auto -.TE -.TP -.BI \-t -Draft mode. Every other pixel is white. -.TP -.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" -Print in N-up. Requires the \fBpsutils\fP package. -.TP -.BI \-o\0 orient -Orientation used for N-up. -.TS -l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) -.TE -.SS Printer Tweaking Options -These are the options used to customize the operation of \fBfoo2hp\fP -for a particular printer. -.TP -.BI \-u\0 xoff x yoff -Set the offset of the start of the printable region from the -upper left corner, in pixels [varies with paper size]. -The defaults should work on the 2200DL and 2300DL, and have not -been tested on any other printers. -.TP -.BI \-l\0 xoff x yoff -Set the offset of the end of the printable region from the -lower right corner, in pixels [varies with paper size]. -The defaults should work on the 2200DL and 2300DL, and have not -been tested on any other printers. -.TP -.BI \-L\0 mask -Send the logical clipping values from -u/-l in the ZjStream. -\fBfoo2hp2600-wrapper\fP always runs Ghostscript with the ideal page dimensions, -so that the scale of the image is correct, -regardless whether or not the printer has unprintable regions. -This option is used to move the position of the clipped image -back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be -good in most cases. -.TS -l l. -0 don't send any logical clipping amounts -1 only send Y clipping amount -2 only send X clipping amount -3 send both X and Y clipping amounts -.TE -.TP -.BI \-O\0 parm=val -Alignment of CMYK. \fIparm\fP is c, m, y, or k. -\fIval\fP is in rows. Multiple options are allowed. -The default is "-Oc=0 -Om=0 -Oy=0 -Ok=0". -.TP -.BI \-P -Do not send START_PLANE codes on monochrome output. May be -needed by some monochrome-only printers, such as the -HP LaserJet 1000. -.TP -.BI \-X\0 padlen -Add extra zero padding to the end of BID segments. The default is -16 bytes. Padding 16 bytes of zeroes -is needed for older ZjStream printers, such as the Minolta 2200DL -and HP LaserJet 1000, and seems harmless to newer ones, such as -the Minolta 2300DL. So the default should be good for all cases. -.TP -.BI \-z\0 model -Model: Model: 0=HP CLJ 1600/2600n; 1=HP CLJ CP1215 -.SS Color Tweaking Options -These are the options used to control the quality of color output. -Color correction is currently a WORK IN PROGRESS. -.TP -.BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, -etc. This option may appear more than once. -.TP -.BI \-G\0 profile.icm -Convert \fIprofile.icm\fP to a Postscript color rendering -dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and -adjust the printer colors by using the Postscript \fBsetcolorrendering\fP -operator. If \fIprofile.icm\fP is none.icm, then prepare for ordering a -ICM custom printer profile (i.e. from www.ICCFactory.com). -.TP -.BI \-G\0 gamma-file.ps -Prepend \fIgamma-file.ps\fP to the Postscript input to perform -color correction using the \fBsetcolortransfer\fP Postscript operator. -For example, the file might contain: -.br -{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer -.TP -.BI \-I\0 intent -Select profile intent from the ICM file. -0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. -Default is 0 (perceptual). -.SS Debugging Options -These options are used for debugging \fBfoo2hp\fP and its wrapper. -.TP -.BI \-S\0 plane -Output just a single color plane from a color print and print it -on the black plane. The default is to output all color planes. -.TS -l l. -1 Cyan -2 Magenta -3 Yellow -4 Black -.TE -.TP -.BI \-D\0 level -Set Debug level [0]. - -.SH EXAMPLES -Create a monochrome ZjStream from a Postscript document, -examine it, and then print it using a RAW print queue: - -.RS -.nf -foo2hp2600-wrapper testpage.ps > testpage.zm -zjsdecode < testpage.zm -lpr -P raw testpage.zm -.fi -.RE -.P -Create a color ZjStream stream from a Postscript document: - -.RS -.nf -foo2hp2600-wrapper -c testpage.ps > testpage.zc -.fi -.RE - -.SH FILES -.BR /usr/bin/foo2hp2600-wrapper -.SH SEE ALSO -.BR foo2hp (1), -.BR zjsdecode (1) -.SH "AUTHOR" -Rick Richardson -.br -http://foo2hp.rkkda.com/ -'\" -'\" -'\" -.em pdf_outline diff --git a/foo2hp2600-wrapper.1in b/foo2hp2600-wrapper.1in index a71617d..26b69ae 100644 --- a/foo2hp2600-wrapper.1in +++ b/foo2hp2600-wrapper.1in @@ -107,9 +107,9 @@ Print in N-up. Requires the \fBpsutils\fP package. Orientation used for N-up. .TS l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) +Portrait \-op (normal) +Landscape \-ol (rotated 90 degrees anticlockwise) +Seascape \-os (rotated 90 degrees clockwise) .TE .SS Printer Tweaking Options These are the options used to customize the operation of \fBfoo2hp\fP @@ -128,13 +128,13 @@ The defaults should work on the 2200DL and 2300DL, and have not been tested on any other printers. .TP .BI \-L\0 mask -Send the logical clipping values from -u/-l in the ZjStream. +Send the logical clipping values from \-u/-l in the ZjStream. \fBfoo2hp2600-wrapper\fP always runs Ghostscript with the ideal page dimensions, so that the scale of the image is correct, regardless whether or not the printer has unprintable regions. This option is used to move the position of the clipped image back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be +the amount which was clipped by \-u and \-l, and should be good in most cases. .TS l l. @@ -147,7 +147,7 @@ l l. .BI \-O\0 parm=val Alignment of CMYK. \fIparm\fP is c, m, y, or k. \fIval\fP is in rows. Multiple options are allowed. -The default is "-Oc=0 -Om=0 -Oy=0 -Ok=0". +The default is "\-Oc=0 \-Om=0 \-Oy=0 \-Ok=0". .TP .BI \-P Do not send START_PLANE codes on monochrome output. May be @@ -168,7 +168,7 @@ These are the options used to control the quality of color output. Color correction is currently a WORK IN PROGRESS. .TP .BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, etc. This option may appear more than once. .TP .BI \-G\0 profile.icm @@ -214,7 +214,7 @@ examine it, and then print it using a RAW print queue: .nf foo2hp2600-wrapper testpage.ps > testpage.zm zjsdecode < testpage.zm -lpr -P raw testpage.zm +lpr \-P raw testpage.zm .fi .RE .P @@ -222,7 +222,7 @@ Create a color ZjStream stream from a Postscript document: .RS .nf -foo2hp2600-wrapper -c testpage.ps > testpage.zc +foo2hp2600-wrapper \-c testpage.ps > testpage.zc .fi .RE diff --git a/foo2hp2600-wrapper.in b/foo2hp2600-wrapper.in index c63e183..8b44535 100755 --- a/foo2hp2600-wrapper.in +++ b/foo2hp2600-wrapper.in @@ -13,8 +13,8 @@ #* 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. +#* along with this program; if not, see +#* . #* #* Authors: Rick Richardson diff --git a/foo2lava b/foo2lava deleted file mode 100755 index 07bd89462ee2fd5203462aaa90b5454670f3a5c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92752 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 aol0Nfj)X_$UEv6x>JpT4nbU}}^8X*S_{}>2 diff --git a/foo2lava-wrapper b/foo2lava-wrapper deleted file mode 100755 index eeb57fe..0000000 --- a/foo2lava-wrapper +++ /dev/null @@ -1,759 +0,0 @@ -#!/bin/sh - -#* Copyright (C) 2003-2006 Rick Richardson -#* -#* 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. -#* -#* Authors: Rick Richardson - -VERSION='$Id: foo2lava-wrapper.in,v 1.47 2011/01/14 23:21:39 rick Exp $' - -# -# Printer Notes: -# -# LAVAFLOW: -# Konica Minolta magicolor 2530 DL - -z0 -# Konica Minolta magicolor 2490 MF - -z0 -# Xerox Phaser 6115MFP - -z0 -# Konica Minolta magicolor 1600W - -z2 -# Konica Minolta magicolor 1680MF - -z2 -# Konica Minolta magicolor 1690MF - -z2 -# Oki C110 - -z2 -# -# OPL: -# Konica Minolta 2480 MF - -z1 -# - -PROGNAME="$0" -BASENAME=`basename $PROGNAME` -PREFIX=/usr -SHARE=$PREFIX/share/foo2lava -PATH=$PATH:/sw/bin:/opt/local/bin - -# -# Log the command line, for debugging and problem reports -# -if [ -x /usr/bin/logger -o -x /bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- "foo2lava-wrapper $@" x Set device resolution in pixels/inch [$RES] --s source Source code to send to printer [$SOURCE] - 1=upper, 2=lower, 4=manual, 7=auto - Code numbers may vary with printer model. --t Draft mode. Every other pixel is white. --2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 - Print with N-up (requires psutils) --o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. - -Printer Tweaking Options: --u x Set offset of upper left printable in pixels [varies] --l x Set offset of lower right printable in pixels [varies] --L mask Send logical clipping values from -u/-l in ZjStream [3] - 0=no, 1=Y, 2=X, 3=XY --P Do not output START_PLANE codes. May be needed by some - monochrome-only printers. --X padlen Add extra zero padding to the end of BID segments [16] --z model Model: 0=2530DL or 2=1600W (LAVAFLOW) or 1=2480MF (OPL) [0] - -Color Tweaking Options: --g gsopts Additional options to pass to Ghostscript, such as - -dDITHERPPI=nnn, etc. May appear more than once. [] --G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and - adjust colors using the setcolorrendering PS operator. - $SHARE/icm/ will be searched for profile.icm. --I intent Select profile intent from ICM file [$INTENT] - 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute --G gamma-file.ps Prepend gamma-file to the Postscript input to perform - color correction using the setcolortransfer PS operator. - -Debugging Options: --S plane Output just a single color plane from a color print [all] - 1=Cyan, 2=Magenta, 3=Yellow, 4=Black --D lvl Set Debug level [$DEBUG] --V $VERSION -EOF - - exit 1 -} - -# -# Report an error and exit -# -error() { - echo "$BASENAME: $1" >&2 - exit 1 -} - -dbgcmd() { - if [ $DEBUG -ge 1 ]; then - echo "$@" >&2 - fi - "$@" -} - -# -# N-up-ify the job. Requires psnup from psutils package -# -nup() { - case "$NUP" in - [2368]|1[0458]) - tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q - ;; - [49]|1[26]) - tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q - ;; - *) - error "Illegal call to nup()." - ;; - esac -} - -# -# Process the options -# - -# Try to use a local copy of GhostScript 8.14, if available. Otherwise, -# fallback to whatever the Linux distro has installed (usually 7.05) -# -# N.B. := operator used here, when :- would be better, because "ash" -# doesn't have :- -if eval gs.foo -v >/dev/null 2>&1; then - GSBIN=${GSBIN:-gs.foo} -else - GSBIN=${GSBIN:-gs} -fi - -CMDLINE="$*" -DEBUG=0 -DUPLEX=1 -COLOR= -COLORMODE=default -MODEL=0 -QUALITY=1 -QUALITY=wts -MEDIA=0 -COPIES=1 -PAPER=2 -RES=1200x600 -SOURCE=255 -NUP= -CLIP_UL= -CLIP_LR= -CLIP_LOG= -BC= -AIB= -NOPLANES= -COLOR2MONO= -GAMMAFILE=default -INTENT=0 -GSOPTS= -EXTRAPAD= -SAVETONER= -NUP_ORIENT= -GSDEV=-sDEVICE=pbmraw -# What mode to use if the user wants us to pick the "best" mode -case `$GSBIN --version` in -7*) DEFAULTCOLORMODE=10 - DEFAULTCOLORMODE=2 - DEFAULTCOLORMODE=10 - ;; -8.1*) - QUALITY=1 - DEFAULTCOLORMODE=10 - ;; -*) DEFAULTCOLORMODE=2 - DEFAULTCOLORMODE=10 - ;; -esac -while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:r:s:tz:ABS:D:G:I:PX:Vh?" opt -do - case $opt in - b) GSBIN="$OPTARG";; - c) COLOR=-c;; - d) DUPLEX="$OPTARG";; - g) GSOPTS="$GSOPTS $OPTARG";; - m) MEDIA="$OPTARG";; - n) COPIES="$OPTARG";; - p) PAPER="$OPTARG";; - q) QUALITY="$OPTARG";; - r) RES="$OPTARG";; - s) SOURCE="$OPTARG";; - t) SAVETONER="-t";; - z) MODEL="$OPTARG";; - l) CLIP_LR="-l $OPTARG";; - u) CLIP_UL="-u $OPTARG";; - L) CLIP_LOG="-L $OPTARG";; - A) AIB=-A;; - B) BC=-B;; - C) COLORMODE="$OPTARG";; - S) COLOR2MONO="-S$OPTARG";; - D) DEBUG="$OPTARG";; - G) GAMMAFILE="$OPTARG";; - I) INTENT="$OPTARG";; - P) NOPLANES=-P;; - X) EXTRAPAD="-X $OPTARG";; - [234689]) NUP="$opt";; - [57]) error "Can't find acceptable layout for $opt-up";; - 1) case "$OPTARG" in - [024568]) NUP="1$OPTARG";; - *) error "Can't find acceptable layout for 1$OPTARG-up";; - esac - ;; - o) case "$OPTARG" in - l*) NUP_ORIENT=-l;; - s*) NUP_ORIENT=-r;; - p*|*) NUP_ORIENT=;; - esac;; - V) echo "$VERSION"; foo2lava -V; foo2zjs-pstops -V; exit 0;; - h|\?) - if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then - echo "Illegal command:" - echo " $0 $CMDLINE" - echo - fi - usage;; - esac -done -shift `expr $OPTIND - 1` - -# -# If there is an argument left, take it as the file to print. -# Else, the input comes from stdin. -# -if [ $# -ge 1 ]; then - if [ "$LPJOB" = "" ]; then - : # LPJOB="$1" - fi - exec < $1 -fi - - -# -# Select the ghostscript device to use -# -if [ "" = "$COLOR" ]; then - GSDEV=-sDEVICE=pbmraw -else - GSDEV=-sDEVICE=bitcmyk -fi -case "$GAMMAFILE" in -default) - if [ $MODEL = 0 ]; then - GAMMAFILE=km2530-jconner-d50.icm - else - GAMMAFILE=km-1600-rgb-392-bpp1.icm - fi - ;; -none) GAMMAFILE=;; -esac - -# -case "$QUALITY" in -0) - GSOPTS="-dCOLORSCREEN $GSOPTS" - ;; -1) - GSOPTS="-dCOLORSCREEN $GSOPTS" - ;; -2) - GSOPTS="-dMaxBitmap=500000000 $GSOPTS" - ;; -as) - GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" - ;; -wts) - GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" - ;; -esac - -# -# Validate model code -# -case "$MODEL" in -0|1|2) ;; -*) error "Unknown model code $MODEL";; -esac - -# -# Validate media code -# -case "$MEDIA" in -0|plain) MEDIA=0; if [ $MODEL = 1 ]; then MEDIA=plain; fi;; -4|transparency) MEDIA=4; if [ $MODEL = 1 ]; then MEDIA=transparency; fi;; -20|thickstock) MEDIA=20; if [ $MODEL = 1 ]; then MEDIA=cardstock; fi;; -22|envelope) MEDIA=22; if [ $MODEL = 1 ]; then MEDIA=envelope; fi;; -23|letterhead) MEDIA=23; if [ $MODEL = 1 ]; then MEDIA=stationery-letterhead; fi;; -25|postcard) MEDIA=25; if [ $MODEL = 1 ]; then MEDIA=photographic-matte; fi;; -26|labels) MEDIA=26; if [ $MODEL = 1 ]; then MEDIA=labels; fi;; -27|recycled) MEDIA=27; if [ $MODEL = 1 ]; then MEDIA=plain; fi;; -28|glossy) MEDIA=28; if [ $MODEL = 1 ]; then MEDIA=photographic-glossy; fi;; -[0-9]*) ;; -*) error "Unknown media code $MEDIA";; -esac - -# -# Validate source (InputSlot) code -# -case "$SOURCE" in -1|tray1) SOURCE=1;; -4|tray2) SOURCE=4;; -255|auto) SOURCE=255;; -[0-9]*) ;; -*) error "Unknown source code $SOURCE";; -esac - -# -# Validate Duplex code -# -case "$DUPLEX" in -1|off|none) DUPLEX=1;; -2|long*) DUPLEX=2;; -3|short*) DUPLEX=3;; -[0-9]*) ;; -*) error "Unknown duplex code $DUPLEX";; -esac - -# -# Validate Resolution -# -case "$RES" in -600x600) ;; -1200x600) ;; -2400x600) ;; -*) error "Illegal resolution $RES";; -esac - -# -# Figure out the paper dimensions in pixels/inch, and set the -# default clipping region. Unfortunately, this is a trouble -# area for ZjStream printers. Various versions of ZjS print -# engines react differently when asked to print into their -# unprintable regions. -# -set_clipping() { - ulx=$1; uly=$2 - lrx=$3; lry=$4 - - # Set clipping region if it isn't already set - if [ "$CLIP_UL" = "" ]; then - case "$RES" in - 600x600) ulx=`expr $ulx / 2`;; - 2400x600) ulx=`expr $ulx \* 2`;; - esac - CLIP_UL="-u ${ulx}x${uly}" - fi - if [ "$CLIP_LR" = "" ]; then - case "$RES" in - 600x600) lrx=`expr $lrx / 2`;; - 2400x600) lrx=`expr $lrx \* 2`;; - esac - CLIP_LR="-l ${lrx}x${lry}" - fi -} - -case "$PAPER" in -Custom*x*) - # Command line only - XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` - YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` - if [ "$XDIM" = "" -o "$YDIM" = "" ]; then - error "Custom page size '$PAPER' != 1-99999" - fi - if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then - error "Custom page size '$PAPER' != 1-99999" - fi - xmm=`dc -e "$XDIM 25.4 * 36 + 72/p"` - XDIM=`dc -e "$XDIM 1200* 72/p"` - ymm=`dc -e "$YDIM 25.4 * 36 + 72/p"` - YDIM=`dc -e "$YDIM 600* 72/p"` - PAPER=101; paper=letter; - MEDIA=20 - set_clipping 2 100 2 100 - if [ $MODEL = 1 ]; then PAPER=custom_size_${xmm}x${ymm}mm; fi - ;; -Custom*) - #%%BeginFeature: *CustomPageSize True - #216 - #360 - #0 - #0 - #0 - #pop pop pop pop pop - - #%%BeginFeature: *CustomPageSize True - #792.000000 612.000000 1 0.000000 0.000000 - #pop pop pop pop pop - - if [ $DEBUG = 0 ]; then - TMPFILE=/tmp/cus$$ - else - TMPFILE=/tmp/custom.ps - fi - cat >$TMPFILE - exec <$TMPFILE - - tmp=`head -n 10000 $TMPFILE \ - | sed -n '/CustomPageSize/{n;p;n;p;}' \ - | tr '\n' ' '` - case "$tmp" in - [0-9]*\ [0-9]*) - XDIM=`echo "$tmp" | sed 's/ .*//'` - YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` - ;; - *) - if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi - error "Custom page size [XY]DIM != 1-99999" - ;; - esac - xmm=`dc -e "$XDIM 25.4 * 36 + 72/p"` - XDIM=`dc -e "$XDIM 1200* 72/p"` - ymm=`dc -e "$YDIM 25.4 * 36 + 72/p"` - YDIM=`dc -e "$YDIM 600* 72/p"` - PAPER=101; paper=letter; - MEDIA=20 - set_clipping 2 100 2 100 - if [ $MODEL = 1 ]; then PAPER=custom_size_${xmm}x${ymm}mm; fi - ;; -1|executive) PAPER=1; paper=executive; XDIM="8700"; YDIM="6300" - set_clipping 206 110 206 110 - if [ $MODEL = 1 ]; then PAPER=na_executive_7.25x10.5in; fi - ;; -2|letter) PAPER=2; paper=letter; XDIM="10200"; YDIM="6600" - set_clipping 204 100 204 100 - if [ $MODEL = 1 ]; then PAPER=na_letter_8.5x11in; fi - ;; -3|legal) PAPER=3; paper=legal; XDIM="10200"; YDIM="8400" - set_clipping 204 104 204 104 - if [ $MODEL = 1 ]; then PAPER=na_legal_8.5x14in; fi - ;; -25|a5|A5) PAPER=25; paper=a5; XDIM="6992"; YDIM="4960" - set_clipping 216 112 216 112 - if [ $MODEL = 1 ]; then PAPER=iso_a5_148x210mm; fi - ;; -26|a4|A4) PAPER=26; paper=a4; XDIM="9920"; YDIM="7016" - set_clipping 208 100 208 100 - if [ $MODEL = 1 ]; then PAPER=iso_a4_210x297mm; fi - ;; -45|b5jis|B5jis) PAPER=45; paper=b5; XDIM="8598"; YDIM="6070" - set_clipping 204 107 202 107 - if [ $MODEL = 1 ]; then PAPER=jis_b5_182x257mm; fi - ;; -65|b5iso|B5iso) PAPER=65; paper=b5; XDIM="8314"; YDIM="5906" - set_clipping 206 105 204 105 - ;; -80|envMonarch) PAPER=80; paper=envMonarch;XDIM="4650"; YDIM="4500" - set_clipping 214 106 212 106 - if [ $MODEL = 1 ]; then PAPER=na_monarch_3.875x7.5in; fi - ;; -81|"env#10") PAPER=81; paper=env10; XDIM="4950"; YDIM="5700" - set_clipping 204 114 202 114 - if [ $MODEL = 1 ]; then PAPER=na_number-10_4.125x9.5in; fi - ;; -90|envDL) PAPER=90; paper=envDL; XDIM="5200"; YDIM="5200" - set_clipping 216 104 216 104 - if [ $MODEL = 1 ]; then PAPER=iso_dl_110x220mm; fi - ;; -91|envC5) PAPER=91; paper=envC5; XDIM="7650"; YDIM="5408" - set_clipping 210 112 208 112 - if [ $MODEL = 1 ]; then PAPER=iso_c5_162x229mm; fi - ;; -92|envC6) PAPER=92; paper=envC6; XDIM="5386"; YDIM="3826" - set_clipping 214 105 212 105 - if [ $MODEL = 1 ]; then PAPER=iso_c6_114x162mm; fi - ;; -835|photo4x6) PAPER=835; paper=photo4x6; XDIM="4800"; YDIM="3600" - set_clipping 224 104 224 104 - ;; -837|photo10x15) PAPER=837; paper=photo10x15; XDIM="4818"; YDIM="3590" - # Actually, 102x152 - set_clipping 201 115 201 115 - ;; -*) error "Unimplemented paper code $PAPER";; -esac -# e.g. /usr/share/ghostscript/7.07/lib/gs_statd.ps -PAPERSIZE="-sPAPERSIZE=$paper"; - -case "$RES" in -600x600) XDIM=`expr $XDIM / 2`;; -1200x600) ;; -2400x600) XDIM=`expr $XDIM \* 2`;; -esac -DIM="${XDIM}x${YDIM}" - -# -# Filter thru psnup if N-up printing has been requested -# -case $NUP in -[234689]|1[024568]) PREFILTER="nup";; -*) PREFILTER=cat;; -esac -if [ "$DEBUG" -ge 9 ]; then - PREFILTER="tee /tmp/$BASENAME.ps" -fi - -# -# Overload -G. If the file name ends with ".icm" or ".ICM" -# then convert the ICC color profile to a Postscript CRD, -# then prepend it to the users job. Select the intent -# using the -I option. -# - -create_crd() { - # - # Create a Postscript CRD - # - ICC2PS=$PREFIX/bin/foo2zjs-icc2ps - if [ -x $ICC2PS ]; then - case "$GAMMAFILE" in - none.icm | */none.icm) - ;; - *) - if [ -x /usr/bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- \ - "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" - fi - $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ - || error "Problem converting .ICM file to Postscript" - ;; - esac - - PSTOPS_OPTS="$PSTOPS_OPTS -c" - cat > $ICCTMP.usecie.ps <<-EOF - %!PS-Adobe-3.0 - <>setpagedevice - EOF - if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then - if [ "$QUALITY" = wts ]; then - cat >> $ICCTMP.usecie.ps <<-EOF - << /UseWTS true >> setuserparams - EOF - else - cat >> $ICCTMP.usecie.ps <<-EOF - << /UseWTS false >> setuserparams - EOF - fi - cat >> $ICCTMP.usecie.ps <<-EOF - << - /AccurateScreens true - /HalftoneType 1 - /HalftoneName (Round Dot Screen) cvn - /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} - /Frequency 137 - /Angle 37 - >> sethalftone - EOF - fi - cat > $ICCTMP.selcrd.ps <<-EOF - /Current /ColorRendering findresource setcolorrendering - EOF - case "$GAMMAFILE" in - none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; - *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; - esac - else - GAMMAFILE= - fi -} - -if [ $DEBUG -gt 0 ]; then - ICCTMP=/tmp/icc -else - ICCTMP=/tmp/icc$$ -fi - -if [ "" = "$COLOR" ]; then - COLORMODE= - GAMMAFILE= -else - case "$COLORMODE" in - default) COLORMODE=$DEFAULTCOLORMODE;; - esac -fi - -CRDBASE="$PREFIX/share/foo2zjs/crd" -case "$RES" in - 600x600) SCREEN=screen1200.ps;; - 1200x600) SCREEN=screen1200.ps;; - 2400x600) SCREEN=screen2400.ps;; -esac - -PSTOPS_OPTS="-n" - -case "$COLORMODE" in -0|"") - # Monochrome - ;; -10|icm) - # Use old ICM method - AIB=-A - BC=-B - case "$GAMMAFILE" in - none.icm | */none.icm) - create_crd - ;; - *.icm|*.ICM|*.icc|*.ICC) - # - # Its really an .ICM file, not a gamma file. - # - # The file can be a full path name, or the name of a file in $SHARE/icm/ - # - if [ -r "$GAMMAFILE" ]; then - create_crd - elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then - GAMMAFILE="$SHARE/icm/$GAMMAFILE" - create_crd - else - GAMMAFILE= - fi - ;; - esac - ;; -1|photo) - # Photo - GAMMAFILE="$CRDBASE/prolog.ps" - GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr125,75-per.crd" - GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" - ;; -2|graphics) - # Photo and Text - GAMMAFILE="$CRDBASE/prolog.ps" - #GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,75-per.crd" - GAMMAFILE="$GAMMAFILE $CRDBASE/kh.crd" - GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" - ;; -3|text) - # Graphic and Text - GAMMAFILE="$CRDBASE/prolog.ps" - #GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,50-per.crd" - GAMMAFILE="$GAMMAFILE $CRDBASE/kx.crd" - GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" - ;; -4|tonersave) - # Reduced toner - GAMMAFILE="$CRDBASE/prolog.ps" - GAMMAFILE="$GAMMAFILE $CRDBASE/2300w-1200@150-l250-kx,ucr100,0-per.crd" - GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" - ;; -*.crd) - GAMMAFILE="$CRDBASE/prolog.ps" - if [ -f $COLORMODE ]; then - GAMMAFILE="$GAMMAFILE $COLORMODE" - elif [ -f $CRDBASE/$COLORMODE ]; then - GAMMAFILE="$GAMMAFILE $CRDBASE/$COLORMODE" - else - error "Can't find CRD '$COLORMODE' in . or in $CRDBASE" - fi - GAMMAFILE="$GAMMAFILE $CRDBASE/$SCREEN" - ;; -*) - error "Unknown color method '$COLORMODE'" - ;; -esac - -if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then - PSTOPS_OPTS="$PSTOPS_OPTS -w" -elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then - PSTOPS_OPTS="$PSTOPS_OPTS -a" -fi - -if [ "" != "$COLOR" ]; then - if [ "" = "$AIB" -a "" = "$BC" ]; then - # Faster, but can't handle AllIsBlack or BlackClears - : #GSDEV=-sDEVICE=pksmraw - else - # Can't handle different size pages - : #GSDEV=-sDEVICE=bitcmyk - fi -fi - -# -# Figure out USERNAME -# -if [ "$LPUSER" != "" ]; then - USER="$LPUSER@$LPHOST" -else - USER="" -fi - -# -# Main Program, just cobble together the pipeline and run it -# -# The malarky with file descriptors 1 and 3 is to avoid a bug in -# (some versions?) of Ghostscript where Postscript's stdout gets -# intermingled with the printer drivers output, resulting in -# corrupted image data. -# -GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" - -foo2zjs-pstops $PSTOPS_OPTS | \ -$PREFILTER \ -| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ - -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null) 3>&1 \ -| foo2lava -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ - -z$MODEL $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG $SAVETONER \ - -J "$LPJOB" -U "$USER" \ - $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD -D$DEBUG - -# -# Log the command line, for debugging and problem reports -# -if [ -x /usr/bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- \ - "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" - logger -t "$BASENAME" -p lpr.info -- \ - "foo2lava -r$RES -g$DIM -p$PAPER -m$MEDIA \ --n$COPIES -d$DUPLEX -s$SOURCE -z$MODEL $COLOR $CLIP_UL $CLIP_LR $CLIP_LOG \ -$SAVETONER $BC $AIB $COLOR2MONO $NOPLANES $EXTRAPAD" -fi - -# -# Remove cruft -# -if [ $DEBUG -eq 0 ]; then - for i in crd.ps log usecie.ps selcrd.ps - do - file="$ICCTMP.$i" - [ -f $file ] && rm -f $file - done - [ -f "$TMPFILE" ] && rm -f $TMPFILE -fi - -exit 0 diff --git a/foo2lava-wrapper.1 b/foo2lava-wrapper.1 deleted file mode 100644 index a52e81f..0000000 --- a/foo2lava-wrapper.1 +++ /dev/null @@ -1,411 +0,0 @@ -'\" t -'\" -'\" DO NOT EDIT! This file is generated from foo2lava-wrapper.1in -'\" -'\" t -.TH foo2lava-wrapper 1 "Sun May 26 18:25:20 2024" "foo2lava-wrapper 0.0" -'\" -'\" -'\"========================================================================== -'\" STRINGS and MACROS -'\"========================================================================== -'\" -'\" Define strings for special characters that nroff doesn't have -'\" -'\" N.B. using .if cua to test for special characters did not work. -'\" -.if !'\*[.T]'ps' .ds ua up -.if '\*[.T]'ps' .ds ua \(ua -.if !'\*[.T]'ps' .ds da down -.if '\*[.T]'ps' .ds da \(da -.if !'\*[.T]'ps' .ds <- left -.if '\*[.T]'ps' .ds <- \(<- -.if !'\*[.T]'ps' .ds -> right -.if '\*[.T]'ps' .ds -> \(-> -'\" -'\" bx - box a Courier string for making keycaps -'\" -'\" N.B. this mess is to make the line drawing come out only -'\" if we are really generating postscript -'\" -.de bx -.ie !'\*[.T]'ps' \{\ -. RB [ \\$1 ]\\$2 -.\} -.el \{\ -. ie !r ps4html \{\ -'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' -. ft CW -. nr par*bxw \w'\\$1'+.4m -\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ -\Z'\h'.2m'\s-1\\$1\s+1'\ -\h'\\n[par*bxw]u'\\$2 -. ft P -. \} -. el \{\ -. RB [ \\$1 ]\\$2 -. \} -.\} -.. -'\" -'\" strings to set current color (null with old groff) -'\" -.if mred .ds red \m[red] -.if mgreen .ds green \m[green] -.if mblue .ds blue \m[blue] -.if mblack .ds black \m[black] -.if mblack .ds mP \mP -'\" -'\" fix for grotty + xterm. We call for orange, grotty outputs yellow, -'\" but xterm displays yellow as orange. The cycle is complete. -'\" -.if n .defcolor orange rgb #ffff00 -'\" -'\" color - set the current color (ignores request with old groff) -'\" -.de color -.if mred \m[\\$1]\c -.. -'\" -'\" colorword - colorize a word (ignored by old groff) -'\" -.de colorword -.ie m\\$1 \m[\\$1]\\$2\mP\c -.el \\$2\c -.. -'\" -'\" colbox - colorize a word in a filled box -'\" -.de colbox -.ie mred \M[\\$2]\ -\v'+.167v'\ -\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ -\v'-.167v'\ -\m[\\$1]\\$3\mP\MP -.el \\$3\c -.. -'\" -'\" Macros for doing pdfmarks -'\" -.de specialps -.if '\*[.T]'ps' \\k_\X'ps: \\$*'\h'|\\n_u'\c -.. -'\" -'\" pdfmark PDFMARKCODE -'\" -.ds pdfmarks -.if d pdfmarks \{\ -.de pdfmark -. specialps exec [\\$1 pdfmark -.. -'\" -'\" pdfdest LINKNAME -'\" -.de pdfdest -.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" -.. -'\" -'\" pdfbookmark COUNT LINKNAME STRING -'\" -.de pdfbookmark -. pdfmark "/View [/XYZ 44 730 1.0] /Count \\$1 /Dest /\\$2 /Title (\\$3) /OUT" -.. -'\" -'\" Define the SH and SS macros to save pdfmark information -'\" in "arrays" of numbers and strings. -'\" -.if !r rr_n \{\ -.nr rr_n 0 1 -.am SH -. nr rr_levels!\\n+[rr_n] 2 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.am SS -. nr rr_levels!\\n+[rr_n] 3 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.\} -'\" -'\" Called at the end of the document to generate the pdfmark outline -'\" -.de pdf_outline -.nr rr_levels!\\n+[rr_n] 1 -.nr rr_i 0 1 -.while \\n+[rr_i]<\\n[rr_n] \{\ -. nr rr_ip1 \\n[rr_i]+1 -. nr rr_count 0 -. if \\n[rr_levels!\\n[rr_ip1]]>\\n[rr_levels!\\n[rr_i]] \{\ -. nr rr_j \\n[rr_i] 1 -. while \\n+[rr_j]<\\n[rr_n] \{\ -. if \\n[rr_levels!\\n[rr_j]]<=\\n[rr_levels!\\n[rr_i]] \{\ -. break -. \} -. if \\n[rr_levels!\\n[rr_j]]==(\\n[rr_levels!\\n[rr_i]]+1) \{\ -. nr rr_count \\n[rr_count]+1 -. \} -. \} -. \} -. ds hhh \\*[rr_labels!\\n[rr_i]] -. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" -.\} -.. -'\" -'\" Some postscript to make pdfmarks harmless on old interpreters... -'\" -.specialps "def /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse" -'\" -'\" Force display of Bookmarks in Acrobat when document is viewed. -'\" -.pdfmark "[/PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW" -'\" -'\" Output the document info in pdfmarks -'\" -.pdfmark "\ - /Title (\*[an-title](\*[an-section])) \ - /Subject (\*[an-title] Manual Page) \ - /Author (Rick Richardson) \ - /Keywords (printing) \ - /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ - /CreationDate (\*[an-extra1]) \ - /ModDate (\*[an-extra1]) \ - /DOCINFO" -\} -'\" -'\" The manual page name is only 1st level mark -'\" -.nr rr_levels!\n+[rr_n] 1 -.ds rr_labels!\n[rr_n] \*[an-title](\*[an-section]) -.pdfdest Link\n[rr_n] -'\" -'\"========================================================================== -'\" MANUAL PAGE SOURCE -'\"========================================================================== -.SH NAME -foo2lava-wrapper \- Convert Postscript into a LAVAFLOW or OPL printer stream -.SH SYNOPSIS -.B foo2lava-wrapper -.RI [ options "] [" ps-file ] -.SH DESCRIPTION -.B foo2lava-wrapper -is a Foomatic compatible printer wrapper for the \fBfoo2lava\fP printer driver. -This script reads a Postscript \fIps-file\fP or standard input -and converts it to Zenographics LAVAFLOW printer format -for driving -the Konica Minolta magicolor 1600W color laser printer, -the Konica Minolta magicolor 1680MF/1690MF AIO printer, -the Konica Minolta magicolor 2480/2490 MF AIO printer, -the Konica Minolta magicolor 2530 DL network color laser printer, -and other Zenographics-based LAVAFLOW printers. -.P -This script can be used in a standalone fashion, but is intended to -be called from a printer spooler system which uses the Foomatic -printer database. - -.SH COMMAND LINE OPTIONS -.SS Normal Options -These are the options used to select the parameters of a -print job that are usually controlled on a per job basis. -.TP -.BI \-c -Print in color (else monochrome). -.TP -.BI \-C\0 colormode -Color correction mode [0]. -.TS -n l . -1 Photos (using m2300w CRDs) -2 Photos and text (using m2300w CRDs) -3 Graphics and text (using m2300w CRDs) -10 ICM color profile (using -G *.icm file) -.TE -.TP -.BI \-d\0 duplex -Duplex code to send to printer [1]. -.TS -| n l | n l | n l . -1 off 2 long edge 3 short edge -.TE -.TP -.BI \-m\0 media -Media code to send to printer [0]. -.TS -l l l -l n n. -_ -Media 2530DL -_ -plain 0 -transparency 4 -thick stock 20 -envelope 22 -letterhead 23 -postcard 25 -labels 26 -recycled 27 -.TE -.TP -.BI \-p\0 paper -Paper size code to send to printer [2]. -.TS -box; -| n l | n l. -1 executive 25 A5 -2 letter 26 A4 -3 legal 45 B5jis -80 env Monarch 65 B5iso -81 env #10 90 env DL -91 env C5 92 env B5 -835 4x6" photo 837 10x15cm photo -.TE -.TP -.BI \-n\0 copies -Number of copies [1]. -.TP -.BI \-r\0 xres x yres -Set device resolution in pixels/inch [1200x600]. -.TP -.BI \-s\0 source -Source (Input Slot) code to send to printer [255]. -.TS -| n l | n l. -1 Tray 1 255 auto -4 Tray 2 -.TE -.TP -.BI \-t -Draft mode. Every other pixel is white. -.TP -.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" -Print in N-up. Requires the \fBpsutils\fP package. -.TP -.BI \-o\0 orient -Orientation used for N-up. -.TS -l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) -.TE -.SS Printer Tweaking Options -These are the options used to customize the operation of \fBfoo2lava\fP -for a particular printer. -.TP -.BI \-u\0 xoff x yoff -Set the offset of the start of the printable region from the -upper left corner, in pixels [varies with paper size]. -The defaults should work on the 2200DL and 2300DL, and have not -been tested on any other printers. -.TP -.BI \-l\0 xoff x yoff -Set the offset of the end of the printable region from the -lower right corner, in pixels [varies with paper size]. -The defaults should work on the 2200DL and 2300DL, and have not -been tested on any other printers. -.TP -.BI \-L\0 mask -Send the logical clipping values from -u/-l in the LAVAFLOW stream. -\fBfoo2lava-wrapper\fP always runs Ghostscript with the ideal page dimensions, -so that the scale of the image is correct, -regardless whether or not the printer has unprintable regions. -This option is used to move the position of the clipped image -back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be -good in most cases. -.TS -l l. -0 don't send any logical clipping amounts -1 only send Y clipping amount -2 only send X clipping amount -3 send both X and Y clipping amounts -.TE -.TP -.BI \-z\0 model -Model. The default is [0]. -.TS -l l l. -model protocol Description -0 LAVAFLOW magicolor 2490 MF -0 LAVAFLOW magicolor 2530 DL -1 OPL magicolor 2480 MF -2 LAVAFLOW magicolor 1600W -2 LAVAFLOW magicolor 1680MF -2 LAVAFLOW magicolor 1690MF -.TE -.SS Color Tweaking Options -These are the options used to control the quality of color output. -Color correction is currently a WORK IN PROGRESS. -.TP -.BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, -etc. This option may appear more than once. -.TP -.BI \-G\0 profile.icm -Convert \fIprofile.icm\fP to a Postscript color rendering -dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and -adjust the printer colors by using the Postscript \fBsetcolorrendering\fP -operator. (WORK IN PROGRESS). -.TP -.BI \-G\0 gamma-file.ps -Prepend \fIgamma-file.ps\fP to the Postscript input to perform -color correction using the \fBsetcolortransfer\fP Postscript operator. -For example, the file might contain: -.br -{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer -.TP -.BI \-I\0 intent -Select profile intent from the ICM file. -0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. -Default is 0 (perceptual). -.SS Debugging Options -These options are used for debugging \fBfoo2lava\fP and its wrapper. -.TP -.BI \-S\0 plane -Output just a single color plane from a color print and print it -on the black plane. The default is to output all color planes. -.TS -l l. -1 Cyan -2 Magenta -3 Yellow -4 Black -.TE -.TP -.BI \-D\0 level -Set Debug level [0]. - -.SH EXAMPLES -Create a monochrome LAVAFLOW stream from a Postscript document, -examine it, and then print it using a RAW print queue: - -.RS -.nf -foo2lava-wrapper testpage.ps > testpage.zm -lavadecode < testpage.zm -lpr -P raw testpage.zm -.fi -.RE -.P -Create a color LAVAFLOW stream from a Postscript document: - -.RS -.nf -foo2lava-wrapper -c testpage.ps > testpage.zc -.fi -.RE - -.SH FILES -.BR /usr/bin/foo2lava-wrapper -.SH SEE ALSO -.BR foo2lava (1), -.BR lavadecode (1) -.BR opldecode (1) -.SH "AUTHOR" -Rick Richardson -.br -http://foo2zjs.rkkda.com/ -'\" -'\" -'\" -.em pdf_outline diff --git a/foo2lava-wrapper.1in b/foo2lava-wrapper.1in index f02d899..60629ea 100644 --- a/foo2lava-wrapper.1in +++ b/foo2lava-wrapper.1in @@ -42,7 +42,7 @@ n l . 1 Photos (using m2300w CRDs) 2 Photos and text (using m2300w CRDs) 3 Graphics and text (using m2300w CRDs) -10 ICM color profile (using -G *.icm file) +10 ICM color profile (using \-G *.icm file) .TE .TP .BI \-d\0 duplex @@ -108,9 +108,9 @@ Print in N-up. Requires the \fBpsutils\fP package. Orientation used for N-up. .TS l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) +Portrait \-op (normal) +Landscape \-ol (rotated 90 degrees anticlockwise) +Seascape \-os (rotated 90 degrees clockwise) .TE .SS Printer Tweaking Options These are the options used to customize the operation of \fBfoo2lava\fP @@ -129,13 +129,13 @@ The defaults should work on the 2200DL and 2300DL, and have not been tested on any other printers. .TP .BI \-L\0 mask -Send the logical clipping values from -u/-l in the LAVAFLOW stream. +Send the logical clipping values from \-u/-l in the LAVAFLOW stream. \fBfoo2lava-wrapper\fP always runs Ghostscript with the ideal page dimensions, so that the scale of the image is correct, regardless whether or not the printer has unprintable regions. This option is used to move the position of the clipped image back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be +the amount which was clipped by \-u and \-l, and should be good in most cases. .TS l l. @@ -162,7 +162,7 @@ These are the options used to control the quality of color output. Color correction is currently a WORK IN PROGRESS. .TP .BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, etc. This option may appear more than once. .TP .BI \-G\0 profile.icm @@ -207,7 +207,7 @@ examine it, and then print it using a RAW print queue: .nf foo2lava-wrapper testpage.ps > testpage.zm lavadecode < testpage.zm -lpr -P raw testpage.zm +lpr \-P raw testpage.zm .fi .RE .P @@ -215,7 +215,7 @@ Create a color LAVAFLOW stream from a Postscript document: .RS .nf -foo2lava-wrapper -c testpage.ps > testpage.zc +foo2lava-wrapper \-c testpage.ps > testpage.zc .fi .RE diff --git a/foo2lava.1 b/foo2lava.1 deleted file mode 100644 index 528c15a..0000000 --- a/foo2lava.1 +++ /dev/null @@ -1,369 +0,0 @@ -'\" t -'\" -'\" DO NOT EDIT! This file is generated from foo2lava.1in -'\" -'\" t -.TH foo2lava 1 "Sun May 26 18:25:20 2024" "foo2lava 0.0" -'\" -'\" -'\"========================================================================== -'\" STRINGS and MACROS -'\"========================================================================== -'\" -'\" Define strings for special characters that nroff doesn't have -'\" -'\" N.B. using .if cua to test for special characters did not work. -'\" -.if !'\*[.T]'ps' .ds ua up -.if '\*[.T]'ps' .ds ua \(ua -.if !'\*[.T]'ps' .ds da down -.if '\*[.T]'ps' .ds da \(da -.if !'\*[.T]'ps' .ds <- left -.if '\*[.T]'ps' .ds <- \(<- -.if !'\*[.T]'ps' .ds -> right -.if '\*[.T]'ps' .ds -> \(-> -'\" -'\" bx - box a Courier string for making keycaps -'\" -'\" N.B. this mess is to make the line drawing come out only -'\" if we are really generating postscript -'\" -.de bx -.ie !'\*[.T]'ps' \{\ -. RB [ \\$1 ]\\$2 -.\} -.el \{\ -. ie !r ps4html \{\ -'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' -. ft CW -. nr par*bxw \w'\\$1'+.4m -\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ -\Z'\h'.2m'\s-1\\$1\s+1'\ -\h'\\n[par*bxw]u'\\$2 -. ft P -. \} -. el \{\ -. RB [ \\$1 ]\\$2 -. \} -.\} -.. -'\" -'\" strings to set current color (null with old groff) -'\" -.if mred .ds red \m[red] -.if mgreen .ds green \m[green] -.if mblue .ds blue \m[blue] -.if mblack .ds black \m[black] -.if mblack .ds mP \mP -'\" -'\" fix for grotty + xterm. We call for orange, grotty outputs yellow, -'\" but xterm displays yellow as orange. The cycle is complete. -'\" -.if n .defcolor orange rgb #ffff00 -'\" -'\" color - set the current color (ignores request with old groff) -'\" -.de color -.if mred \m[\\$1]\c -.. -'\" -'\" colorword - colorize a word (ignored by old groff) -'\" -.de colorword -.ie m\\$1 \m[\\$1]\\$2\mP\c -.el \\$2\c -.. -'\" -'\" colbox - colorize a word in a filled box -'\" -.de colbox -.ie mred \M[\\$2]\ -\v'+.167v'\ -\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ -\v'-.167v'\ -\m[\\$1]\\$3\mP\MP -.el \\$3\c -.. -'\" -'\" Macros for doing pdfmarks -'\" -.de specialps -.if '\*[.T]'ps' \\k_\X'ps: \\$*'\h'|\\n_u'\c -.. -'\" -'\" pdfmark PDFMARKCODE -'\" -.ds pdfmarks -.if d pdfmarks \{\ -.de pdfmark -. specialps exec [\\$1 pdfmark -.. -'\" -'\" pdfdest LINKNAME -'\" -.de pdfdest -.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" -.. -'\" -'\" pdfbookmark COUNT LINKNAME STRING -'\" -.de pdfbookmark -. pdfmark "/View [/XYZ 44 730 1.0] /Count \\$1 /Dest /\\$2 /Title (\\$3) /OUT" -.. -'\" -'\" Define the SH and SS macros to save pdfmark information -'\" in "arrays" of numbers and strings. -'\" -.if !r rr_n \{\ -.nr rr_n 0 1 -.am SH -. nr rr_levels!\\n+[rr_n] 2 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.am SS -. nr rr_levels!\\n+[rr_n] 3 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.\} -'\" -'\" Called at the end of the document to generate the pdfmark outline -'\" -.de pdf_outline -.nr rr_levels!\\n+[rr_n] 1 -.nr rr_i 0 1 -.while \\n+[rr_i]<\\n[rr_n] \{\ -. nr rr_ip1 \\n[rr_i]+1 -. nr rr_count 0 -. if \\n[rr_levels!\\n[rr_ip1]]>\\n[rr_levels!\\n[rr_i]] \{\ -. nr rr_j \\n[rr_i] 1 -. while \\n+[rr_j]<\\n[rr_n] \{\ -. if \\n[rr_levels!\\n[rr_j]]<=\\n[rr_levels!\\n[rr_i]] \{\ -. break -. \} -. if \\n[rr_levels!\\n[rr_j]]==(\\n[rr_levels!\\n[rr_i]]+1) \{\ -. nr rr_count \\n[rr_count]+1 -. \} -. \} -. \} -. ds hhh \\*[rr_labels!\\n[rr_i]] -. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" -.\} -.. -'\" -'\" Some postscript to make pdfmarks harmless on old interpreters... -'\" -.specialps "def /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse" -'\" -'\" Force display of Bookmarks in Acrobat when document is viewed. -'\" -.pdfmark "[/PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW" -'\" -'\" Output the document info in pdfmarks -'\" -.pdfmark "\ - /Title (\*[an-title](\*[an-section])) \ - /Subject (\*[an-title] Manual Page) \ - /Author (Rick Richardson) \ - /Keywords (printing) \ - /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ - /CreationDate (\*[an-extra1]) \ - /ModDate (\*[an-extra1]) \ - /DOCINFO" -\} -'\" -'\" The manual page name is only 1st level mark -'\" -.nr rr_levels!\n+[rr_n] 1 -.ds rr_labels!\n[rr_n] \*[an-title](\*[an-section]) -.pdfdest Link\n[rr_n] -'\" -'\"========================================================================== -'\" MANUAL PAGE SOURCE -'\"========================================================================== -.SH NAME -foo2lava \- Convert Ghostscript pbmraw or bitcmyk format into a -LAVAFLOW or a OPL printer stream -.SH SYNOPSIS -.B foo2lava -.RI [ options "] <" pbmraw-file " >" lava-file -.sp 1 -.B foo2lava -.RI [ options "] <" bitcmyk-file " >" lava-file -.sp 1 -.B foo2lava -.RI [ options "] <" pksmraw-file " >" lava-file -.SH DESCRIPTION -.B foo2lava -converts Ghostscript pbmraw, bitcmyk, or pksmraw output formats to monochrome -or color LAVAFLOW or OPL streams, -for driving the Konica Minolta magicolor 2530 DL network color laser printer, -the Konica Minolta magicolor 2480/2480 MF AIO printer, -and other Zenographics-based LAVAFLOW printers. - -.SH COMMAND LINE OPTIONS -.SS Normal Options -These are the options used to select the parameters of a -print job that are usually controlled on a per job basis. -.TP -.BI \-c -Force color mode if autodetect doesn't work. -.TP -.BI \-d\0 duplex -Duplex code to send to printer [1]. -.TS -| n l | n l | n l . -1 off 2 long edge 3 short edge -.TE -.TP -.BI \-g\0 xpix x ypix -Set page dimensions in pixels [10200x6600]. -.TP -.BI \-m\0 media -Media code to send to printer [0]. -.TS -l l l -l n n. -_ -Media 2530DL -_ -plain 0 -transparency 4 -thick stock 20 -envelope 22 -letterhead 23 -postcard 25 -labels 26 -recycled 27 -.TE -.TP -.BI \-p\0 paper -Paper code to send to printer [2]. -.TS -box; -| n l | n l. -1 executive 25 A5 -2 letter 26 A4 -3 legal 45 B5jis -80 env Monarch 65 B5iso -81 env #10 90 env DL -91 env C5 92 env C6 -835 4x6" photo 837 10x15cm photo -.TE -.TP -.BI \-n\0 copies -Number of copies [1]. -.TP -.BI \-r\0 xres x yres -Set device resolution in pixels/inch [1200x600]. -.TP -.BI \-s\0 source -Source (InputSlot) code to send to printer [255]. -.TS -| n l | n l. -1 Tray 1 255 auto -4 Tray 2 -.TE -.TP -.BI \-t -Draft mode. Every other pixel is white. -.TP -.BI \-J\0 filename -Filename string to send to printer. -.TP -.BI \-U\0 username -Username string to send to printer. -.SS Printer Tweaking Options -These are the options used to customize the operation of \fBfoo2lava\fP -for a particular printer. -.TP -.BI \-u\0 xoff x yoff -Set the offset of the start of the printable region from the -upper left corner, in pixels [0x0]. -.TP -.BI \-l\0 xoff x yoff -Set the offset of the end of the printable region from the -lower right corner, in pixels [0x0]. -.TP -.BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the LAVAFLOW stream [3]. -.TS -l l. -0 don't send any logical clipping amounts -1 only send Y clipping amount -2 only send X clipping amount -3 send both X and Y clipping amounts -.TE -.TP -.BI \-A -AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. -.TP -.BI \-B -BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. -.TP -.BI \-z\0 model -Model. The default is [0]. -.TS -l l l. -model protocol Description -0 LAVAFLOW magicolor 2490 MF -0 LAVAFLOW magicolor 2530 DL -1 OPL magicolor 2480 MF -2 LAVAFLOW magicolor 1600W -2 LAVAFLOW magicolor 1680MF -2 LAVAFLOW magicolor 1690MF -.TE -.SS Debugging Options -These options are used for debugging \fBfoo2lava\fP. -.TP -.BI \-S\0 plane -Output just a single color plane from a color print and print it -on the black plane. The default is to output all color planes. -.TS -l l. -1 Cyan -2 Magenta -3 Yellow -4 Black -.TE -.TP -.BI \-D\0 level -Set Debug level [0]. - -.SH EXAMPLES -Create a black and white LAVAFLOW stream: - -.RS -.nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2lava -r1200x600 -g10200x6600 -p1 >testpage.zm -.fi -.RE -.P -Create a color LAVAFLOW stream: - -.RS -.nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2lava -r1200x600 -g10200x6600 -p1 >testpage.zc -.fi -.RE - -.SH FILES -.BR /usr/bin/foo2lava -.SH SEE ALSO -.BR foo2lava-wrapper (1), -.BR lavadecode (1) -.SH "AUTHOR" -Rick Richardson -.br -http://foo2zjs.rkkda.com/ -'\" -'\" -'\" -.em pdf_outline diff --git a/foo2lava.1in b/foo2lava.1in index 2328ae5..0b88544 100644 --- a/foo2lava.1in +++ b/foo2lava.1in @@ -111,7 +111,7 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [0x0]. .TP .BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the LAVAFLOW stream [3]. +Send logical clipping amounts implied by \-u/-l in the LAVAFLOW stream [3]. .TS l l. 0 don't send any logical clipping amounts @@ -160,10 +160,10 @@ Create a black and white LAVAFLOW stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r1200x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2lava -r1200x600 -g10200x6600 -p1 >testpage.zm +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-r1200x600 \-sDEVICE=pbmraw \ + \-sOutputFile=- \- < testpage.ps \ +| foo2lava \-r1200x600 \-g10200x6600 \-p1 >testpage.zm .fi .RE .P @@ -171,10 +171,10 @@ Create a color LAVAFLOW stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g10200x6600 -r1200x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2lava -r1200x600 -g10200x6600 -p1 >testpage.zc +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-g10200x6600 \-r1200x600 \-sDEVICE=bitcmyk \ + \-sOutputFile=- \- < testpage.ps \ +| foo2lava \-r1200x600 \-g10200x6600 \-p1 >testpage.zc .fi .RE diff --git a/foo2oak b/foo2oak deleted file mode 100755 index 573e90959c396ba11afd372e979ae702d8aca977..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91208 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 - -VERSION='$Id: foo2oak-wrapper.in,v 1.60 2011/08/07 16:49:30 rick Exp $' - -# -# Printer Notes: -# -# HP Color LaserJet 1500: -z0 (mirror bytes) -# -# Kyocera Mita KM-1635: -z1 (rotate 90) -# Kyocera Mita KM-2035: -z1 (rotate 90) -# - -PROGNAME="$0" -BASENAME=`basename $PROGNAME` -PREFIX=/usr -SHARE=$PREFIX/share/foo2oak -PATH=$PATH:/sw/bin:/opt/local/bin - -# -# Log the command line, for debugging and problem reports -# -if [ -x /usr/bin/logger -o -x /bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- "$BASENAME $@" x Set device resolution in pixels/inch [$RES] --s source Source code to send to printer [$SOURCE] - 1=tray1, 2=tray2, 4=manual, 7=auto - Code numbers may vary with printer model. --2/-3/-4/-6/-8/-10/-12/-14/-15/-16/-18 - Print with N-up (requires psutils) --o orient For N-up: -op is portrait, -ol is landscape, -os is seascape. - -Printer Tweaking Options: --u x Set offset of upper left printable in pixels [varies] --l x Set offset of lower right printable in pixels [varies] --L mask Send logical clipping values from -u/-l in ZjStream [3] - 0=no, 1=Y, 2=X, 3=XY --z model Model: 0=HP CLJ 1500, 1=KM-1635/KM-2035 [$MODEL] - -Color Tweaking Options: --g gsopts Additional options to pass to Ghostscript, such as - -dDITHERPPI=nnn, etc. May appear more than once. [] --G profile.icm Convert profile.icm to a Postscript CRD using icc2ps and - adjust colors using the setcolorrendering PS operator. - $SHARE/icm/ will be searched for profile.icm. --I intent Select profile intent from ICM file [$INTENT] - 0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute --G gamma-file.ps Prepend gamma-file to the Postscript input to perform - color correction using the setcolortransfer PS operator. - -Debugging Options: --S plane Output just a single color plane from a color print [all] - 1=Cyan, 2=Magenta, 3=Yellow, 4=Black --D lvl Set Debug level [$DEBUG] --V $VERSION -EOF - - exit 1 -} - -# -# Report an error and exit -# -error() { - echo "$BASENAME: $1" >&2 - exit 1 -} - -dbgcmd() { - if [ $DEBUG -ge 1 ]; then - echo "$@" >&2 - fi - "$@" -} - -# -# N-up-ify the job. Requires psnup from psutils package -# -nup() { - case "$NUP" in - [2368]|1[0458]) - tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.3in -p$paper -q - ;; - [49]|1[26]) - tr '\r' '\n' | psnup $NUP_ORIENT -d2 -$NUP -m.5in -p$paper -q - ;; - *) - error "Illegal call to nup()." - ;; - esac -} - -# -# Process the options -# - -# Try to use a local copy of GhostScript 8.54, if available. Otherwise, -# fallback to whatever the Linux distro has installed (usually 7.07) -# -# N.B. := operator used here, when :- would be better, because "ash" -# doesn't have :- -if eval gs.foo -v >/dev/null 2>&1; then - GSBIN=${GSBIN:-gs.foo} -else - GSBIN=${GSBIN:-gs} -fi - -BPP=1 -CMDLINE="$*" -DEBUG=0 -DUPLEX=1 -COLOR= -COLORMODE=default -MODEL=0 -QUALITY=1 -QUALITY=wts -MEDIA=1 -COPIES=1 -PAPER=1 -RES=600x600 -SOURCE=7 -NUP= -CLIP_UL= -CLIP_LR= -CLIP_LOG= -BC= -AIB= -COLOR2MONO= -GAMMAFILE=default -INTENT=0 -GSOPTS= -NUP_ORIENT= -GSDEV=-sDEVICE=pbmraw -# What mode to use if the user wants us to pick the "best" mode -case `$GSBIN --version` in -7*) DEFAULTCOLORMODE=10 - ;; -8.1*) - DEFAULTCOLORMODE=10 - QUALITY=1 - ;; -*) DEFAULTCOLORMODE=10 - ;; -esac -while getopts "1:23456789o:b:cC:d:g:l:u:L:m:n:p:q:r:s:z:ABS:D:G:I:Vh?" opt -do - case $opt in - b) BPP=$OPTARG;; - c) COLOR=-c;; - d) DUPLEX="$OPTARG";; - g) GSOPTS="$GSOPTS $OPTARG";; - m) MEDIA="$OPTARG";; - n) COPIES="$OPTARG";; - p) PAPER="$OPTARG";; - q) QUALITY="$OPTARG";; - r) RES="$OPTARG";; - s) SOURCE="$OPTARG";; - z) MODEL="$OPTARG";; - l) CLIP_LR="-l $OPTARG";; - u) CLIP_UL="-u $OPTARG";; - L) CLIP_LOG="-L $OPTARG";; - A) AIB=-A;; - B) BC=-B;; - C) COLORMODE="$OPTARG";; - S) COLOR2MONO="-S$OPTARG";; - D) DEBUG="$OPTARG";; - G) GAMMAFILE="$OPTARG";; - I) INTENT="$OPTARG";; - [234689]) NUP="$opt";; - [57]) error "Can't find acceptable layout for $opt-up";; - 1) case "$OPTARG" in - [024568]) NUP="1$OPTARG";; - *) error "Can't find acceptable layout for 1$OPTARG-up";; - esac - ;; - o) case "$OPTARG" in - l*) NUP_ORIENT=-l;; - s*) NUP_ORIENT=-r;; - p*|*) NUP_ORIENT=;; - esac;; - V) echo "$VERSION"; foo2oak -V; foo2zjs-pstops -V; exit 0;; - h|\?) - if [ "$CMDLINE" != "-?" -a "$CMDLINE" != -h ]; then - echo "Illegal command:" - echo " $0 $CMDLINE" - echo - fi - usage;; - esac -done -shift `expr $OPTIND - 1` - -# -# If there is an argument left, take it as the file to print. -# Else, the input comes from stdin. -# -if [ $# -ge 1 ]; then - if [ "$LPJOB" = "" ]; then - : # LPJOB="$1" - fi - exec < $1 -fi - -# -# Select the ghostscript device to use -# -case "$BPP" in -1) if [ "" = "$COLOR" ]; then - GSDEV=-sDEVICE=pbmraw - else - GSDEV=-sDEVICE=bitcmyk - fi - ;; -2) if [ "" = "$COLOR" ]; - then - GSDEV=-sDEVICE=pgmraw - else - GSDEV="-sDEVICE=cups -dcupsColorSpace=6 -dcupsBitsPerColor=2" - fi - ;; -*) error "Illegal number of bits per plane ($BPP)";; -esac - -# -case "$QUALITY" in -0) - GSOPTS="-dCOLORSCREEN $GSOPTS" - ;; -1) - GSOPTS="-dCOLORSCREEN $GSOPTS" - ;; -2) - GSOPTS="-dMaxBitmap=500000000 $GSOPTS" - ;; -as) - GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" - ;; -wts) - GSOPTS="-dCOLORSCREEN -dMaxBitmap=500000000 $GSOPTS" - ;; -esac - -# -# Validate model code -# -case "$MODEL" in -0) MIRROR=1; ROTATE90=0;; -1) MIRROR=0; ROTATE90=1;; -*) error "Unknown model code $MODEL";; -esac - -# -# Validate media code -# -case "$MEDIA" in -0|auto) MEDIA=0;; -1|plain) MEDIA=1;; -2|preprinted) MEDIA=2;; -3|letterhead) MEDIA=3;; -4|transparency) MEDIA=4;; -5|prepunched) MEDIA=5;; -6|labels) MEDIA=6;; -7|bond) MEDIA=7;; -8|recylcled) MEDIA=8;; -9|color) MEDIA=9;; -10|cardstock) MEDIA=10;; -11|heavy) MEDIA=11;; -12|envelope) MEDIA=12;; -13|light) MEDIA=13;; -14|tough) MEDIA=14;; - -15|vellum) MEDIA=15;; -16|rough) MEDIA=16;; -19|thick) MEDIA=19;; -20|highqual) MEDIA=20;; -[0-9]*) ;; -*) error "Unknown media code $MEDIA";; -esac - -# -# Validate source (InputSlot) code -# -case "$SOURCE" in -1|tray1) SOURCE=1;; -2|tray2) SOURCE=2;; -4|manual|mp) SOURCE=4;; -7|auto) SOURCE=7;; -[0-9]*) ;; -*) error "Unknown source code $SOURCE";; -esac - -# -# Validate Duplex code -# -case "$DUPLEX" in -1|off|none) DUPLEX=1;; -2|long*) DUPLEX=2;; -3|short*) DUPLEX=3;; -[0-9]*) ;; -*) error "Unknown duplex code $DUPLEX";; -esac - -# -# Validate Resolution -# -case "$RES" in -600x600) ;; -1200x600) ;; -2400x600) ;; -*) error "Illegal resolution $RES";; -esac - -# -# Figure out the paper dimensions in pixels/inch, and set the -# default clipping region. -# -set_clipping() { - ulx=$1; uly=$2 - lrx=$3; lry=$4 - - # Set clipping region if it isn't already set - if [ "$CLIP_UL" = "" ]; then - case "$RES" in - 600x600) ulx=`expr $ulx / 2`;; - 2400x600) ulx=`expr $ulx \* 2`;; - esac - CLIP_UL="-u ${ulx}x${uly}" - fi - if [ "$CLIP_LR" = "" ]; then - case "$RES" in - 600x600) lrx=`expr $lrx / 2`;; - 2400x600) lrx=`expr $lrx \* 2`;; - esac - CLIP_LR="-l ${lrx}x${lry}" - fi -} - -case "$PAPER" in -Custom*x*) - # Command line only - XDIM=`echo "$PAPER" | sed -e "s/Custom.//" -e "s/x.*//" ` - YDIM=`echo "$PAPER" | sed -e "s/.*x//" ` - if [ "$XDIM" = "" -o "$YDIM" = "" ]; then - error "Custom page size '$PAPER' != 1-99999" - fi - if [ "$XDIM" -eq 0 -o "$YDIM" -eq 0 ]; then - error "Custom page size '$PAPER' != 1-99999" - fi - XDIM=`dc -e "$XDIM 1200* 72/p"` - YDIM=`dc -e "$YDIM 600* 72/p"` - PAPER=296; paper=letter; - set_clipping 2 100 2 100 - ;; -Custom*) - #%%BeginFeature: *CustomPageSize True - #216 - #360 - #0 - #0 - #0 - #pop pop pop pop pop - - #%%BeginFeature: *CustomPageSize True - #792.000000 612.000000 1 0.000000 0.000000 - #pop pop pop pop pop - - if [ $DEBUG = 0 ]; then - TMPFILE=/tmp/cus$$ - else - TMPFILE=/tmp/custom.ps - fi - cat >$TMPFILE - exec <$TMPFILE - - tmp=`head -n 10000 $TMPFILE \ - | sed -n '/CustomPageSize/{n;p;n;p;}' \ - | tr '\n' ' '` - case "$tmp" in - [0-9]*\ [0-9]*) - XDIM=`echo "$tmp" | sed 's/ .*//'` - YDIM=`echo "$tmp" | sed -e 's/^[^ ]* //' -e 's/ .*//'` - ;; - *) - if [ $DEBUG = 0 ]; then rm -f $TMPFILE; fi - error "Custom page size [XY]DIM != 1-99999" - ;; - esac - XDIM=`dc -e "$XDIM 1200* 72/p"` - YDIM=`dc -e "$YDIM 600* 72/p"` - PAPER=296; paper=letter; - set_clipping 2 100 2 100 - ;; -1|letter) PAPER=1; paper=letter; XDIM="10200"; YDIM="6600" - set_clipping 140 100 140 100 - ;; -3|ledger) PAPER=3; paper=ledger; XDIM="20400"; YDIM="6600" - set_clipping 140 100 140 100 - ;; -5|legal) PAPER=5; paper=legal; XDIM="10200"; YDIM="8400" - set_clipping 140 100 140 100 - ;; -6|statement) PAPER=6; paper=statement; XDIM="6600"; YDIM="5100" - set_clipping 140 100 140 100 - ;; -7|executive) PAPER=7; paper=executive; XDIM="8700"; YDIM="6300" - set_clipping 140 100 140 100 - ;; -8|a3|A3) PAPER=8; paper=a3; XDIM="19842"; YDIM="7014" - set_clipping 160 100 160 100 - ;; -9|a4|A4) PAPER=9; paper=a4; XDIM="9920"; YDIM="7014" - set_clipping 160 100 160 100 - ;; -11|a5|A5) PAPER=11; paper=a5; XDIM="6992"; YDIM="4960" - set_clipping 140 100 140 100 - ;; -12|b4|B4) PAPER=12; paper=b4; XDIM="12142"; YDIM="8598" - set_clipping 140 100 140 100 - ;; -13|b5jis|B5jis) PAPER=13; paper=b5; XDIM="8598"; YDIM="6070" - set_clipping 140 100 140 100 - ;; -14|folio|Folio) PAPER=14; paper=folio; XDIM="9922"; YDIM="7796" - set_clipping 140 100 140 100 - ;; -19|env9|"env#9") - PAPER=19; paper=env9; XDIM="4650"; YDIM="5362" - set_clipping 140 100 140 100 - ;; -20|env10|"env#10") - PAPER=20; paper=env10; XDIM="4950"; YDIM="5700" - set_clipping 140 100 140 100 - ;; -27|envDL) PAPER=27; paper=envDL; XDIM="5200"; YDIM="5200" - set_clipping 140 100 140 100 - ;; -28|envC5) PAPER=28; paper=envC5; XDIM="7650"; YDIM="5408" - set_clipping 140 100 140 100 - ;; -30|envC4) PAPER=30; paper=envC4; XDIM="10818"; YDIM="7654" - set_clipping 140 100 140 100 - ;; -#34|envB5) PAPER=34; paper=envB5; XDIM="8316"; YDIM="5892" -# set_clipping 140 100 140 100 -# ;; -37|envMonarch) PAPER=37; paper=envMonarch;XDIM="4650"; YDIM="4500" - set_clipping 140 100 140 100 - ;; -257|a6|A6) PAPER=257; paper=a6; XDIM="4961"; YDIM="3496" - set_clipping 140 100 140 100 - ;; -258|b6|B6) PAPER=258; paper=b6; XDIM="6048"; YDIM="4300" - set_clipping 140 100 140 100 - ;; -259|b5iso|B5iso) - PAPER=259; paper=b5iso; XDIM="8516"; YDIM="5906" - set_clipping 140 100 140 100 - ;; -260|env6|"env#6") - PAPER=260; paper=env6; XDIM="4356"; YDIM="3900" - set_clipping 140 100 140 100 - ;; -*) error "Unimplemented paper code $PAPER";; -esac -# e.g. /usr/share/ghostscript/7.07/lib/gs_statd.ps -PAPERSIZE="-sPAPERSIZE=$paper"; - - -case "$RES" in -600x600) XDIM=`expr $XDIM / 2`;; -1200x600) ;; -2400x600) XDIM=`expr $XDIM \* 2`;; -esac -if [ $ROTATE90 = 1 ]; then - tmp=$XDIM - XDIM=$YDIM - YDIM=$tmp - case "$RES" in - 600x600) YDIMpoints=`dc -e "6k $YDIM 600 / 72 *p"`;; - 1200x600) YDIMpoints=`dc -e "6k $YDIM 1200 / 72 *p"`;; - 2400x600) YDIMpoints=`dc -e "6k $YDIM 2400 / 72 *p"`;; - esac -fi -DIM="${XDIM}x${YDIM}" - -# -# Filter thru psnup if N-up printing has been requested -# -case $NUP in -[234689]|1[024568]) PREFILTER="nup";; -*) PREFILTER=cat;; -esac -if [ "$DEBUG" -ge 9 ]; then - PREFILTER="tee /tmp/$BASENAME.ps" -fi - -# -# Overload -G. If the file name ends with ".icm" or ".ICM" -# then convert the ICC color profile to a Postscript CRD, -# then prepend it to the users job. Select the intent -# using the -I option. -# - -create_crd() { - # - # Create a Postscript CRD - # - ICC2PS=$PREFIX/bin/foo2zjs-icc2ps - if [ -x $ICC2PS ]; then - case "$GAMMAFILE" in - none | none.icm | */none.icm) - ;; - *) - if [ -x /usr/bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- \ - "`basename $ICC2PS` -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps" - fi - $ICC2PS -o $GAMMAFILE -t$INTENT > $ICCTMP.crd.ps 2>$ICCTMP.log \ - || error "Problem converting .ICM file to Postscript" - ;; - esac - - PSTOPS_OPTS="$PSTOPS_OPTS -c" - cat > $ICCTMP.usecie.ps <<-EOF - %!PS-Adobe-3.0 - <>setpagedevice - EOF - if [ "$QUALITY" = wts -o "$QUALITY" = as ]; then - if [ "$QUALITY" = wts ]; then - cat >> $ICCTMP.usecie.ps <<-EOF - << /UseWTS true >> setuserparams - EOF - else - cat >> $ICCTMP.usecie.ps <<-EOF - << /UseWTS false >> setuserparams - EOF - fi - cat >> $ICCTMP.usecie.ps <<-EOF - << - /AccurateScreens true - /HalftoneType 1 - /HalftoneName (Round Dot Screen) cvn - /SpotFunction { 180 mul cos exch 180 mul cos add 2 div} - /Frequency 137 - /Angle 37 - >> sethalftone - EOF - fi - cat > $ICCTMP.selcrd.ps <<-EOF - /Current /ColorRendering findresource setcolorrendering - EOF - case "$GAMMAFILE" in - none | none.icm | */none.icm) GAMMAFILE="$ICCTMP.usecie.ps";; - *) GAMMAFILE="$ICCTMP.usecie.ps $ICCTMP.crd.ps $ICCTMP.selcrd.ps";; - esac - else - GAMMAFILE= - fi -} - -if [ $DEBUG -gt 0 ]; then - ICCTMP=/tmp/icc -else - ICCTMP=/tmp/icc$$ -fi - -if [ "" = "$COLOR" ]; then - COLORMODE= - GAMMAFILE= -else - case "$COLORMODE" in - default) COLORMODE=$DEFAULTCOLORMODE;; - esac - case "$GAMMAFILE" in - default) GAMMAFILE=hpclj2500rgb.icm;; - esac -fi - -PSTOPS_OPTS="-n" -if [ $ROTATE90 = 1 ]; then - case $paper in - a3) ;; - ledger) ;; - *) PSTOPS_OPTS="$PSTOPS_OPTS -h $YDIMpoints -r";; - esac -fi - -case "$COLORMODE" in -0|"") - # Monochrome - ;; -10|icm) - # Use old ICM method - AIB=-A - BC=-B - case "$GAMMAFILE" in - none | none.icm | */none.icm) - create_crd - ;; - *.icm|*.ICM|*.icc|*.ICC) - # - # Its really an .ICM file, not a gamma file. - # - # The file can be a full path name, or the name of a file in $SHARE/icm/ - # - if [ -r "$GAMMAFILE" ]; then - create_crd - elif [ -r "$SHARE/icm/$GAMMAFILE" ]; then - GAMMAFILE="$SHARE/icm/$GAMMAFILE" - create_crd - else - GAMMAFILE= - fi - ;; - esac -esac - -if [ "$COLOR" != "" -a "$QUALITY" = wts ]; then - PSTOPS_OPTS="$PSTOPS_OPTS -w" -elif [ "$COLOR" != "" -a "$QUALITY" = as ]; then - PSTOPS_OPTS="$PSTOPS_OPTS -a" -fi - -if [ "" != "$COLOR" ]; then - if [ "" = "$AIB" -a "" = "$BC" ]; then - # Faster, but can't handle AllIsBlack or BlackClears - GSDEV=-sDEVICE=pksmraw - else - # Can't handle different size pages - GSDEV=-sDEVICE=bitcmyk - fi -fi - -# -# Figure out USERNAME -# -if [ "$LPUSER" != "" ]; then - USER="$LPUSER@$LPHOST" -else - USER="" -fi - -# -# Main Program, just cobble together the pipeline and run it -# -# The malarky with file descriptors 1 and 3 is to avoid a bug in -# (some versions?) of Ghostscript where Postscript's stdout gets -# intermingled with the printer drivers output, resulting in -# corrupted image data. -# -GS="$GSBIN -q -dBATCH -dSAFER -dQUIET -dNOPAUSE" - -foo2zjs-pstops $PSTOPS_OPTS | \ -$PREFILTER \ -| ($GS $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS \ - -sOutputFile="|cat 1>&3" $GAMMAFILE -_ >/dev/null 2>/dev/null) 3>&1 \ -| foo2oak -r$RES -g$DIM -p$PAPER -m$MEDIA -n$COPIES -d$DUPLEX -s$SOURCE \ - -z$MODEL -M$MIRROR $COLOR -b$BPP $CLIP_UL $CLIP_LR $CLIP_LOG \ - -J "$LPJOB" -U "$USER" \ - $BC $AIB $COLOR2MONO -D$DEBUG - -# -# Log the command line, for debugging and problem reports -# -if [ -x /usr/bin/logger ]; then - logger -t "$BASENAME" -p lpr.info -- \ - "$GSBIN $PAPERSIZE -g$DIM -r$RES $GSDEV $GSOPTS $GAMMAFILE" - logger -t "$BASENAME" -p lpr.info -- \ - "foo2oak -r$RES -g$DIM -p$PAPER -m$MEDIA \ --n$COPIES -d$DUPLEX -s$SOURCE -z$MODEL -M$MIRROR $COLOR -b$BPP \ -$CLIP_UL $CLIP_LR $CLIP_LOG \ -$BC $AIB $COLOR2MONO" -fi - -# -# Remove cruft -# -if [ $DEBUG -eq 0 ]; then - for i in crd.ps log usecie.ps selcrd.ps - do - file="$ICCTMP.$i" - [ -f $file ] && rm -f $file - done - [ -f "$TMPFILE" ] && rm -f $TMPFILE -fi - -exit 0 diff --git a/foo2oak-wrapper.1 b/foo2oak-wrapper.1 deleted file mode 100644 index 749a3e1..0000000 --- a/foo2oak-wrapper.1 +++ /dev/null @@ -1,403 +0,0 @@ -'\" t -'\" -'\" DO NOT EDIT! This file is generated from foo2oak-wrapper.1in -'\" -'\" t -.TH foo2oak-wrapper 1 "Sun May 26 18:25:20 2024" "foo2oak-wrapper 0.0" -'\" -'\" -'\"========================================================================== -'\" STRINGS and MACROS -'\"========================================================================== -'\" -'\" Define strings for special characters that nroff doesn't have -'\" -'\" N.B. using .if cua to test for special characters did not work. -'\" -.if !'\*[.T]'ps' .ds ua up -.if '\*[.T]'ps' .ds ua \(ua -.if !'\*[.T]'ps' .ds da down -.if '\*[.T]'ps' .ds da \(da -.if !'\*[.T]'ps' .ds <- left -.if '\*[.T]'ps' .ds <- \(<- -.if !'\*[.T]'ps' .ds -> right -.if '\*[.T]'ps' .ds -> \(-> -'\" -'\" bx - box a Courier string for making keycaps -'\" -'\" N.B. this mess is to make the line drawing come out only -'\" if we are really generating postscript -'\" -.de bx -.ie !'\*[.T]'ps' \{\ -. RB [ \\$1 ]\\$2 -.\} -.el \{\ -. ie !r ps4html \{\ -'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' -. ft CW -. nr par*bxw \w'\\$1'+.4m -\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ -\Z'\h'.2m'\s-1\\$1\s+1'\ -\h'\\n[par*bxw]u'\\$2 -. ft P -. \} -. el \{\ -. RB [ \\$1 ]\\$2 -. \} -.\} -.. -'\" -'\" strings to set current color (null with old groff) -'\" -.if mred .ds red \m[red] -.if mgreen .ds green \m[green] -.if mblue .ds blue \m[blue] -.if mblack .ds black \m[black] -.if mblack .ds mP \mP -'\" -'\" fix for grotty + xterm. We call for orange, grotty outputs yellow, -'\" but xterm displays yellow as orange. The cycle is complete. -'\" -.if n .defcolor orange rgb #ffff00 -'\" -'\" color - set the current color (ignores request with old groff) -'\" -.de color -.if mred \m[\\$1]\c -.. -'\" -'\" colorword - colorize a word (ignored by old groff) -'\" -.de colorword -.ie m\\$1 \m[\\$1]\\$2\mP\c -.el \\$2\c -.. -'\" -'\" colbox - colorize a word in a filled box -'\" -.de colbox -.ie mred \M[\\$2]\ -\v'+.167v'\ -\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ -\v'-.167v'\ -\m[\\$1]\\$3\mP\MP -.el \\$3\c -.. -'\" -'\" Macros for doing pdfmarks -'\" -.de specialps -.if '\*[.T]'ps' \\k_\X'ps: \\$*'\h'|\\n_u'\c -.. -'\" -'\" pdfmark PDFMARKCODE -'\" -.ds pdfmarks -.if d pdfmarks \{\ -.de pdfmark -. specialps exec [\\$1 pdfmark -.. -'\" -'\" pdfdest LINKNAME -'\" -.de pdfdest -.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" -.. -'\" -'\" pdfbookmark COUNT LINKNAME STRING -'\" -.de pdfbookmark -. pdfmark "/View [/XYZ 44 730 1.0] /Count \\$1 /Dest /\\$2 /Title (\\$3) /OUT" -.. -'\" -'\" Define the SH and SS macros to save pdfmark information -'\" in "arrays" of numbers and strings. -'\" -.if !r rr_n \{\ -.nr rr_n 0 1 -.am SH -. nr rr_levels!\\n+[rr_n] 2 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.am SS -. nr rr_levels!\\n+[rr_n] 3 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.\} -'\" -'\" Called at the end of the document to generate the pdfmark outline -'\" -.de pdf_outline -.nr rr_levels!\\n+[rr_n] 1 -.nr rr_i 0 1 -.while \\n+[rr_i]<\\n[rr_n] \{\ -. nr rr_ip1 \\n[rr_i]+1 -. nr rr_count 0 -. if \\n[rr_levels!\\n[rr_ip1]]>\\n[rr_levels!\\n[rr_i]] \{\ -. nr rr_j \\n[rr_i] 1 -. while \\n+[rr_j]<\\n[rr_n] \{\ -. if \\n[rr_levels!\\n[rr_j]]<=\\n[rr_levels!\\n[rr_i]] \{\ -. break -. \} -. if \\n[rr_levels!\\n[rr_j]]==(\\n[rr_levels!\\n[rr_i]]+1) \{\ -. nr rr_count \\n[rr_count]+1 -. \} -. \} -. \} -. ds hhh \\*[rr_labels!\\n[rr_i]] -. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" -.\} -.. -'\" -'\" Some postscript to make pdfmarks harmless on old interpreters... -'\" -.specialps "def /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse" -'\" -'\" Force display of Bookmarks in Acrobat when document is viewed. -'\" -.pdfmark "[/PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW" -'\" -'\" Output the document info in pdfmarks -'\" -.pdfmark "\ - /Title (\*[an-title](\*[an-section])) \ - /Subject (\*[an-title] Manual Page) \ - /Author (Rick Richardson) \ - /Keywords (printing) \ - /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ - /CreationDate (\*[an-extra1]) \ - /ModDate (\*[an-extra1]) \ - /DOCINFO" -\} -'\" -'\" The manual page name is only 1st level mark -'\" -.nr rr_levels!\n+[rr_n] 1 -.ds rr_labels!\n[rr_n] \*[an-title](\*[an-section]) -.pdfdest Link\n[rr_n] -'\" -'\"========================================================================== -'\" MANUAL PAGE SOURCE -'\"========================================================================== -.SH NAME -foo2oak-wrapper \- Convert Postscript into an OAKT printer stream -.SH SYNOPSIS -.B foo2oak-wrapper -.RI [ options "] [" ps-file ] -.SH DESCRIPTION -.B foo2oak-wrapper -is a Foomatic compatible printer wrapper for the \fBfoo2oak\fP printer driver. -This script reads a Postscript \fIps-file\fP or standard input -and converts it to Oak Technology OAKT printer format -for driving the HP Color LaserJet 1500 laser printer, -Kyocera KM-1636/KM-2035 copiers, -and other OAKT-based printers. -.P -This script can be used in a standalone fashion, but is intended to -be called from a printer spooler system which uses the Foomatic -printer database. - -.SH COMMAND LINE OPTIONS -.SS Normal Options -These are the options used to select the parameters of a -print job that are usually controlled on a per job basis. -.TP -.BI \-b\0 bits -Number of bits per plane (1 or 2) [1]. -.TP -.BI \-c -Print in color (else monochrome). -.TP -.BI \-d\0 duplex -Duplex code to send to printer [1]. -.TS -| n l | n l | n l . -1 off 2 long edge 3 short edge -.TE -.TP -.BI \-m\0 media -Media code to send to printer [1]. -.TS -l l l -l n n. -_ -Media HP CLJ 1500 KM-1635 - -z0 -z1 -_ -autoselect 0 0 -plain 1 1 -preprinted 2 2 -letterhead 3 3 -transparency 4 4 -prepunched 5 5 -labels 6 6 -bond 7 7 -recycled 8 8 -color 9 9 -cardstock 10 10 -envelope 11 11 -light 13 na -tough 14 na -vellum na 15 -rough na 16 -thick na 19 -highqual na 20 -.TE -.TP -.BI \-p\0 paper -Paper size code to send to printer [1]. -.TS -box; -| n l | n l. -1 letter 3 ledger -5 legal 6 statement -7 executive 8 A3 -9 A4 11 A5 -12 B4 13 B5jis -14 folio 19 env9 -20 env10 27 envDL -28 envC5 30 envC4 -37 envMonarch 257 A6 -258 B6 259 B5iso -260 env6 -.TE -.TP -.BI \-n\0 copies -Number of copies [1]. -.TP -.BI \-r\0 xres x yres -Set device resolution in pixels/inch [600x600]. -.TP -.BI \-s\0 source -Source (Input Slot) code to send to printer [7]. -.TS -| n l | n l. -1 tray1 2 tray2 -4 manual 7 auto -.TE -.TP -.BI "\-2 \-3 \-4 \-5 \-6 \-8 \-9 \-10 \-12 \-14 \-15 \-16 \-18" -Print in N-up. Requires the \fBpsutils\fP package. -.TP -.BI \-o\0 orient -Orientation used for N-up. -.TS -l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) -.TE -.SS Printer Tweaking Options -These are the options used to customize the operation of \fBfoo2oak\fP -for a particular printer. -.TP -.BI \-u\0 xoff x yoff -Set the offset of the start of the printable region from the -upper left corner, in pixels [varies with paper size]. -The defaults should work on the 2200DL and 2300DL, and have not -been tested on any other printers. -.TP -.BI \-l\0 xoff x yoff -Set the offset of the end of the printable region from the -lower right corner, in pixels [varies with paper size]. -The defaults should work on the 2200DL and 2300DL, and have not -been tested on any other printers. -.TP -.BI \-L\0 mask -Send the logical clipping values from -u/-l in the OAKT stream. -\fBfoo2oak-wrapper\fP always runs Ghostscript with the ideal page dimensions, -so that the scale of the image is correct, -regardless whether or not the printer has unprintable regions. -This option is used to move the position of the clipped image -back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be -good in most cases. -.TS -l l. -0 don't send any logical clipping amounts -1 only send Y clipping amount -2 only send X clipping amount -3 send both X and Y clipping amounts -.TE -.TP -.BI \-z\0 model -Model is 0 for the HP Color LaserJet 1500, -and 1 for the Kyocera KM-1635/KM-2035 copiers. The default is 0. -.SS Color Tweaking Options -These are the options used to control the quality of color output. -Color correction is currently a WORK IN PROGRESS. -.TP -.BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, -etc. This option may appear more than once. -.TP -.BI \-G\0 profile.icm -Convert \fIprofile.icm\fP to a Postscript color rendering -dictionary (CRD) using \fBfoo2zjs-icc2ps\fP and -adjust the printer colors by using the Postscript \fBsetcolorrendering\fP -operator. (WORK IN PROGRESS). -.TP -.BI \-G\0 gamma-file.ps -Prepend \fIgamma-file.ps\fP to the Postscript input to perform -color correction using the \fBsetcolortransfer\fP Postscript operator. -For example, the file might contain: -.br -{0.333 exp} {0.333 exp} {0.333 exp} {0.333 exp} setcolortransfer -.TP -.BI \-I\0 intent -Select profile intent from the ICM file. -0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute. -Default is 0 (perceptual). -.SS Debugging Options -These options are used for debugging \fBfoo2oak\fP and its wrapper. -.TP -.BI \-S\0 plane -Output just a single color plane from a color print and print it -on the black plane. The default is to output all color planes. -.TS -l l. -1 Cyan -2 Magenta -3 Yellow -4 Black -.TE -.TP -.BI \-D\0 level -Set Debug level [0]. - -.SH EXAMPLES -Create a monochrome OAKT stream from a Postscript document, -examine it, and then print it using a RAW print queue: - -.RS -.nf -foo2oak-wrapper testpage.ps > testpage.oak -oakdecode < testpage.oak -lpr -P raw testpage.oak -.fi -.RE -.P -Create a color OAKT stream from a Postscript document: - -.RS -.nf -foo2oak-wrapper -c testpage.ps > testpage.oak -.fi -.RE - -.SH FILES -.BR /usr/bin/foo2oak-wrapper -.SH SEE ALSO -.BR foo2oak (1), -.BR oak (1) -.SH "AUTHOR" -Rick Richardson -.br -http://foo2oak.rkkda.com/ -'\" -'\" -'\" -.em pdf_outline diff --git a/foo2oak-wrapper.1in b/foo2oak-wrapper.1in index 435dae3..bbf1d23 100644 --- a/foo2oak-wrapper.1in +++ b/foo2oak-wrapper.1in @@ -49,7 +49,7 @@ l l l l n n. _ Media HP CLJ 1500 KM-1635 - -z0 -z1 + \-z0 \-z1 _ autoselect 0 0 plain 1 1 @@ -110,9 +110,9 @@ Print in N-up. Requires the \fBpsutils\fP package. Orientation used for N-up. .TS l l l. -Portrait -op (normal) -Landscape -ol (rotated 90 degrees anticlockwise) -Seascape -os (rotated 90 degrees clockwise) +Portrait \-op (normal) +Landscape \-ol (rotated 90 degrees anticlockwise) +Seascape \-os (rotated 90 degrees clockwise) .TE .SS Printer Tweaking Options These are the options used to customize the operation of \fBfoo2oak\fP @@ -131,13 +131,13 @@ The defaults should work on the 2200DL and 2300DL, and have not been tested on any other printers. .TP .BI \-L\0 mask -Send the logical clipping values from -u/-l in the OAKT stream. +Send the logical clipping values from \-u/-l in the OAKT stream. \fBfoo2oak-wrapper\fP always runs Ghostscript with the ideal page dimensions, so that the scale of the image is correct, regardless whether or not the printer has unprintable regions. This option is used to move the position of the clipped image back to where it belongs on the page. The default is to send -the amount which was clipped by -u and -l, and should be +the amount which was clipped by \-u and \-l, and should be good in most cases. .TS l l. @@ -155,7 +155,7 @@ These are the options used to control the quality of color output. Color correction is currently a WORK IN PROGRESS. .TP .BI \-g\0 gsopts -Additional options to pass to Ghostscript, such as -g\(lq-dDITHERPPI=nnn\(rq, +Additional options to pass to Ghostscript, such as \-g\(lq-dDITHERPPI=nnn\(rq, etc. This option may appear more than once. .TP .BI \-G\0 profile.icm @@ -200,7 +200,7 @@ examine it, and then print it using a RAW print queue: .nf foo2oak-wrapper testpage.ps > testpage.oak oakdecode < testpage.oak -lpr -P raw testpage.oak +lpr \-P raw testpage.oak .fi .RE .P @@ -208,7 +208,7 @@ Create a color OAKT stream from a Postscript document: .RS .nf -foo2oak-wrapper -c testpage.ps > testpage.oak +foo2oak-wrapper \-c testpage.ps > testpage.oak .fi .RE diff --git a/foo2oak-wrapper.in b/foo2oak-wrapper.in index 033eade..bf5ec1f 100755 --- a/foo2oak-wrapper.in +++ b/foo2oak-wrapper.in @@ -13,8 +13,8 @@ #* 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. +#* along with this program; if not, see +#* . #* #* Authors: Rick Richardson diff --git a/foo2oak.1 b/foo2oak.1 deleted file mode 100644 index af08624..0000000 --- a/foo2oak.1 +++ /dev/null @@ -1,376 +0,0 @@ -'\" t -'\" -'\" DO NOT EDIT! This file is generated from foo2oak.1in -'\" -'\" t -.TH foo2oak 1 "Sun May 26 18:25:20 2024" "foo2oak 0.0" -'\" -'\" -'\"========================================================================== -'\" STRINGS and MACROS -'\"========================================================================== -'\" -'\" Define strings for special characters that nroff doesn't have -'\" -'\" N.B. using .if cua to test for special characters did not work. -'\" -.if !'\*[.T]'ps' .ds ua up -.if '\*[.T]'ps' .ds ua \(ua -.if !'\*[.T]'ps' .ds da down -.if '\*[.T]'ps' .ds da \(da -.if !'\*[.T]'ps' .ds <- left -.if '\*[.T]'ps' .ds <- \(<- -.if !'\*[.T]'ps' .ds -> right -.if '\*[.T]'ps' .ds -> \(-> -'\" -'\" bx - box a Courier string for making keycaps -'\" -'\" N.B. this mess is to make the line drawing come out only -'\" if we are really generating postscript -'\" -.de bx -.ie !'\*[.T]'ps' \{\ -. RB [ \\$1 ]\\$2 -.\} -.el \{\ -. ie !r ps4html \{\ -'\" \(br\|\s-1\f(CB\\$1\fP\s+1\|\(br\l'|0\(rn'\l'|0\(ul' -. ft CW -. nr par*bxw \w'\\$1'+.4m -\Z'\v'.25m'\D'l 0 -1m'\D'l \\n[par*bxw]u 0'\D'l 0 1m'\D'l -\\n[par*bxw]u 0''\ -\Z'\h'.2m'\s-1\\$1\s+1'\ -\h'\\n[par*bxw]u'\\$2 -. ft P -. \} -. el \{\ -. RB [ \\$1 ]\\$2 -. \} -.\} -.. -'\" -'\" strings to set current color (null with old groff) -'\" -.if mred .ds red \m[red] -.if mgreen .ds green \m[green] -.if mblue .ds blue \m[blue] -.if mblack .ds black \m[black] -.if mblack .ds mP \mP -'\" -'\" fix for grotty + xterm. We call for orange, grotty outputs yellow, -'\" but xterm displays yellow as orange. The cycle is complete. -'\" -.if n .defcolor orange rgb #ffff00 -'\" -'\" color - set the current color (ignores request with old groff) -'\" -.de color -.if mred \m[\\$1]\c -.. -'\" -'\" colorword - colorize a word (ignored by old groff) -'\" -.de colorword -.ie m\\$1 \m[\\$1]\\$2\mP\c -.el \\$2\c -.. -'\" -'\" colbox - colorize a word in a filled box -'\" -.de colbox -.ie mred \M[\\$2]\ -\v'+.167v'\ -\D'P 0 -0.9v \w'\\$3'u 0 0 +0.9v -\w'\\$3'u 0'\ -\v'-.167v'\ -\m[\\$1]\\$3\mP\MP -.el \\$3\c -.. -'\" -'\" Macros for doing pdfmarks -'\" -.de specialps -.if '\*[.T]'ps' \\k_\X'ps: \\$*'\h'|\\n_u'\c -.. -'\" -'\" pdfmark PDFMARKCODE -'\" -.ds pdfmarks -.if d pdfmarks \{\ -.de pdfmark -. specialps exec [\\$1 pdfmark -.. -'\" -'\" pdfdest LINKNAME -'\" -.de pdfdest -.pdfmark "/Dest /\\$1 /View [/XYZ -5 PL null] /DEST" -.. -'\" -'\" pdfbookmark COUNT LINKNAME STRING -'\" -.de pdfbookmark -. pdfmark "/View [/XYZ 44 730 1.0] /Count \\$1 /Dest /\\$2 /Title (\\$3) /OUT" -.. -'\" -'\" Define the SH and SS macros to save pdfmark information -'\" in "arrays" of numbers and strings. -'\" -.if !r rr_n \{\ -.nr rr_n 0 1 -.am SH -. nr rr_levels!\\n+[rr_n] 2 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.am SS -. nr rr_levels!\\n+[rr_n] 3 -. ds rr_labels!\\n[rr_n] \\$* -. pdfdest Link\\n[rr_n] -.. -.\} -'\" -'\" Called at the end of the document to generate the pdfmark outline -'\" -.de pdf_outline -.nr rr_levels!\\n+[rr_n] 1 -.nr rr_i 0 1 -.while \\n+[rr_i]<\\n[rr_n] \{\ -. nr rr_ip1 \\n[rr_i]+1 -. nr rr_count 0 -. if \\n[rr_levels!\\n[rr_ip1]]>\\n[rr_levels!\\n[rr_i]] \{\ -. nr rr_j \\n[rr_i] 1 -. while \\n+[rr_j]<\\n[rr_n] \{\ -. if \\n[rr_levels!\\n[rr_j]]<=\\n[rr_levels!\\n[rr_i]] \{\ -. break -. \} -. if \\n[rr_levels!\\n[rr_j]]==(\\n[rr_levels!\\n[rr_i]]+1) \{\ -. nr rr_count \\n[rr_count]+1 -. \} -. \} -. \} -. ds hhh \\*[rr_labels!\\n[rr_i]] -. pdfbookmark -\\n[rr_count] Link\\n[rr_i] "\\*[hhh]" -.\} -.. -'\" -'\" Some postscript to make pdfmarks harmless on old interpreters... -'\" -.specialps "def /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse" -'\" -'\" Force display of Bookmarks in Acrobat when document is viewed. -'\" -.pdfmark "[/PageMode /UseOutlines /Page 1 /View [/XYZ null null null] /DOCVIEW" -'\" -'\" Output the document info in pdfmarks -'\" -.pdfmark "\ - /Title (\*[an-title](\*[an-section])) \ - /Subject (\*[an-title] Manual Page) \ - /Author (Rick Richardson) \ - /Keywords (printing) \ - /Creator (groff \n(.x.\n(.y.\n(.Y -man) \ - /CreationDate (\*[an-extra1]) \ - /ModDate (\*[an-extra1]) \ - /DOCINFO" -\} -'\" -'\" The manual page name is only 1st level mark -'\" -.nr rr_levels!\n+[rr_n] 1 -.ds rr_labels!\n[rr_n] \*[an-title](\*[an-section]) -.pdfdest Link\n[rr_n] -'\" -'\"========================================================================== -'\" MANUAL PAGE SOURCE -'\"========================================================================== -.SH NAME -foo2oak \- Convert Ghostscript pbmraw, pgmraw or bitcmyk format into an -OAKT printer stream -.SH SYNOPSIS -.B foo2oak -.RI [ options "] <" pbmraw-file " >" OAKT-file -.sp 1 -.B foo2oak -.RI [ options "] <" pgmraw-file " >" OAKT-file -.sp 1 -.B foo2oak -.RI [ options "] <" bitcmyk-file " >" OAKT-file -.SH DESCRIPTION -.B foo2oak -converts Ghostscript pbmraw or bitcmyk output formats to monochrome -or color OAKT streams, -for driving the HP Color LaserJet 1500 laser printer, -Kyocera KM-1636/KM-2035 copiers, -and other OAKT-based printers. - -.SH COMMAND LINE OPTIONS -.SS Normal Options -These are the options used to select the parameters of a -print job that are usually controlled on a per job basis. -.TP -.BI \-c -Force color mode if autodetect doesn't work. -.TP -.BI \-d\0 duplex -Duplex code to send to printer [1]. -.TS -| n l | n l | n l . -1 off 2 long edge 3 short edge -.TE -.TP -.BI \-g\0 xpix x ypix -Set page dimensions in pixels [10200x6600]. -.TP -.BI \-m\0 media -Media code to send to printer [1]. -.TS -l l -l n. -_ -Media Code -_ -autoselect 0 -plain 1 -preprinted 2 -letterhead 3 -transparency 4 -prepunched 5 -labels 6 -bond 7 -recycled 8 -color 9 -cardstock 10 -envelope 11 -light 13 -tough 14 -vellum 15 -rough 16 -thick 19 -highqual 20 -.TE -.TP -.BI \-p\0 paper -Paper code to send to printer [1]. -.TS -box; -| n l | n l. -1 letter 3 ledger -5 legal 6 statement -7 executive 8 A3 -9 A4 11 A5 -12 B4 13 B5jis -14 folio 19 env9 -20 env10 27 envDL -28 envC5 30 envC4 -37 envMonarch 257 A6 -258 B6 259 B5iso -260 env6 -.TE -.TP -.BI \-n\0 copies -Number of copies [1]. -.TP -.BI \-r\0 xres x yres -Set device resolution in pixels/inch [600x600]. -.TP -.BI \-s\0 source -Source (InputSlot) code to send to printer [7]. -.TS -| n l | n l. -1 tray1 2 tray2 -4 manual 7 auto -.TE -.TP -.BI \-J\0 filename -Filename string to send to printer. -.TP -.BI \-U\0 username -Username string to send to printer. -.SS Printer Tweaking Options -These are the options used to customize the operation of \fBfoo2oak\fP -for a particular printer. -.TP -.BI \-u\0 xoff x yoff -Set the offset of the start of the printable region from the -upper left corner, in pixels [0x0]. -.TP -.BI \-l\0 xoff x yoff -Set the offset of the end of the printable region from the -lower right corner, in pixels [0x0]. -.TP -.BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the OAKT stream [3]. -.TS -l l. -0 don't send any logical clipping amounts -1 only send Y clipping amount -2 only send X clipping amount -3 send both X and Y clipping amounts -.TE -.TP -.BI \-A -AllIsBlack: convert C=1,M=1,Y=1 to just K=1. Works with bitcmyk input only. -.TP -.BI \-B -BlackClears: K=1 forces C,M,Y to 0. Works with bitcmyk input only. -.TP -.BI \-M\0 mirror -Mirror bytes. Mirror is 0 for Kyocera KM-1635/KM-2035 and 1 for the -HP Color LaserJet 1500. The default is 1. -.TP -.BI \-z\0 model -Model is 0 for the HP Color LaserJet 1500, -and 1 for the Kyocera KM-1635/KM-2035 copiers. -The default is 0. -.SS Debugging Options -These options are used for debugging \fBfoo2oak\fP. -.TP -.BI \-S\0 plane -Output just a single color plane from a color print and print it -on the black plane. The default is to output all color planes. -.TS -l l. -1 Cyan -2 Magenta -3 Yellow -4 Black -.TE -.TP -.BI \-D\0 level -Set Debug level [0]. - -.SH EXAMPLES -Create a black and white OAKT stream: - -.RS -.nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2oak -r600x600 -g5100x6600 -p1 >testpage.oak -.fi -.RE -.P -Create a color OAKT stream: - -.RS -.nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2oak -r600x600 -g5100x6600 -p1 >testpage.oak -.fi -.RE - -.SH FILES -.BR /usr/bin/foo2oak -.SH SEE ALSO -.BR foo2oak-wrapper (1), -.BR oakdecode (1) -.SH "AUTHOR" -Rick Richardson -.br -http://foo2oak.rkkda.com/ -'\" -'\" -'\" -.em pdf_outline diff --git a/foo2oak.1in b/foo2oak.1in index 1a1c863..94b3ed6 100644 --- a/foo2oak.1in +++ b/foo2oak.1in @@ -122,7 +122,7 @@ Set the offset of the end of the printable region from the lower right corner, in pixels [0x0]. .TP .BI \-L\0 mask -Send logical clipping amounts implied by -u/-l in the OAKT stream [3]. +Send logical clipping amounts implied by \-u/-l in the OAKT stream [3]. .TS l l. 0 don't send any logical clipping amounts @@ -167,10 +167,10 @@ Create a black and white OAKT stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -r600x600 -sDEVICE=pbmraw \ - -sOutputFile=- - < testpage.ps \ -| foo2oak -r600x600 -g5100x6600 -p1 >testpage.oak +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-r600x600 \-sDEVICE=pbmraw \ + \-sOutputFile=- \- < testpage.ps \ +| foo2oak \-r600x600 \-g5100x6600 \-p1 >testpage.oak .fi .RE .P @@ -178,10 +178,10 @@ Create a color OAKT stream: .RS .nf -gs -q -dBATCH -dSAFER -dQUIET -dNOPAUSE \ - -sPAPERSIZE=letter -g5100x6600 -r600x600 -sDEVICE=bitcmyk \ - -sOutputFile=- - < testpage.ps \ -| foo2oak -r600x600 -g5100x6600 -p1 >testpage.oak +gs \-q \-dBATCH \-dSAFER \-dQUIET \-dNOPAUSE \ + \-sPAPERSIZE=letter \-g5100x6600 \-r600x600 \-sDEVICE=bitcmyk \ + \-sOutputFile=- \- < testpage.ps \ +| foo2oak \-r600x600 \-g5100x6600 \-p1 >testpage.oak .fi .RE diff --git a/foo2oak.c b/foo2oak.c index 0a40d1e..65acdfc 100644 --- a/foo2oak.c +++ b/foo2oak.c @@ -36,8 +36,8 @@ 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. +along with this program; if not, see +. If you want to use this program under different license conditions, then contact the author for an arrangement. @@ -65,7 +65,7 @@ Status: 0x18 * TODO: Handle 2 bit mono and color output */ -static char Version[] = "$Id: foo2oak.c,v 1.69 2011/11/08 20:25:27 rick Exp $"; +static char Version[] = "$Id: foo2oak.c,v 1.70 2018/05/04 18:16:50 rick Exp $"; #include #include @@ -487,7 +487,8 @@ start_doc(FILE *fp) if (Model == MODEL_KM1635) { memset(&recdriver, 0, sizeof(recdriver)); - strncpy(recdriver.string, Version+5, 36); + strncpy(recdriver.string, Version+5, sizeof(recdriver.string) - 1); + recdriver.string[sizeof(recdriver.string) - 1] = 0; oak_record(fp, OAK_TYPE_DRIVER, &recdriver, sizeof(recdriver)); } memset(&recother, 0, sizeof(recother)); diff --git a/foo2qpdl b/foo2qpdl deleted file mode 100755 index f2ee3ebf23fee5f7528f2a63a2bae2ec293134f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95648 zcmeGFdwf*YxxkIjBr`CP%Z^IgsHmwOY9gRSL5UL0=mhrQq@toyg#rywP*j8juu@5w z8OZK-lv=2^$F^!OhxTaIRuQPh47Y$644{Cb7*Jskk*k^n6!Lzbwf9VhRN8ZXpWo;G zxWb%`G`s}1Do2S&vmzS@3_O`*U)HBt)Jf+^Letf6fIjN^B*G@}4 zue=t>FMbNt@APxiQahb`X4X^vH96%wJ%g9n@YFN2p3KdN-qJJAekVT{UaG*Zn&<6j zs-8@j)LY`zTjJD9JrCKuJr^1uCYmfdxe)8DDq;dy7=si!l&u1ls) z`O)PAFPS=_|I{h>RL|}|d+_D`FCTdEjC(J(7f$dh;GfXcuGV&wsIa88OU&Nb~k@=|c zKIN*Z?VTksVcCoMS9tD2y*EwVc=x1R#^;tCF?%2QPNjC~n$|P^{&edZWPk0?HlSaZ zx%m`u!Sn0NUj|}d2QNQGdCw`zzYe^BI-P$80rNPXYhQDd07yfKNOH{Mu8DYs@L&x1FM$7Rncp*ZJoVfUl$T|2YNxv{Uq3 zPx;eb=eU}FNCAFQa$iyxD9Fjbz91>(4|OV^PX&P&j6J!X+en^))G8QYx3kr0?t4!8 zHm4ntZSwO6{z*HoPVKnHj;)+Me(a@%Kz3jnu9jJELkmCGH+Sxn;}GNWqZ z^pO?UO}+P?i6h7Vh=GqC`{TRsy~kOhv3Aj~Eht(~{>#Ry$wJ$CopcxHY3IssH~+dS zXsS#{p520!@X=BVF6op`byK$*S`~dJKW9#v(nGjpt^-^2^IxK7ySfY~-Am