123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759 |
- *print.txt* For Vim version 9.0. Last change: 2022 Oct 01
- VIM REFERENCE MANUAL by Bram Moolenaar
- Printing *printing*
- 1. Introduction |print-intro|
- 2. Print options |print-options|
- 3. PostScript Printing |postscript-printing|
- 4. PostScript Printing Encoding |postscript-print-encoding|
- 5. PostScript CJK Printing |postscript-cjk-printing|
- 6. PostScript Printing Troubleshooting |postscript-print-trouble|
- 7. PostScript Utilities |postscript-print-util|
- 8. Formfeed Characters |printing-formfeed|
- {only available when compiled with the |+printer| feature}
- ==============================================================================
- 1. Introduction *print-intro*
- On MS-Windows Vim can print your text on any installed printer. On other
- systems a PostScript file is produced. This can be directly sent to a
- PostScript printer. For other printers a program like ghostscript needs to be
- used.
- Note: If you have problems printing with |:hardcopy|, an alternative is to use
- |:TOhtml| and print the resulting html file from a browser.
- *:ha* *:hardcopy* *E237* *E238* *E324*
- :[range]ha[rdcopy][!] [arguments]
- Send [range] lines (default whole file) to the
- printer.
- On MS-Windows a dialog is displayed to allow selection
- of printer, paper size etc. To skip the dialog, use
- the [!]. In this case the printer defined by
- 'printdevice' is used, or, if 'printdevice' is empty,
- the system default printer.
- For systems other than MS-Windows, PostScript is
- written in a temp file and 'printexpr' is used to
- actually print it. Then [arguments] can be used by
- 'printexpr' through |v:cmdarg|. Otherwise [arguments]
- is ignored. 'printoptions' can be used to specify
- paper size, duplex, etc.
- Note: If you want PDF, there are tools such as
- "ps2pdf" that can convert the PostScript to PDF.
- :[range]ha[rdcopy][!] >{filename}
- As above, but write the resulting PostScript in file
- {filename}.
- Things like "%" are expanded |cmdline-special|
- Careful: An existing file is silently overwritten.
- {only available when compiled with the |+postscript|
- feature}
- On MS-Windows use the "print to file" feature of the
- printer driver.
- Progress is displayed during printing as a page number and a percentage. To
- abort printing use the interrupt key (CTRL-C or, on MS-systems, CTRL-Break).
- Printer output is controlled by the 'printfont' and 'printoptions' options.
- 'printheader' specifies the format of a page header.
- The printed file is always limited to the selected margins, irrespective of
- the current window's 'wrap' or 'linebreak' settings. The "wrap" item in
- 'printoptions' can be used to switch wrapping off.
- The current highlighting colors are used in the printout, with the following
- considerations:
- 1) The normal background is always rendered as white (i.e. blank paper).
- 2) White text or the default foreground is rendered as black, so that it shows
- up!
- 3) If 'background' is "dark", then the colours are darkened to compensate for
- the fact that otherwise they would be too bright to show up clearly on
- white paper.
- ==============================================================================
- 2. Print options *print-options*
- Here are the details for the options that change the way printing is done.
- For generic info about setting options see |options.txt|.
- *pdev-option*
- 'printdevice' 'pdev' string (default empty)
- global
- This defines the name of the printer to be used when the |:hardcopy| command
- is issued with a bang (!) to skip the printer selection dialog. On Win32, it
- should be the printer name exactly as it appears in the standard printer
- dialog.
- If the option is empty, then vim will use the system default printer for
- ":hardcopy!"
- *penc-option* *E620*
- 'printencoding' 'penc' String (default empty, except for:
- MS-Windows: cp1252,
- Macintosh: mac-roman,
- VMS: dec-mcs,
- HPUX: hp-roman8,
- EBCDIC: ebcdic-uk)
- global
- Sets the character encoding used when printing. This option tells Vim which
- print character encoding file from the "print" directory in 'runtimepath' to
- use.
- This option will accept any value from |encoding-names|. Any recognized names
- are converted to Vim standard names - see 'encoding' for more details. Names
- not recognized by Vim will just be converted to lower case and underscores
- replaced with '-' signs.
- If 'printencoding' is empty or Vim cannot find the file then it will use
- 'encoding' (if it is set an 8-bit encoding) to find the print character
- encoding file. If Vim is unable to find a character encoding file then it
- will use the "latin1" print character encoding file.
- When 'encoding' is set to a multibyte encoding, Vim will try to convert
- characters to the printing encoding for printing (if 'printencoding' is empty
- then the conversion will be to latin1). Conversion to a printing encoding
- other than latin1 will require Vim to be compiled with the |+iconv| feature.
- If no conversion is possible then printing will fail. Any characters that
- cannot be converted will be replaced with upside down question marks.
- Four print character encoding files are provided to support default Mac, VMS,
- HPUX, and EBCDIC character encodings and are used by default on these
- platforms. Code page 1252 print character encoding is used by default on
- MS-Windows platform.
- *pexpr-option*
- 'printexpr' 'pexpr' String (default: see below)
- global
- Expression that is evaluated to print the PostScript produced with
- |:hardcopy|.
- The file name to be printed is in |v:fname_in|.
- The arguments to the ":hardcopy" command are in |v:cmdarg|.
- The expression must take care of deleting the file after printing it.
- When there is an error, the expression must return a non-zero number.
- If there is no error, return zero or an empty string.
- The default for non MS-Windows or VMS systems is to simply use "lpr" to print
- the file: >
- system('lpr' .. (&printdevice == '' ? '' : ' -P' .. &printdevice)
- .. ' ' .. v:fname_in) .. delete(v:fname_in) + v:shell_error
- On MS-Windows machines the default is to copy the file to the currently
- specified printdevice: >
- system('copy' .. ' ' .. v:fname_in .. (&printdevice == ''
- ? ' LPT1:' : (' \"' .. &printdevice .. '\"')))
- .. delete(v:fname_in)
- On VMS machines the default is to send the file to either the default or
- currently specified printdevice: >
- system('print' .. (&printdevice == '' ? '' : ' /queue=' ..
- &printdevice) .. ' ' .. v:fname_in) .. delete(v:fname_in)
- If you change this option, using a function is an easy way to avoid having to
- escape all the spaces. Example: >
- :set printexpr=PrintFile()
- :function PrintFile()
- : call system("ghostview " .. v:fname_in)
- : call delete(v:fname_in)
- : return v:shell_error
- :endfunc
- It is more efficient if the option is set to just a function call,
- see |expr-option-function|.
- Be aware that some print programs return control before they have read the
- file. If you delete the file too soon it will not be printed. These programs
- usually offer an option to have them remove the file when printing is done.
- *E365*
- If evaluating the expression fails or it results in a non-zero number, you get
- an error message. In that case Vim will delete the file. In the default
- value for non-MS-Windows a trick is used: Adding "v:shell_error" will result
- in a non-zero number when the system() call fails.
- If the expression starts with s: or |<SID>|, then it is replaced with the
- script ID (|local-function|). Example: >
- set printexpr=s:MyPrintFile()
- set printexpr=<SID>SomePrintFile()
- Otherwise, the expression is evaluated in the context of the script where the
- option was set, thus script-local items are available.
- This option cannot be set from a |modeline| or in the |sandbox|, for security
- reasons.
- *pfn-option* *E613*
- 'printfont' 'pfn' string (default "courier")
- global
- This is the name of the font that will be used for the |:hardcopy| command's
- output. It has the same format as the 'guifont' option, except that only one
- font may be named, and the special "guifont=*" syntax is not available.
- In the Win32 GUI version this specifies a font name with its extra attributes,
- as with the 'guifont' option.
- For other systems, only ":h11" is recognized, where "11" is the point size of
- the font. When omitted, the point size is 10.
- *pheader-option*
- 'printheader' 'pheader' string (default "%<%f%h%m%=Page %N")
- global
- This defines the format of the header produced in |:hardcopy| output. The
- option is defined in the same way as the 'statusline' option. If Vim has not
- been compiled with the |+statusline| feature, this option has no effect and a
- simple default header is used, which shows the page number. The same simple
- header is used when this option is empty.
- *pmbcs-option*
- 'printmbcharset' 'pmbcs' string (default "")
- global
- Sets the CJK character set to be used when generating CJK output from
- |:hardcopy|. The following predefined values are currently recognised by Vim:
- Value Description ~
- Chinese GB_2312-80
- (Simplified) GBT_12345-90
- MAC Apple Mac Simplified Chinese
- GBT-90_MAC GB/T 12345-90 Apple Mac Simplified
- Chinese
- GBK GBK (GB 13000.1-93)
- ISO10646 ISO 10646-1:1993
- Chinese CNS_1993 CNS 11643-1993, Planes 1 & 2
- (Traditional) BIG5
- ETEN Big5 with ETen extensions
- ISO10646 ISO 10646-1:1993
- Japanese JIS_C_1978
- JIS_X_1983
- JIS_X_1990
- MSWINDOWS Win3.1/95J (JIS X 1997 + NEC +
- IBM extensions)
- KANJITALK6 Apple Mac KanjiTalk V6.x
- KANJITALK7 Apple Mac KanjiTalk V7.x
- Korean KS_X_1992
- MAC Apple Macintosh Korean
- MSWINDOWS KS X 1992 with MS extensions
- ISO10646 ISO 10646-1:1993
- Only certain combinations of the above values and 'printencoding' are
- possible. The following tables show the valid combinations:
- euc-cn gbk ucs-2 utf-8 ~
- Chinese GB_2312-80 x
- (Simplified) GBT_12345-90 x
- MAC x
- GBT-90_MAC x
- GBK x
- ISO10646 x x
- euc-tw big5 ucs-2 utf-8 ~
- Chinese CNS_1993 x
- (Traditional) BIG5 x
- ETEN x
- ISO10646 x x
- euc-jp sjis ucs-2 utf-8 ~
- Japanese JIS_C_1978 x x
- JIS_X_1983 x x
- JIS_X_1990 x x x
- MSWINDOWS x
- KANJITALK6 x
- KANJITALK7 x
- euc-kr cp949 ucs-2 utf-8 ~
- Korean KS_X_1992 x
- MAC x
- MSWINDOWS x
- ISO10646 x x
- To set up the correct encoding and character set for printing some
- Japanese text you would do the following; >
- :set printencoding=euc-jp
- :set printmbcharset=JIS_X_1983
- If 'printmbcharset' is not one of the above values then it is assumed to
- specify a custom multibyte character set and no check will be made that it is
- compatible with the value for 'printencoding'. Vim will look for a file
- defining the character set in the "print" directory in 'runtimepath'.
- *pmbfn-option*
- 'printmbfont' 'pmbfn' string (default "")
- global
- This is a comma-separated list of fields for font names to be used when
- generating CJK output from |:hardcopy|. Each font name has to be preceded
- with a letter indicating the style the font is to be used for as follows:
- r:{font-name} font to use for normal characters
- b:{font-name} font to use for bold characters
- i:{font-name} font to use for italic characters
- o:{font-name} font to use for bold-italic characters
- A field with the r: prefix must be specified when doing CJK printing. The
- other fontname specifiers are optional. If a specifier is missing then
- another font will be used as follows:
- if b: is missing, then use r:
- if i: is missing, then use r:
- if o: is missing, then use b:
- Some CJK fonts do not contain characters for codes in the ASCII code range.
- Also, some characters in the CJK ASCII code ranges differ in a few code points
- from traditional ASCII characters. There are two additional fields to control
- printing of characters in the ASCII code range.
- c:yes Use Courier font for characters in the ASCII
- c:no (default) code range.
- a:yes Use ASCII character set for codes in the ASCII
- a:no (default) code range.
- The following is an example of specifying two multibyte fonts, one for normal
- and italic printing and one for bold and bold-italic printing, and using
- Courier to print codes in the ASCII code range but using the national
- character set: >
- :set printmbfont=r:WadaMin-Regular,b:WadaMin-Bold,c:yes
- <
- *popt-option*
- 'printoptions' 'popt' string (default "")
- global
- This is a comma-separated list of items that control the format of the output
- of |:hardcopy|:
- left:{spec} left margin (default: 10pc)
- right:{spec} right margin (default: 5pc)
- top:{spec} top margin (default: 5pc)
- bottom:{spec} bottom margin (default: 5pc)
- {spec} is a number followed by "in" for inches, "pt"
- for points (1 point is 1/72 of an inch), "mm" for
- millimeters or "pc" for a percentage of the media
- size.
- Weird example:
- left:2in,top:30pt,right:16mm,bottom:3pc
- If the unit is not recognized there is no error and
- the default value is used.
- header:{nr} Number of lines to reserve for the header.
- Only the first line is actually filled, thus when {nr}
- is 2 there is one empty line. The header is formatted
- according to 'printheader'.
- header:0 Do not print a header.
- header:2 (default) Use two lines for the header
- syntax:n Do not use syntax highlighting. This is faster and
- thus useful when printing large files.
- syntax:y Do syntax highlighting.
- syntax:a (default) Use syntax highlighting if the printer appears to be
- able to print color or grey.
- number:y Include line numbers in the printed output.
- number:n (default) No line numbers.
- wrap:y (default) Wrap long lines.
- wrap:n Truncate long lines.
- duplex:off Print on one side.
- duplex:long (default) Print on both sides (when possible), bind on long
- side.
- duplex:short Print on both sides (when possible), bind on short
- side.
- collate:y (default) Collating: 1 2 3, 1 2 3, 1 2 3
- collate:n No collating: 1 1 1, 2 2 2, 3 3 3
- jobsplit:n (default) Do all copies in one print job
- jobsplit:y Do each copy as a separate print job. Useful when
- doing N-up postprocessing.
- portrait:y (default) Orientation is portrait.
- portrait:n Orientation is landscape.
- *a4* *letter*
- paper:A4 (default) Paper size: A4
- paper:{name} Paper size from this table:
- {name} size in cm size in inch ~
- 10x14 25.4 x 35.57 10 x 14
- A3 29.7 x 42 11.69 x 16.54
- A4 21 x 29.7 8.27 x 11.69
- A5 14.8 x 21 5.83 x 8.27
- B4 25 x 35.3 10.12 x 14.33
- B5 17.6 x 25 7.17 x 10.12
- executive 18.42 x 26.67 7.25 x 10.5
- folio 21 x 33 8.27 x 13
- ledger 43.13 x 27.96 17 x 11
- legal 21.59 x 35.57 8.5 x 14
- letter 21.59 x 27.96 8.5 x 11
- quarto 21.59 x 27.5 8.5 x 10.83
- statement 13.97 x 21.59 5.5 x 8.5
- tabloid 27.96 x 43.13 11 x 17
- formfeed:n (default) Treat form feed characters (0x0c) as a normal print
- character.
- formfeed:y When a form feed character is encountered, continue
- printing of the current line at the beginning of the
- first line on a new page.
- The item indicated with (default) is used when the item is not present. The
- values are not always used, especially when using a dialog to select the
- printer and options.
- Example: >
- :set printoptions=paper:letter,duplex:off
- ==============================================================================
- 3. PostScript Printing *postscript-printing*
- *E455* *E456* *E457* *E624*
- Provided you have enough disk space there should be no problems generating a
- PostScript file. You need to have the runtime files correctly installed (if
- you can find the help files, they probably are).
- There are currently a number of limitations with PostScript printing:
- - 'printfont' - The font name is ignored (the Courier family is always used -
- it should be available on all PostScript printers) but the font size is
- used.
- - 'printoptions' - The duplex setting is used when generating PostScript
- output, but it is up to the printer to take notice of the setting. If the
- printer does not support duplex printing then it should be silently ignored.
- Some printers, however, don't print at all.
- - 8-bit support - While a number of 8-bit print character encodings are
- supported it is possible that some characters will not print. Whether a
- character will print depends on the font in the printer knowing the
- character. Missing characters will be replaced with an upside down question
- mark, or a space if that character is also not known by the font. It may be
- possible to get all the characters in an encoding to print by installing a
- new version of the Courier font family.
- - Multi-byte support - Currently Vim will try to convert multibyte characters
- to the 8-bit encoding specified by 'printencoding' (or latin1 if it is
- empty). Any characters that are not successfully converted are shown as
- unknown characters. Printing will fail if Vim cannot convert the multibyte
- to the 8-bit encoding.
- ==============================================================================
- 4. Custom 8-bit Print Character Encodings *postscript-print-encoding*
- *E618* *E619*
- To use your own print character encoding when printing 8-bit character data
- you need to define your own PostScript font encoding vector. Details on how
- to define a font encoding vector is beyond the scope of this help file, but
- you can find details in the PostScript Language Reference Manual, 3rd Edition,
- published by Addison-Wesley and available in PDF form at
- http://www.adobe.com/. The following describes what you need to do for Vim to
- locate and use your print character encoding.
- i. Decide on a unique name for your encoding vector, one that does not clash
- with any of the recognized or standard encoding names that Vim uses (see
- |encoding-names| for a list), and that no one else is likely to use.
- ii. Copy $VIMRUNTIME/print/latin1.ps to the print subdirectory in your
- 'runtimepath' and rename it with your unique name.
- iii. Edit your renamed copy of latin1.ps, replacing all occurrences of latin1
- with your unique name (don't forget the line starting %%Title:), and
- modify the array of glyph names to define your new encoding vector. The
- array must have exactly 256 entries or you will not be able to print!
- iv. Within Vim, set 'printencoding' to your unique encoding name and then
- print your file. Vim will now use your custom print character encoding.
- Vim will report an error with the resource file if you change the order or
- content of the first 3 lines, other than the name of the encoding on the line
- starting %%Title: or the version number on the line starting %%Version:.
- [Technical explanation for those that know PostScript - Vim looks for a file
- with the same name as the encoding it will use when printing. The file
- defines a new PostScript Encoding resource called /VIM-name, where name is the
- print character encoding Vim will use.]
- ==============================================================================
- 5. PostScript CJK Printing *postscript-cjk-printing*
- *E673* *E674* *E675*
- Vim supports printing of Chinese, Japanese, and Korean files. Setting up Vim
- to correctly print CJK files requires setting up a few more options.
- Each of these countries has many standard character sets and encodings which
- require that both be specified when printing. In addition, CJK fonts normally
- do not have the concept of italic glyphs and use different weight or stroke
- style to achieve emphasis when printing. This in turn requires a different
- approach to specifying fonts to use when printing.
- The encoding and character set are specified with the 'printencoding' and
- 'printmbcharset' options. If 'printencoding' is not specified then 'encoding'
- is used as normal. If 'printencoding' is specified then characters will be
- translated to this encoding for printing. You should ensure that the encoding
- is compatible with the character set needed for the file contents or some
- characters may not appear when printed.
- The fonts to use for CJK printing are specified with 'printmbfont'. This
- option allows you to specify different fonts to use when printing characters
- which are syntax highlighted with the font styles normal, italic, bold and
- bold-italic.
- No CJK fonts are supplied with Vim. There are some free Korean, Japanese, and
- Traditional Chinese fonts available at:
- http://examples.oreilly.com/cjkvinfo/adobe/samples/
- You can find descriptions of the various fonts in the read me file at
- http://examples.oreilly.de/english_examples/cjkvinfo/adobe/00README
- Please read your printer documentation on how to install new fonts.
- CJK fonts can be large containing several thousand glyphs, and it is not
- uncommon to find that they only contain a subset of a national standard. It
- is not unusual to find the fonts to not include characters for codes in the
- ASCII code range. If you find half-width Roman characters are not appearing
- in your printout then you should configure Vim to use the Courier font the
- half-width ASCII characters with 'printmbfont'. If your font does not include
- other characters then you will need to find another font that does.
- Another issue with ASCII characters, is that the various national character
- sets specify a couple of different glyphs in the ASCII code range. If you
- print ASCII text using the national character set you may see some unexpected
- characters. If you want true ASCII code printing then you need to configure
- Vim to output ASCII characters for the ASCII code range with 'printmbfont'.
- It is possible to define your own multibyte character set although this
- should not be attempted lightly. A discussion on the process if beyond the
- scope of these help files. You can find details on CMap (character map) files
- in the document 'Adobe CMap and CIDFont Files Specification, Version 1.0',
- available from http://www.adobe.com as a PDF file.
- ==============================================================================
- 6. PostScript Printing Troubleshooting *postscript-print-trouble*
- *E621*
- Usually the only sign of a problem when printing with PostScript is that your
- printout does not appear. If you are lucky you may get a printed page that
- tells you the PostScript operator that generated the error that prevented the
- print job completing.
- There are a number of possible causes as to why the printing may have failed:
- - Wrong version of the prolog resource file. The prolog resource file
- contains some PostScript that Vim needs to be able to print. Each version
- of Vim needs one particular version. Make sure you have correctly installed
- the runtime files, and don't have any old versions of a file called prolog
- in the print directory in your 'runtimepath' directory.
- - Paper size. Some PostScript printers will abort printing a file if they do
- not support the requested paper size. By default Vim uses A4 paper. Find
- out what size paper your printer normally uses and set the appropriate paper
- size with 'printoptions'. If you cannot find the name of the paper used,
- measure a sheet and compare it with the table of supported paper sizes listed
- for 'printoptions', using the paper that is closest in both width AND height.
- Note: The dimensions of actual paper may vary slightly from the ones listed.
- If there is no paper listed close enough, then you may want to try psresize
- from PSUtils, discussed below.
- - Two-sided printing (duplex). Normally a PostScript printer that does not
- support two-sided printing will ignore any request to do it. However, some
- printers may abort the job altogether. Try printing with duplex turned off.
- Note: Duplex prints can be achieved manually using PS utils - see below.
- - Collated printing. As with Duplex printing, most PostScript printers that
- do not support collating printouts will ignore a request to do so. Some may
- not. Try printing with collation turned off.
- - Syntax highlighting. Some print management code may prevent the generated
- PostScript file from being printed on a black and white printer when syntax
- highlighting is turned on, even if solid black is the only color used. Try
- printing with syntax highlighting turned off.
- A safe printoptions setting to try is: >
- :set printoptions=paper:A4,duplex:off,collate:n,syntax:n
- Replace "A4" with the paper size that best matches your printer paper.
- ==============================================================================
- 7. PostScript Utilities *postscript-print-util*
- 7.1 Ghostscript
- Ghostscript is a PostScript and PDF interpreter that can be used to display
- and print on non-PostScript printers PostScript and PDF files. It can also
- generate PDF files from PostScript.
- Ghostscript will run on a wide variety of platforms.
- There are three available versions:
- - AFPL Ghostscript (formerly Aladdin Ghostscript) which is free for
- non-commercial use. It can be obtained from:
- http://www.cs.wisc.edu/~ghost/
- - GNU Ghostscript which is available under the GNU General Public License. It
- can be obtained from:
- ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/
- - A commercial version for inclusion in commercial products.
- Additional information on Ghostscript can also be found at:
- http://www.ghostscript.com/
- Support for a number of non PostScript printers is provided in the
- distribution as standard, but if you cannot find support for your printer
- check the Ghostscript site for other printers not included by default.
- 7.2 Ghostscript Previewers.
- The interface to Ghostscript is very primitive so a number of graphical front
- ends have been created. These allow easier PostScript file selection,
- previewing at different zoom levels, and printing. Check supplied
- documentation for full details.
- X11
- - Ghostview. Obtainable from:
- http://www.cs.wisc.edu/~ghost/gv/
- - gv. Derived from Ghostview. Obtainable from:
- http://wwwthep.physik.uni-mainz.de/~plass/gv/
- Copies (possibly not the most recent) can be found at:
- http://www.cs.wisc.edu/~ghost/gv/
- OpenVMS
- - Is apparently supported in the main code now (untested). See:
- http://wwwthep.physik.uni-mainz.de/~plass/gv/
- MS-Windows
- - GSview. Obtainable from:
- http://www.cs.wisc.edu/~ghost/gsview/
- Linux
- - GSview. Linux version of the popular MS-Windows previewer.
- Obtainable from:
- http://www.cs.wisc.edu/~ghost/gsview/
- - BMV. Different from Ghostview and gv in that it doesn't use X but svgalib.
- Obtainable from:
- ftp://sunsite.unc.edu/pub/Linux/apps/graphics/viewers/svga/bmv-1.2.tgz
- 7.3 PSUtils
- PSUtils is a collection of utility programs for manipulating PostScript
- documents. Binary distributions are available for many platforms, as well as
- the full source. PSUtils can be found at:
- http://knackered.org/angus/psutils
- The utilities of interest include:
- - psnup. Convert PS files for N-up printing.
- - psselect. Select page range and order of printing.
- - psresize. Change the page size.
- - psbook. Reorder and lay out pages ready for making a book.
- The output of one program can be used as the input to the next, allowing for
- complex print document creation.
- N-UP PRINTING
- The psnup utility takes an existing PostScript file generated from Vim and
- convert it to an n-up version. The simplest way to create a 2-up printout is
- to first create a PostScript file with: >
- :hardcopy > test.ps
- Then on your command line execute: >
- psnup -n 2 test.ps final.ps
- Note: You may get warnings from some Ghostscript previewers for files produced
- by psnup - these may safely be ignored.
- Finally print the file final.ps to your PostScript printer with your
- platform's print command. (You will need to delete the two PostScript files
- afterwards yourself.) 'printexpr' could be modified to perform this extra
- step before printing.
- ALTERNATE DUPLEX PRINTING
- It is possible to achieve a poor man's version of duplex printing using the PS
- utility psselect. This utility has options -e and -o for printing just the
- even or odd pages of a PS file respectively.
- First generate a PS file with the 'hardcopy' command, then generate new
- files with all the odd and even numbered pages with: >
- psselect -o test.ps odd.ps
- psselect -e test.ps even.ps
- Next print odd.ps with your platform's normal print command. Then take the
- print output, turn it over and place it back in the paper feeder. Now print
- even.ps with your platform's print command. All the even pages should now
- appear on the back of the odd pages.
- There are a couple of points to bear in mind:
- 1. Position of the first page. If the first page is on top of the printout
- when printing the odd pages then you need to reverse the order that the odd
- pages are printed. This can be done with the -r option to psselect. This
- will ensure page 2 is printed on the back of page 1.
- Note: it is better to reverse the odd numbered pages rather than the even
- numbered in case there are an odd number of pages in the original PS file.
- 2. Paper flipping. When turning over the paper with the odd pages printed on
- them you may have to either flip them horizontally (along the long edge) or
- vertically (along the short edge), as well as possibly rotating them 180
- degrees. All this depends on the printer - it will be more obvious for
- desktop ink jets than for small office laser printers where the paper path
- is hidden from view.
- ==============================================================================
- 8. Formfeed Characters *printing-formfeed*
- By default Vim does not do any special processing of formfeed control
- characters. Setting the 'printoptions' formfeed item will make Vim recognize
- formfeed characters and continue printing the current line at the beginning
- of the first line on a new page. The use of formfeed characters provides
- rudimentary print control but there are certain things to be aware of.
- Vim will always start printing a line (including a line number if enabled)
- containing a formfeed character, even if it is the first character on the
- line. This means if a line starting with a formfeed character is the first
- line of a page then Vim will print a blank page.
- Since the line number is printed at the start of printing the line containing
- the formfeed character, the remainder of the line printed on the new page
- will not have a line number printed for it (in the same way as the wrapped
- lines of a long line when wrap in 'printoptions' is enabled).
- If the formfeed character is the last character on a line, then printing will
- continue on the second line of the new page, not the first. This is due to
- Vim processing the end of the line after the formfeed character and moving
- down a line to continue printing.
- Due to the points made above it is recommended that when formfeed character
- processing is enabled, printing of line numbers is disabled, and that form
- feed characters are not the last character on a line. Even then you may need
- to adjust the number of lines before a formfeed character to prevent
- accidental blank pages.
- ==============================================================================
- vim:tw=78:ts=8:noet:ft=help:norl:
|