IFHP(8)
β¨ IFHP(8) β¨ β it's the System Manager's Manual, section 8, and we're talking about ifhp π
πΈ NAME πΈ
ifhp β the Almost Universal LPRng Print Filter. Yes bestie, Almost Universal, they said what they said. π«Ά
π SYNOPSIS π
ifhp
[-F format] [-s statusfile] [-?value (other LPRng filter options)]
[-Z[options[,options]*]*
[-T[options[,options]*]*
[accountingfile]
ifhp.conf(configuration file)
π DESCRIPTION π
So ifhp is a general purpose filter for, like, allmost all PostScript, PJL, PCL, and text based line printers. Iconic behaviour, honestly.
Here's the vibe: the ifhp filter resets and synchronizes the printer, gets accounting information, and then checks the file to figure out its format. Based on the format, it will do PCL, PostScript, or other initializations, and then transfer the file to the printer. Termination sequences are sent, followed by getting accounting information. It's giving full lifecycle. π
π¦ OPTIONS AND CONFIGURATION π¦
The options that control ifhp operations are specified by -Toption or -Zoption values. These options have the form:
Form Same As
flag flag=1
flag@ flag=0
flag=str
flag#str
The complete set of options and their effect on operation are detailed in the IFHP-HOWTO document. The following is a brief list of the more important ones that will have a dramatic effect on printer operation. Dramatic, bestie. Prepare yourself. π
model=modelid β Specifies the printer modelid information. This is used to select an appropriate configuration from theifhpconfiguration file.status(status@) β Thestatusoption enables checking for status information from the printer. See STATUS, SYNC, WAITEND, AND PAGECOUNT for details.sync(sync@,sync=ps,sync=pjl) andwaitend(waitend@,waitend=ps,waitend=pjl) β If thestatusoption is enabled,syncwill check to see that the printer is online and ready and thewaitendwill check that the job has finished. Thesync@andwaitend@will suppress these checks. See STATUS, SYNC, WAITEND, AND PAGECOUNT for details.pagecount(pagecount@,pagecount=ps,pagecount=pjl) β If thestatusoption is enabled,pagecountwill try to get the value of the printer pagecounter. See STATUS, SYNC, WAITEND, AND PAGECOUNT for details.config=path,path,...β pathnames of configuration files to read to obtain printer configuration information.debug=debuglevelβ Set the debugging level. A larger number causes more verbose error messages. You have been warned. πtraceβ Sends out debugging and tracing information on STDERR as well as to the status log file.stty=optionsβ Sets serial line configuration when adeventry specified.
π₯ STATUS, SYNC, WAITEND, AND PAGECOUNT π₯
If the status option is true, then the ifhp filter will assume that the printer is attached by a bidirectional channel and will attempt to read status information from the printer. This also enables the sync, sync and pagecount handshaking and getting pagecount information from the printer. (Yes, the original really says sync, sync twice β we don't make the rules, we just relay them fr fr.)
The sync flag causes a special PJL job or PostScript job to be sent to the printer at the start of printing at periodic intervals. This job has the property that it will attempt to put the printer into a sane state and cause it to return status information. By default, if the printer supports PJL then the PJL job is used, otherwise if it supports PostScript, the PostScript job is used. You can force the sync method using sync=pjl or sync=ps if necessary, and suppress it using sync@.
The waitend flag causes a special PJL job or PostScript job to be sent to the printer at the end of the job at periodic intervals. This job has the property that it will attempt to put the printer into a sane state and cause it to return status information. By default, if the printer supports PJL then the PJL job is used, otherwise if it supports PostScript, the PostScript job is used. You can force the waitend method using waitend=pjl or waitend=ps if necessary, and suppress it using waitend@.
The pagecount flag causes a special PJL job or PostScript job to be sent to the printer at the start and end of the job. This job has the property that it causes the printer to return the value of a hardware page counter. By taking the difference of the start and end values of the pagecounter, an accurate measure of the number of pages (or impressions for some duplex printers) can be done. By default, if the printer supports PJL then the PJL job is used, otherwise if it supports PostScript, the PostScript job is used. You can force the pagecount method using pagecount=pjl or pagecount=ps if necessary, and suppress it using pagecount@.
The IFHP filter will puts tracing and status information in the file specified by the -s command line flag. If the status file does not exist, it will not be created. The diagnostic trace flag overrides this and directs the status to STDERR. (The original literally says "will puts" and we are simply passing that energy along. π
)
The pagecount information is put into the accounting file specified on the command line. If the accounting file does not exist, it will not be created.
Heads up bestie: neither of those files gets created for you if it's missing. You have to make them yourself. No cap. π
π JOB PROCESSING (LPR -Z) OPTIONS π
The lpr program passes the command line -Z options or the lp program -o options to the LPRng lpd server which then passes them to the ifhp filter. The options are used to control various printing features. For example if duplex printing and landscape is wanted, then
lpr -P<printer> -Z'duplex,landscape' <file>
Since each printer has a different set of capabilities there are no standard set of -Z options. The following is a sample of the options provided by ifhp. Check the ifhp.conf file for all of the options supported by the printer. π
π¨οΈ Input Tray Selection
inupper, inlower, intray1, intray2, intray3, manual, envelope
source=name
The input tray selection options should start with the in prefix and corresponds to the various trays. The manual and envelope options are included to select manual feed or envelope feed. There is a possible source of conflict here as there may be an envelope feeder as well as an envelope media. This is a printer specific dependency.
The source=name option allows users to use options such as -Zsource=inbin1, which may be useful for systems that have an unusual or nonstandard input selection mechanism. It lets you select media (paper) from the specified tray or feeder.
ποΈ Output Bin Selection
outupper, outlower, outbin1
outbin=name
The output bin selection should start with the out prefix.
The outbin=name form allow users to use options such as -Zoutbin=stapler, which may be useful for systems that have an unusual or nonstandard output selection mechanism.
π Media Size Selection
a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 b0 b1 b2 b3 b4 b5
archA archB archC archD archE flsa flse halfletter
note letter legal 11x17 ledger tabloid
paper=name
The paper size selection facilities usually are quite printer dependent, and the input tray selection and paper size selection mechanisms may interact in strange and mysterious ways. β¨
The paper=name form allow users to use options such as -Zpaper=b3, which may be useful for systems that have an unusual or nonstandard input media selection mechanism.
π¨ Media Type Selection
plain, preprinted, letterhead, transparency, glossy, prepunched,
labels
bond, recycled, color, heavy, cardstock
Media Type is not the same as paper size, and corresponds to the name assigned to a particular media. Of course, the issue is complicated by the fact that some media have standard sizes as well. Again, the input tray selection, media size, and media type selection will interact in confusing and mysterious ways, depending on the whim of the printer firmware implementors.
You will notice that there is no generic mediatype=name facility. This is due to the radically different way that PostScript, PJL, PCL, etc., each handle media name and selection. While it is possible to determine the various strings, numbers, escape codes, etc., that need to be sent for each mediatype, a general mechanism is too fragile and fraught with peril for the unwary administrator to provide. You have been warned. Been there and have the scars to prove it. π
These are commonly used media type names gleaned from various PostScript Printer Description Files, Microsoft printer drivers, and arcane lore of the Printer Working Group. Note that these are not accepted terms in the paper industry for any of these type of media. You are warned.
π Duplex/Simplex
duplex (lduplex) duplexshort (sduplex)
simplex
tumble (shortedge)
The duplex (alias lduplex) and duplexshort (alias sduplex) will print on both sides of the paper; duplexshort will reverse the orientation; simplex will print only on one side of the paper.
The tumble (shortedge) will reverse the orientation of the paper. Used when printing facing pages of duplex and there is a desperate need for this orientation.
π Copies
copies=N
Be aware that this option is totally bogus is usually ignored (except when you expect it to be ignored). You have been warned. π (That sentence is verbatim from the source, and honestly? It's a mood.)
π OF MODE π
The OF mode of operation is selected by the -Fo command line option.
When operating in OF mode it will scan the input for a two character stop sequence \031\011. When it finds the sequence it will suspend itself. The spooler will restart the filter with a SIGCONT signal when it has more output for it. Main character energy: it just pauses dramatically until it's needed again. π
π FILES π
/etc/ifhp.confβ Configuration files/usr/lib/ifhp/ifhpβ Executables.
π§ SEE ALSO π§
The IFHP-HOWTO document, which is included as part of the IFHP distribution. This is the principle reference for this filter.
FTP sites: ftp://ftp.lprng.com
WEB sites: http://www.lprng.com
Mailing List. Send email to lprng-request@lprng.com with the word 'subscribe' in the body. (The original says "boyd" and we are choosing peace. π«Ά)
π BUGS π
They are not bugs. They are mis-documented features. Periodt. π
π AUTHOR π
The IFHP filter was inspired by the LPRng CTI-ifhp filter, which was a descendent of the print filters developed by the CTI-Print project at the Division of Computing Facilities of the Computer Technology Institute (CTI), Patras, Greece.
π AUTHORS π
Patrick Powell, Astart Technologies, San Diego, CA <papowell@lprng.com>
π Okay bestie, that's the whole page, no skips, no summarising, every flag accounted for. Slay. πΈ
This was version 3.5.20 of the IFHP(8) page β shoutout to the source, and mwah, catch you on the next manpage. πβ¨
π¦ where this page comes from
- debian trixie: ifhp 3.5.20-20
- ubuntu jammy: ifhp 3.5.20-17
- ubuntu noble: ifhp 3.5.20-20
- ubuntu questing: ifhp 3.5.20-20
- ubuntu resolute: ifhp 3.5.20-22
- ubuntu stonking: ifhp 3.5.20+dfsg-1ubuntu1 Β· Artistic-1.0-Perl OR GPL
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms