linux-l: WICHTIG: Wer kann am Mittwoch...

Thomas Meyer mey at is.in-berlin.de
So Nov 30 18:58:09 CET 1997


Frank Ronneburg wrote:
> 
> ... einen Vortrag halten?
> 
> Leider musste Ingmar absagen. Kann jemand der anderen einen Vortrag
> vorziehen?
> 
> Bitte per Mail an mich + cc: an Hannes.
> 
> Danke!
> 
> Frank
> 
> --
> ________________________________________________________________________
>    Just go ahead and write your own multitasking multiuser os !
>                  Worked for me all the times.      --   Linus Torvalds
>      Be.L.U.G. Infos:  http://tanda.informatik.hu-berlin.de/BeLUG/
>         Berliner Linux Suchmaschine: http://linux.in-berlin.de

Ich koennte zur Not:

Thema: Drucken unter LINUX


Unten meine Stichwortsammlung!
Bitte mal durchsehen und Berichtigungen und Ergaenzungen mitteilen.
Wenn das nicht reicht, kann man vielleicht die Fragestunde erweitern
oder
irgendjemand kann das Thema noch erweitern.
Ein paar Folien hab ich auch gemacht (noch nicht fertig)


--------------------------------- schnipp
---------------------------------
Konzept Druckervortrag

***** Hardware ****
Druckerauswahl: alle Drucker -bis auf GDI-Drucker- geeignet.

Anschluss: meistens über Parallelport (aber auch Anschluß über seriellen
Port
	   möglich):

	   /dev/lp0  
	   /dev/lp1
	   /dev/lp2    welcher es ist, ausprobieren !

z.B.  
# cat /etc/passwd > /dev/lp0 


***** Software ****

Spoolsystem
Ghostscript
magicfilter
Druckanwendungen

Spoolsystem: verwaltet Drucker und Druckaufträge.
LINUX benutzt das Berkley-Spoolsystem (lpd) (versus
System-V-Spoolsystem)

Zwei Varianten lpd oder lprNG (enhanced printer system):

lpd für den Anfang vollkommen ausreichend.

Bestandteile:

Programme:	
	Spooler-Daemon lpd	(wird beim Booten gestartet)
	Adminstrationstool	lpc (interaktiv, gibt Prompt aus, 
				"help" hilft weiter)
	Druckkommando:		lpr [ -P <Drucker>][ file ]
	Druckaufträge anzeigen: lpq [ -P <Drucker> ]
	Druckabbruch:           lprm jobid
	Jeder sollte nur seine Drucke abbrechen können !

Dateien:
	/etc/printcap (zentrales Administrationsfile)

----- Beispiel:
#
# Copyright (c) 1983 Regents of the University of California.
# All rights reserved.
#
# Redistribution and use in source and binary forms are permitted
# provided that this notice is preserved and that due credit is given
# to the University of California at Berkeley. The name of the
University
# may not be used to endorse or promote products derived from this
# software without specific prior written permission. This software
# is provided ``as is'' without express or implied warranty.
#
#	@(#)etc.printcap	5.2 (Berkeley) 5/5/88
#
# > This file was generated by /usr/sbin/magicfilterconfig. <
#
lp|lj|hplj6|HP LaserJet6L:\
	:lp=/dev/lp1:sd=/var/spool/lpd/lp:\
	:sh:pw#80:pl#66:px#1440:mx#0:\
	:if=/usr/local/bin/ljet4-filter:\
	:af=/var/log/lp-acct:lf=/var/log/lp-errs:

erste Zeile: Druckername (mit Alias-Bezeichnungen)

lp -  Device
sd -  Spooldir
sh -  Titelblatt unterdrücken
pw -  Seitenbreite (page width)
pl -  Seitenlänge Zeilen (page length)
px -  Seitenlängen in Pixel
mx -  Max. Größe Druckerjob (in KByte), hier unbegrenzt
if -  Eingabefilter für file (Druckaufbereitung)
af -  Name des accouting-files
lf -  Name des Fehlerprotokollfiles

Ghostscript -ein Emulator der Seitenbeschreibungssprache Postscript-
macht jeden "gängigen Drucker" quasi zum Postscriptdrucker.

unter GPL bis Version 3.33
spätere Versionen frei für nicht kommerziellen Gebrauch.
(derzeit neueste Version 5.03)

gängigen Drucker: u.a. div. Canon BubbleJet
		       div. HP-Deskjet
                       div. HP-Laserjets und Paintjets
		       div. Epson-Stylus
(siehe File devs.mak) in den gs-5.03-Quellen.

Aufruf relativ kompliziert:

gs -q -sDEVICE=ljet4 -dNOPAUSE -sOutputFile=- - \newline
direkt auf lpr: -sOutputfile=|\lpr

am besten als eigenes Skript speichern. 

verwandte Programme:
   Previewer:
       ghostview
       gv          (komfortabler, meine Empfehlung)
       Postscript-Utilities: psutils:
           psselect: Seiten extrahieren
	   pstops:   Seiten umsortieren
           psnup:    mehrere Seiten pro Blatt

           
       Ascii nach Postscript Konverter: 
	  a2gs,     viele Optionen, /etc/papersize, echtes Filter, schlicht,
		    keine Umlaute !
	  a2ps,     viele Optionen, def. Ausgabe in Spool
                    o <fn> oder -o - (stdin)  , mit Rahmen,
		    Formatierung von Sourcen (viele Sprachen unterstützt),
                    rege Weiterentwicklung   
	  mpage     default 4 Seiten pro Blatt.
          enscript  Fonts wählbar,Umlaute,
                   

Anwendungen:
     Ausdruck von Manualpages in Postscript-Form (als Spickzettel)
     
     man -t ls | psnup -4 | lprgs
     man -t ls | psnup -4 | gv -    (preview)

     Druck eines Files:
     a2ps /etc/passwd -o - | gv -   (preview)

     Dokumentation in LaTeX-Format drucken, wenn TeX installiert.
     
     Web-Seiten aus Netscape im Postscript-Format abspeichern und
(eventuell
     verkleinert) drucken.

Problem:
	Viele verschieden Dateiformate für Texte und Graphik ....
        Wie soll man die alle drucken ?

Die Lösung:
     "magicfilter" erledigt die notwendigen Konvertierungen automatisch
...
     Es weist auch files ab, die man nicht drucken sollte, wie z.B
Binaries
     oder tar-files...
     Es führt transparent gunzip durch
     lpr ascii xxx.ps yyy.dvi.gz
  

Prinzip: /etc/printcap zieht ein Filterscript an. Dieses ermittelt aus
den
	 ersten Bytes, welches Format das File hat und welches Programm für 
         den Druck aufzurufen ist !

Einrichtung durch 
     /usr/sbin/magicconfig weitestgehend automatisch

    Unterstützte Dateiformate: 
	Postscript,
	TeX dvi
        troff          (ein UNIX-Textformatierer --> man-Pages)
        giff, tiff, pixmaps, fig, bmp
        gzip, compress
        pcl

erweiterbar...

     Format:
     Offset  magic  action  [cmd]
     
     action	cat		unverändert kopieren 
		text		kopieren, <lf> einstreuen
		pipe <cmd>	<cmd> ausführen und wieder mit magicfilter 
				bearbeiten
		filter <cmd>    <cmd> ausführen und zum Drucker schicken      
		ffilter         wie filter aber mit tmp. file  (1)
		fpipe           wie pipe   aber mit tmp. file  (1) 
		reject <msg>    ignorieren, Fehlermeldung <msg>
                ignore          ignorieren

(1) für Kommandos, die "seekable" input benötigen, wie z.B dvips oder
grog,
    weil sie z.B den Eingabestrom mehrfach lesen müssen
------------------------------ schnipp
--------------------------------------
-- 
Gruss
Thomas

Thomas Meyer                                    
(mey at is.in-berlin.de)




Mehr Informationen über die Mailingliste linux-l