character set, they may be replaced/re-encoded. Try to inhibit auto-conversion to UTF-8, until we (inevitably?) switch to el_GR.UTF-8 some time in the future. Obtained from: FreeBSD Greek Documentation Project
5231 lines
213 KiB
Text
5231 lines
213 KiB
Text
<!--
|
||
|
||
Το Εγχειρίδιο του FreeBSD: Εκτυπώσεις
|
||
|
||
The FreeBSD Greek Documentation Project
|
||
|
||
$FreeBSD$
|
||
|
||
%SOURCE% en_US.ISO8859-1/books/handbook/printing/chapter.sgml
|
||
%SRCID% 1.120
|
||
|
||
-->
|
||
|
||
<chapter id="printing">
|
||
<chapterinfo>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Sean</firstname>
|
||
<surname>Kelly</surname>
|
||
<contrib>Συνεισφορά από τον </contrib>
|
||
</author>
|
||
<!-- 30 Sept 1995 -->
|
||
</authorgroup>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Jim</firstname>
|
||
<surname>Mock</surname>
|
||
<contrib>Αναδομήθηκε και ανανεώθηκε από τον </contrib>
|
||
<!-- Mar 2000 -->
|
||
</author>
|
||
</authorgroup>
|
||
</chapterinfo>
|
||
|
||
<title>Εκτυπώσεις</title>
|
||
|
||
<sect1 id="printing-synopsis">
|
||
<title>Σύνοψη</title>
|
||
<indexterm><primary>LPD σύστημα spooling</primary></indexterm>
|
||
<indexterm><primary>εκτυπώσεις</primary></indexterm>
|
||
|
||
<para>Μπορείτε να χρησιμοποιήσετε το &os; για να κάνετε εκτυπώσεις
|
||
σε διάφορους τύπους εκτυπωτών, από τον παλαιότερο κρουστικό ως τον πιο
|
||
σύγχρονο laser εκτυπωτή, καθώς και οποιασδήποτε άλλης τεχνολογίας
|
||
ανάμεσα τους, και να δημιουργήσετε εκτυπώσεις υψηλής ποιότητας με τις
|
||
εφαρμογές που εκτελείτε.</para>
|
||
|
||
<para>Το &os; μπορεί επίσης να ρυθμιστεί ώστε να λειτουργεί ως
|
||
εξυπηρετητής εκτυπώσεων δικτύου. Με αυτή τη δυνατότητα το &os; μπορεί
|
||
να λαμβάνει εργασίες εκτύπωσης από διάφορους άλλους υπολογιστές,
|
||
συμπεριλαμβανομένων υπολογιστών &os;, &windows; και &macos;. Το &os;
|
||
μπορεί να εξασφαλίζει ότι μόνο μια εργασία θα τυπώνεται κάθε χρονική
|
||
στιγμή και μπορεί να τηρεί στατιστικά για τους χρήστες και τα
|
||
μηχανήματα που θα κάνουν τις περισσότερες εκτυπώσεις, να παράγει
|
||
σελίδες <quote>banner</quote> που να δείχνουν σε ποιόν ανήκει η κάθε
|
||
εκτύπωση, και πολλά άλλα.</para>
|
||
|
||
<para>Αφού διαβάσετε αυτό το κεφάλαιο θα ξέρετε:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Πως να ρυθμίσετε την ουρά εκτυπώσεων (print spooler) του
|
||
&os;.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Πως να εγκαθιστάτε φίλτρα εκτύπωσης, να χειρίζεστε
|
||
ειδικές εργασίες εκτύπωσης (π.χ. τη μετατροπή
|
||
εισερχόμενων κειμένων σε μορφές εκτύπωσης που είναι κατανοητές από
|
||
τους εκτυπωτές σας).</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Πως να ενεργοποιήσετε σελίδες τύπου κεφαλίδας ή banner στις
|
||
εκτυπώσεις σας.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Πως να εκτυπώνετε σε εκτυπωτές που είναι συνδεδεμένοι σε άλλους
|
||
υπολογιστές.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Πως να εκτυπώνετε σε εκτυπωτές που είναι συνδεδεμένοι απευθείας
|
||
στο δίκτυο.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Πως να ελέγχετε τους περιορισμούς εκτύπωσης, συμπεριλαμβανομένων
|
||
των περιορισμών μεγέθους των εργασιών εκτύπωσης, και πως να
|
||
παρεμποδίζετε την δυνατότητα εκτύπωσης σε συγκεκριμένους
|
||
χρήστες.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Πως να κρατήσετε στατιστικά για τον εκτυπωτή, και καταγραφή
|
||
για τη χρήση του εκτυπωτή από κάθε χρήστη.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Πως να αντιμετωπίσετε προβλήματα στις εκτυπώσεις.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Πριν διαβάσετε αυτό το κεφάλαιο, θα πρέπει:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Να γνωρίζετε πως να ρυθμίσετε και να εγκαταστήσετε ένα νέο
|
||
πυρήνα (<xref linkend="kernelconfig">).</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect1>
|
||
|
||
<sect1 id="printing-intro-spooler">
|
||
<title>Εισαγωγή</title>
|
||
|
||
<para>Για να χρησιμοποιήσετε εκτυπωτές στο &os;, θα χρειαστεί να
|
||
ρυθμίσετε τη λειτουργία τους με το σύστημα παροχέτευσης (spooling)
|
||
εκτυπωτών γραμμής του Berkeley, γνωστό επίσης και ως σύστημα
|
||
παροχέτευσης <application>LPD</application>, ή απλά
|
||
<application>LPD</application>. Αυτό είναι το προκαθορισμένο σύστημα
|
||
ελέγχου εκτυπωτών στο &os;. Το κεφάλαιο αυτό είναι μια εισαγωγή στο
|
||
<application>LPD</application> και θα σας καθοδηγήσει στις ρυθμίσεις
|
||
του.</para>
|
||
|
||
<para>Εάν σας είναι οικείο το <application>LPD</application> ή κάποιο άλλο
|
||
σύστημα παροχέτευσης εκτυπωτών, τότε μπορείτε να μεταπηδήσετε στην
|
||
ενότητα <link linkend="printing-intro-setup">Βασική Εγκατάσταση</link>.</para>
|
||
|
||
<para>Το <application>LPD</application> μπορεί να ελέγχει εξ' ολοκλήρου
|
||
όλες τις λειτουργίες των εκτυπωτών ενός υπολογιστή. Είναι κυρίως
|
||
υπεύθυνο για ένα πλήθος λειτουργιών:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Ελέγχει την πρόσβαση σε απευθείας συνδεμένους εκτυπωτές και
|
||
εκτυπωτές προσαρτημένους σε άλλους κόμβους στο δίκτυο.</para>
|
||
</listitem>
|
||
|
||
<indexterm><primary>εργασίες εκτύπωσης</primary></indexterm>
|
||
<listitem>
|
||
<para>Επιτρέπει σε χρήστες να στέλνουν αρχεία προς εκτύπωση. Οι
|
||
αποστολές αυτές είναι γνωστές ως
|
||
<emphasis>εργασίες (jobs)</emphasis>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Διατηρεί <emphasis>ουρά αναμονής (queue)</emphasis> για κάθε
|
||
εκτυπωτή, ώστε να προλαμβάνει την ταυτόχρονη πρόσβαση από πολλούς
|
||
χρήστες.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Μπορεί να εκτυπώνει <emphasis>σελίδες κεφαλίδας</emphasis>
|
||
(γνωστές επίσης ως <emphasis>banner</emphasis> ή
|
||
<emphasis>σελίδες burst</emphasis>) ώστε οι χρήστες να μπορούν
|
||
εύκολα να ξεχωρίσουν τις εργασίες τους μέσα στην στοίβα
|
||
εκτυπώσεων.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Φροντίζει για την ορθότητα των παραμέτρων επικοινωνίας των
|
||
εκτυπωτών που είναι συνδεδεμένοι σε σειριακές θύρες.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Μπορεί μέσω του δικτύου να στείλει εργασίες σε σύστημα
|
||
παροχέτευσης <application>LPD</application> διαφορετικού
|
||
υπολογιστή.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Μπορεί να εκτελέσει διάφορα φίλτρα για να προσαρμόσει εργασίες
|
||
ώστε να είναι δυνατή η εκτύπωση τους σε εκτυπωτές που χρησιμοποιούν
|
||
διαφορετικές γλώσσες ή έχουν διαφορετικές δυνατότητες.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Μπορεί να κάνει καταμέτρηση χρήσης του εκτυπωτή.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Μέσω του αρχείου ρύθμισης (<filename>/etc/printcap</filename>),
|
||
και με τη βοήθεια ειδικών προγραμμάτων φίλτρων, μπορείτε να
|
||
ενεργοποιήσετε το σύστημα <application>LPD</application> να κάνει όλες
|
||
ή κάποιες από τις παραπάνω εργασίες σε μια μεγάλη γκάμα συσκευών
|
||
εκτύπωσης.</para>
|
||
|
||
<sect2 id="printing-intro-why">
|
||
<title>Γιατί θα πρέπει να χρησιμοποιείτε τον Spooler</title>
|
||
|
||
<para>Αν είστε ο μοναδικός χρήστης του συστήματος, θα αναρωτιέστε
|
||
γιατί θα έπρεπε να ενδιαφερθείτε για τον spooler αφού δεν χρειάζεστε
|
||
έλεγχο πρόσβασης, σελίδες κεφαλίδας, ή αναφορές εκτύπωσης. Αν και
|
||
μπορείτε να ενεργοποιήσετε την άμεση πρόσβαση στον εκτυπωτή, είναι
|
||
καλύτερα να χρησιμοποιείτε τον spooler για τους παρακάτω
|
||
λόγους:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>το <application>LPD</application> εκτυπώνει τις εργασίες στο
|
||
παρασκήνιο, δεν χρειάζεται να περιμένετε να αντιγραφούν τα
|
||
δεδομένα στον εκτυπωτή.</para>
|
||
</listitem>
|
||
|
||
<indexterm><primary>&tex;</primary></indexterm>
|
||
<listitem>
|
||
<para>Το <application>LPD</application> μπορεί άνετα να εκτελεί
|
||
μια εργασία εκτύπωσης διαμέσου φίλτρων και να προσθέτει κεφαλίδες
|
||
ημερομηνίας/ώρας ή να μετατρέπει κάποιο ειδικό τύπο αρχείου
|
||
(όπως ένα αρχείο &tex; DVI) σε ένα τύπο κατανοητό από τον
|
||
εκτυπωτή σας. Αυτές οι διαδικασίες δεν χρειάζεται να γίνονται
|
||
χειροκίνητα.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Πολλά από τα ελεύθερα και εμπορικά διαθέσιμα προγράμματα
|
||
που παρέχουν διευκολύνσεις στην εκτύπωση, συνήθως επιζητούν
|
||
να επικοινωνήσουν με τον spooler του συστήματος σας. Ρυθμίζοντας
|
||
το σύστημα παροχέτευσης, θα μπορείτε ευκολότερα να υποστηρίζετε
|
||
λογισμικό τρίτων, που μπορεί ήδη να έχετε ή που πρόκειται να
|
||
εγκαταστήσετε στο μέλλον.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="printing-intro-setup">
|
||
<title>Βασική Εγκατάσταση</title>
|
||
|
||
<para>Για να χρησιμοποιήσετε εκτυπωτές με το σύστημα παροχέτευσης
|
||
<application>LPD</application>, θα πρέπει να εγκαταστήσετε τόσο το
|
||
hardware του εκτυπωτή σας όσο και το λογισμικό
|
||
<application>LPD</application>. Αυτό το έγγραφο περιγράφει την
|
||
εγκατάσταση σε δύο στάδια:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Δείτε την ενότητα <link linkend="printing-simple">Βασικές
|
||
Ρυθμίσεις Εκτυπωτών</link> για να μάθετε πως γίνεται η σύνδεση
|
||
εκτυπωτών, με ποιο τρόπο επικοινωνεί το
|
||
<application>LPD</application> με τους εκτυπωτές, και πως να
|
||
εκτυπώνετε απλά αρχεία κειμένου.</para></listitem>
|
||
|
||
<listitem>
|
||
<para>Δείτε την ενότητα <link linkend="printing-advanced">Ρυθμίσεις
|
||
Εκτυπωτών για Προχωρημένους</link> για να μάθετε πως να εκτυπώνετε
|
||
αρχεία ειδικής μορφής διαφόρων τύπων, πως να εκτυπώνετε σελίδες
|
||
κεφαλίδας, πως να εκτυπώνετε σε ένα δίκτυο, πως να ελέγχετε την
|
||
πρόσβαση στους εκτυπωτές, και πως να χρησιμοποιείτε την καταγραφή
|
||
εκτυπώσεων.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<sect2 id="printing-simple">
|
||
<title>Βασικές Ρυθμίσεις Εκτυπωτών</title>
|
||
|
||
<para>Αυτή η ενότητα περιγράφει πως να ρυθμίσετε το hardware του
|
||
εκτυπωτή και το λογισμικό <application>LPD</application>. Παρέχει
|
||
βασικές γνώσεις για τα εξής θέματα:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Η Ενότητα <link linkend="printing-hardware">Ρυθμίσεις
|
||
Hardware</link> υποδεικνύει πως να συνδέσετε τον εκτυπωτή σε
|
||
μια θύρα του υπολογιστή σας.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Η Ενότητα <link linkend="printing-software">Ρυθμίσεις
|
||
Λογισμικού</link> υποδεικνύει πως να εγκαταστήσετε το αρχείο
|
||
ρύθμισης του συστήματος παροχέτευσης
|
||
<application>LPD</application>: το αρχείο
|
||
<filename>/etc/printcap</filename>.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Αν προσπαθείτε να εγκαταστήσετε έναν εκτυπωτή που δέχεται δεδομένα
|
||
μέσω πρωτοκόλλου δικτύου και όχι μέσω διασύνδεσης τοπικής θύρας, τότε
|
||
δείτε την ενότητα
|
||
<link linkend="printing-advanced-network-net-if">Εκτυπωτές Με
|
||
Συνδέσεις Δικτύου</link>.</para>
|
||
|
||
<para>Αν και αυτή η ενότητα ονομάζεται <quote>Βασικές Ρυθμίσεις
|
||
Εκτυπωτών</quote>, στην πραγματικότητα είναι αρκετά περίπλοκη. Το
|
||
δυσκολότερο στάδιο στην εγκατάσταση είναι η επιτυχής λειτουργία στην
|
||
επικοινωνία του εκτυπωτή με τον υπολογιστή σας και το σύστημα
|
||
παροχέτευσης <application>LPD</application>. Οι επιλογές για
|
||
προχωρημένους, όπως οι σελίδες κεφαλίδας και αναφοράς είναι σχετικά
|
||
εύκολες να επιτευχθούν, μετά την επιτυχή ρύθμιση της βασικής
|
||
λειτουργίας εκτύπωσης.</para>
|
||
|
||
<sect3 id="printing-hardware">
|
||
<title>Ρυθμίσεις Hardware</title>
|
||
|
||
<para>Αυτή η ενότητα εξηγεί τους διάφορους τρόπους σύνδεσης του
|
||
εκτυπωτή με τον υπολογιστή σας. Περιγράφει τους διάφορους τύπους
|
||
θυρών και καλωδίων, και τις ρυθμίσεις που πρέπει να κάνετε
|
||
στον πυρήνα για να ενεργοποιήσετε την επικοινωνία μεταξύ &os; και
|
||
εκτυπωτή.</para>
|
||
|
||
<para>Αν ήδη έχετε καταφέρει να συνδέσετε τον εκτυπωτή σας και έχετε
|
||
εκτυπώσει επιτυχώς σε άλλο λειτουργικό σύστημα, τότε μπορείτε να
|
||
μεταβείτε κατευθείαν στην ενότητα <link
|
||
linkend="printing-software">Ρυθμίσεις Λογισμικού</link>.</para>
|
||
|
||
<sect4 id="printing-ports">
|
||
<title>Θύρες και Καλώδια</title>
|
||
|
||
<para>Οι εκτυπωτές που διατίθενται σήμερα για χρήση με Η/Υ
|
||
παρέχονται με μία ή περισσότερες εκ των ακολούθων τριών
|
||
διασυνδέσεων:</para>
|
||
|
||
<itemizedlist>
|
||
<indexterm>
|
||
<primary>εκτυπωτές</primary>
|
||
<secondary>σειριακοί</secondary>
|
||
</indexterm>
|
||
<listitem>
|
||
<para>Οι <emphasis>Σειριακές</emphasis> διασυνδέσεις, γνωστές
|
||
και ως RS-232 ή θύρες COM, χρησιμοποιούν την σειριακή θύρα
|
||
του υπολογιστή σας για να στείλουν δεδομένα στον εκτυπωτή.
|
||
Οι σειριακές διασυνδέσεις είναι συνήθεις στην βιομηχανία
|
||
κατασκευής Η/Υ και τα καλώδια είναι εκτενώς διαδεδομένα και
|
||
επίσης εύκολα να κατασκευαστούν. Οι σειριακές διασυνδέσεις
|
||
μερικές φορές χρειάζονται ειδικά καλώδια και μπορεί να σας
|
||
ζητηθούν πολύπλοκες επικοινωνιακές ρυθμίσεις. Οι περισσότερες
|
||
σειριακές θύρες των Η/Υ έχουν μέγιστη ταχύτητα μετάδοσης
|
||
115200 bps, κάνοντας δύσκολη την εργασία εκτύπωσης
|
||
γραφικών μεγάλων διαστάσεων.</para>
|
||
</listitem>
|
||
|
||
<indexterm>
|
||
<primary>εκτυπωτές</primary>
|
||
<secondary>παράλληλοι</secondary>
|
||
</indexterm>
|
||
<listitem>
|
||
<para>Οι <emphasis>Παράλληλες</emphasis> διασυνδέσεις
|
||
χρησιμοποιούν την παράλληλη θύρα του υπολογιστή σας για να
|
||
στέλνουν δεδομένα στον εκτυπωτή. Οι παράλληλες διασυνδέσεις
|
||
είναι διαδεδομένες στο εμπόριο και είναι γρηγορότερες από τις
|
||
σειριακές RS-232. Τα καλώδια διατίθενται έτοιμα, αλλά είναι
|
||
δυσκολότερο να κατασκευαστούν χειρωνακτικά. Με τις παράλληλες
|
||
διασυνδέσεις δεν προβλέπονται επιλογές ρύθμισης επικοινωνίας,
|
||
κάνοντας την ρύθμιση τους εξαιρετικά απλή.</para>
|
||
|
||
<indexterm>
|
||
<primary>centronics</primary>
|
||
<see>παράλληλοι εκτυπωτές</see>
|
||
</indexterm>
|
||
<para>Οι παράλληλες διασυνδέσεις είναι γνωστές και ως
|
||
διασυνδέσεις <quote>Centronics</quote>, ονομασία προερχόμενη
|
||
από τον τύπο του ακροδέκτη του εκτυπωτή.</para>
|
||
</listitem>
|
||
|
||
<indexterm>
|
||
<primary>εκτυπωτές</primary>
|
||
<secondary>USB</secondary>
|
||
</indexterm>
|
||
<listitem>
|
||
<para>Οι διασυνδέσεις USB, συντομογραφία από το Universal
|
||
Serial Bus, δουλεύουν σε ακόμη μεγαλύτερες ταχύτητες από την
|
||
παράλληλη και την RS-232 σειριακή διασύνδεση. Τα καλώδια τους
|
||
είναι απλά και φτηνά. Η USB είναι ανώτερη από την Σειριακή
|
||
RS-232 και από την Παράλληλη στην εκτύπωση, αλλά δυστυχώς δεν
|
||
υποστηρίζεται καλά από τα συστήματα &unix;. Ένας τρόπος για
|
||
να αποφύγετε αυτό το πρόβλημα είναι να αγοράσετε εκτυπωτή
|
||
που φέρει διασύνδεση USB και Παράλληλη, όπως συμβαίνει με
|
||
πολλούς εκτυπωτές.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Γενικά, οι Παράλληλες διασυνδέσεις προσφέρουν συνήθως
|
||
μίας κατεύθυνσης επικοινωνία (από τον υπολογιστή στον εκτυπωτή)
|
||
ενώ η σειριακή και η USB δίνουν αμφίδρομη. Στο &os; οι πιο
|
||
πρόσφατες παράλληλες θύρες (EPP και ECP) καταφέρνουν
|
||
αμφίδρομη επικοινωνία με τους εκτυπωτές, όταν χρησιμοποιούνται
|
||
καλώδια που συμμορφώνονται με το πρότυπο IEEE-1284.</para>
|
||
|
||
<indexterm><primary>PostScript</primary></indexterm>
|
||
|
||
<para>Η αμφίδρομη επικοινωνία με εκτυπωτές διαμέσου παράλληλης
|
||
θύρας μπορεί να επιτευχθεί γενικά με δύο τρόπους. Ο πρώτος τρόπος
|
||
χρησιμοποιεί ένα προσαρμοσμένο πρόγραμμα οδήγησης εκτυπωτή, ώστε
|
||
να μπορεί το &os; να συνομιλεί στην γλώσσα του εκτυπωτή. Αυτό
|
||
είναι σύνηθες με εκτυπωτές inkjet και μπορεί επίσης να
|
||
χρησιμοποιηθεί για αναφορές διαθέσιμης ποσότητας μελανιού και για
|
||
άλλες πληροφορίες λειτουργίας. Η δεύτερη μέθοδος χρησιμοποιείται
|
||
όταν ο εκτυπωτής έχει δυνατότητα υποστήριξης &postscript;.</para>
|
||
|
||
<para>Οι εργασίες &postscript; είναι στην πραγματικότητα προγράμματα
|
||
που αποστέλλονται στον εκτυπωτή, δεν είναι απαραίτητο να παράγουν
|
||
εκτυπώσεις, ενώ μπορούν να επιστρέψουν το αποτέλεσμα τους
|
||
απευθείας στον υπολογιστή. Το &postscript; χρησιμοποιεί
|
||
αμφίδρομη επικοινωνία για να ενημερώσει τον υπολογιστή για τυχόν
|
||
προβλήματα, όπως σφάλματα στο πρόγραμμα &postscript; ή
|
||
μπλοκάρισμα τροφοδοσίας χαρτιού. Οι χρήστες σας, θα σας είναι
|
||
ευγνώμονες για αυτές τις πληροφορίες. Επιπλέον, ο καλύτερος
|
||
τρόπος για να κάνετε σωστή καταμέτρηση με ένα αμφίδρομο εκτυπωτή
|
||
&postscript; είναι: να ρωτήσετε τον εκτυπωτή για την συνολική
|
||
καταμέτρηση των σελίδων του (πόσες σελίδες εκτύπωσε σε όλη τη
|
||
διάρκεια ζωής του), μετά να αποστείλετε την εργασία του χρήστη,
|
||
και έπειτα να ξαναρωτήσετε για την καταμέτρηση των σελίδων του.
|
||
Αφαιρέστε τις δύο τιμές και θα γνωρίζετε πόσες σελίδες να
|
||
χρεώσετε στον χρήστη.</para>
|
||
</sect4>
|
||
|
||
<sect4 id="printing-parallel">
|
||
<title>Παράλληλες Θύρες</title>
|
||
|
||
<para>Για να συνδέσετε έναν εκτυπωτή σε παράλληλη θύρα, συνδέστε
|
||
το καλώδιο Centronics μεταξύ εκτυπωτή και υπολογιστή.
|
||
Οι οδηγίες που συνοδεύουν τον εκτυπωτή και τον υπολογιστή θα σας
|
||
καθοδηγήσουν να ολοκληρώσετε την σύνδεση.</para>
|
||
|
||
<para>Θυμηθείτε ποια παράλληλη θύρα χρησιμοποιείτε στον υπολογιστή.
|
||
Η πρώτη παράλληλη θύρα στο &os; είναι η
|
||
<filename class="devicefile">ppc0</filename>,
|
||
η δεύτερη είναι η <filename class="devicefile">ppc1</filename>,
|
||
και ούτω καθεξής. Το όνομα συσκευής του εκτυπωτή χρησιμοποιεί
|
||
την ίδια αρίθμηση:
|
||
<filename class="devicefile">/dev/lpt0</filename> για τον
|
||
εκτυπωτή στην πρώτη παράλληλη θύρα κ.τ.λ.</para>
|
||
</sect4>
|
||
|
||
<sect4 id="printing-serial">
|
||
<title>Σειριακές Θύρες</title>
|
||
|
||
<para>Για να συνδέσετε έναν εκτυπωτή χρησιμοποιώντας σειριακή
|
||
διασύνδεση, συνδέστε το κατάλληλο σειριακό καλώδιο μεταξύ εκτυπωτή
|
||
και υπολογιστή. Οι οδηγίες που συνοδεύουν τον εκτυπωτή και τον
|
||
υπολογιστή σας, θα σας καθοδηγήσουν να ολοκληρώσετε την
|
||
σύνδεση.</para>
|
||
|
||
<para>Αν δεν είστε σίγουροι ποιο είναι το <quote>κατάλληλο σειριακό
|
||
καλώδιο</quote>, μπορείτε να δοκιμάσετε μία από τις ακόλουθες
|
||
εναλλακτικές:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Ένα καλώδιο <emphasis>modem</emphasis> ενώνει κάθε pin
|
||
του ακροδέκτη από τη μια πλευρά του καλωδίου κατευθείαν με
|
||
το αντίστοιχο pin του ακροδέκτη στο άλλο άκρο. Αυτός ο τύπος
|
||
καλωδίου είναι γνωστός και ως καλώδιο
|
||
<quote>DTE-to-DCE</quote>.</para>
|
||
</listitem>
|
||
|
||
<indexterm><primary>null-modem cable</primary></indexterm>
|
||
<listitem>
|
||
<para>Ένα καλώδιο <emphasis>null-modem</emphasis> ενώνει
|
||
κατευθείαν μερικά pins, ανταλλάσσει μερικά άλλα (για
|
||
παράδειγμα, τα pins αποστολής και λήψης), ενώ
|
||
βραχυκυκλώνει μερικά άλλα, εσωτερικά, στο προστατευτικό
|
||
κάλυμμα κάθε ακροδέκτη. Αυτός ο τύπος καλωδίου είναι γνωστός
|
||
και ως καλώδιο <quote>DTE-to-DTE</quote>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Ένα καλώδιο <emphasis>σειριακού εκτυπωτή</emphasis>, που
|
||
απαιτείται από κάποιους λιγότερο συνηθισμένους εκτυπωτές,
|
||
είναι σαν το καλώδιο null-modem, αλλά στέλνει ισοδύναμα
|
||
σήματα και στα δύο άκρα αντί να τα βραχυκυκλώνει
|
||
εσωτερικά.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<indexterm><primary>ρυθμός baud</primary></indexterm>
|
||
<indexterm><primary>ισοδυναμία</primary></indexterm>
|
||
<indexterm><primary>πρωτόκολλο ελέγχου ροής</primary></indexterm>
|
||
<para>Θα πρέπει επίσης να ρυθμίσετε τις παραμέτρους επικοινωνίας
|
||
του εκτυπωτή, συνήθως από τον μπροστινό πίνακα ελέγχου ή από τους
|
||
DIP διακόπτες του. Επιλέξτε την μέγιστη τιμή
|
||
<literal>bps</literal> (bits per second = bits ανά δευτερόλεπτο,
|
||
αναφέρεται και ως <emphasis>ρυθμός baud</emphasis>) που
|
||
υποστηρίζουν ο υπολογιστής και ο εκτυπωτής σας. Επιλέξτε 7 ή 8
|
||
data bits, none, even, ή odd parity, και 1 ή 2 stop bits. Επίσης
|
||
επιλέξτε ένα πρωτόκολλο ελέγχου ροής: είτε none, ή XON/XOFF
|
||
(αναφέρεται και ως έλεγχος ροής <quote>in-band</quote> ή
|
||
<quote>software</quote>). Να θυμάστε αυτές τις
|
||
ρυθμίσεις, για το στάδιο ρύθμισης λογισμικού που ακολουθεί.</para>
|
||
</sect4>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-software">
|
||
<title>Ρυθμίσεις Λογισμικού</title>
|
||
|
||
<para>Αυτή η ενότητα περιγράφει τις αναγκαίες ρυθμίσεις που πρέπει
|
||
να γίνουν στο λογισμικό για να μπορείτε να εκτυπώνετε με το σύστημα
|
||
παροχέτευσης εκτυπωτών <application>LPD</application> στο
|
||
&os;.</para>
|
||
|
||
<para>Μια γενική άποψη των ενεργειών που πρέπει να ακολουθήσετε
|
||
είναι:</para>
|
||
|
||
<procedure>
|
||
<step>
|
||
<para>Ρυθμίστε τον πυρήνα σας, αν είναι αναγκαίο, για την θύρα
|
||
που χρησιμοποιείτε για τον εκτυπωτή σας. Οι απαραίτητες
|
||
ρυθμίσεις περιγράφονται στην ενότητα <link
|
||
linkend="printing-kernel">Ρυθμίσεις Πυρήνα</link>.</para>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Ρυθμίστε την κατάσταση επικοινωνίας για την παράλληλη θύρα,
|
||
αν πρόκειται να την χρησιμοποιήσετε.
|
||
Η ενότητα <link linkend="printing-parallel-port-mode">Ρυθμίσεις
|
||
Κατάστασης Επικοινωνίας για την Παράλληλη Θύρα</link> περιέχει
|
||
λεπτομέρειες.</para>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Ελέγξτε αν το λειτουργικό σύστημα μπορεί να στείλει δεδομένα
|
||
στον εκτυπωτή.
|
||
Η ενότητα <link linkend="printing-testing">Έλεγχος Επικοινωνίας
|
||
του Εκτυπωτή</link> παρέχει μερικές συμβουλές για το πως θα
|
||
μπορούσε να γίνει ο έλεγχος.</para>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Ρυθμίστε το <application>LPD</application> για τον εκτυπωτή
|
||
σας, τροποποιώντας το αρχείο <filename>/etc/printcap</filename>.
|
||
Θα βρείτε οδηγίες για αυτές τις ρυθμίσεις σε επόμενο τμήμα αυτού
|
||
του κεφαλαίου.</para>
|
||
</step>
|
||
</procedure>
|
||
|
||
<sect4 id="printing-kernel">
|
||
<title>Ρυθμίσεις Πυρήνα</title>
|
||
|
||
<para>Ο πυρήνας του λειτουργικού συστήματος έχει μεταγλωττιστεί έτσι
|
||
ώστε να δουλεύει με ένα συγκεκριμένο σύνολο συσκευών. Η σειριακή
|
||
και η παράλληλη διασύνδεση του εκτυπωτή είναι μέρος αυτού του
|
||
συνόλου. Επομένως, ίσως να είναι αναγκαίο να προσθέσετε
|
||
υποστήριξη για κάποια πρόσθετη σειριακή ή παράλληλη θύρα, αν δεν
|
||
είναι ήδη ρυθμισμένη στον πυρήνα σας.</para>
|
||
|
||
<para>Για να ελέγξετε αν ο πυρήνας σας μπορεί να υποστηρίξει μια
|
||
σειριακή διασύνδεση, πληκτρολογήστε:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>grep sio<replaceable>N</replaceable> <filename>/var/run/dmesg.boot</filename></command></userinput></screen>
|
||
|
||
<para>Όπου <replaceable>N</replaceable> είναι ο αριθμός της
|
||
σειριακής θύρας, ξεκινώντας από το μηδέν. Αν δείτε στην έξοδο του
|
||
τερματικού σας κάτι παρόμοιο με:</para>
|
||
|
||
<screen>sio2 at port 0x3e8-0x3ef irq 5 on isa
|
||
sio2: type 16550A</screen>
|
||
|
||
<para>τότε ο πυρήνας υποστηρίζει αυτή τη θύρα.</para>
|
||
|
||
<para>Για να ελέγξετε αν ο πυρήνας σας υποστηρίζει παράλληλες
|
||
διασυνδέσεις, πληκτρολογήστε:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>grep ppc<replaceable>N</replaceable> <filename>/var/run/dmesg.boot</filename></command></userinput></screen>
|
||
|
||
<para>Όπου <replaceable>N</replaceable> είναι ο αριθμός της
|
||
παράλληλης θύρας, ξεκινώντας από το μηδέν. Αν δείτε στην έξοδο
|
||
του τερματικού σας κάτι παρόμοιο με:</para>
|
||
|
||
<screen>ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
|
||
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
|
||
ppc0: FIFO with 16/16/8 bytes threshold</screen>
|
||
|
||
<para>τότε ο πυρήνας υποστηρίζει αυτή τη θύρα.</para>
|
||
|
||
<para>Για να μπορεί το λειτουργικό σύστημα να αναγνωρίζει και να
|
||
χρησιμοποιεί την θύρα (παράλληλη ή σειριακή) για τον εκτυπωτή σας,
|
||
ίσως χρειαστεί να επαναπροσαρμόσετε τον πυρήνα σας.</para>
|
||
|
||
<para>Για την υποστήριξη σειριακής θύρας, δείτε την ενότητα στις
|
||
ρυθμίσεις του πυρήνα. Για την υποστήριξη παράλληλης θύρας, δείτε
|
||
την ίδια ενότητα <emphasis>και</emphasis> την ενότητα που
|
||
ακολουθεί.</para>
|
||
</sect4>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-parallel-port-mode">
|
||
<title>Ρυθμίσεις Κατάστασης Επικοινωνίας για την Παράλληλη
|
||
Θύρα</title>
|
||
|
||
<para>Όταν χρησιμοποιείτε την παράλληλη διασύνδεση, μπορείτε να
|
||
επιλέξετε αν η επικοινωνία του &os; με τον εκτυπωτή θα είναι
|
||
τύπου interrupt-driven ή polled. Ο γενικός οδηγός συσκευής του
|
||
εκτυπωτή (&man.lpt.4;) στο &os; χρησιμοποιεί το σύστημα
|
||
&man.ppbus.4;, το οποίο ελέγχει την θύρα του chipset
|
||
με τον οδηγό &man.ppc.4;.</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Η μέθοδος <emphasis>interrupt-driven</emphasis> είναι
|
||
προεπιλεγμένη στον πυρήνα GENERIC. Με αυτή τη μέθοδο,
|
||
το λειτουργικό σύστημα χρησιμοποιεί ένα σήμα IRQ για να
|
||
προσδιορίσει αν ο εκτυπωτής είναι έτοιμος για δεδομένα.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Η μέθοδος <emphasis>polled</emphasis> οδηγεί το
|
||
λειτουργικό σύστημα να ζητά κατά επανάληψη από τον εκτυπωτή
|
||
αν είναι έτοιμος για πρόσθετα δεδομένα. Όταν απαντήσει θετικά,
|
||
ο πυρήνας στέλνει πρόσθετα δεδομένα.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Η μέθοδος interrupt-driven είναι συνήθως κάπως γρηγορότερη
|
||
αλλά χρησιμοποιεί μια πολύτιμη γραμμή IRQ. Έχει παρατηρηθεί πως
|
||
κάποιοι σύγχρονοι εκτυπωτές HP δε δουλεύουν σωστά σε κατάσταση
|
||
interrupt, πιθανώς λόγω κάποιων (όχι απόλυτα εξακριβωμένων)
|
||
προβλημάτων συγχρονισμού. Αυτοί οι εκτυπωτές χρειάζονται την μέθοδο
|
||
polled. Θα πρέπει να χρησιμοποιείτε την αποτελεσματικότερη
|
||
κατάσταση λειτουργίας. Κάποιοι εκτυπωτές δουλεύουν και στις δυο
|
||
καταστάσεις, αλλά είναι οδυνηρά αργοί στην κατάσταση λειτουργίας
|
||
interrupt.</para>
|
||
|
||
<para>Μπορείτε να ρυθμίσετε την κατάσταση επικοινωνίας με δύο
|
||
τρόπους: ρυθμίζοντας τον πυρήνα ή χρησιμοποιώντας το πρόγραμμα
|
||
&man.lptcontrol.8;.</para>
|
||
|
||
<para><emphasis>Για να θέσετε την κατάσταση επικοινωνίας ρυθμίζοντας
|
||
τον πυρήνα:</emphasis></para>
|
||
|
||
<procedure>
|
||
<step>
|
||
<para>Επεξεργαστείτε το αρχείο ρύθμισης του πυρήνα. Δείτε την
|
||
καταχώριση <literal>ppc0</literal>. Αν εγκαθιστάτε την
|
||
δεύτερη παράλληλη θύρα, τότε χρησιμοποιείστε
|
||
<literal>ppc1</literal>. Για την τρίτη θύρα
|
||
<literal>ppc2</literal> και ούτω καθεξής.</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Αν επιθυμείτε κατάσταση λειτουργίας interrupt-driven,
|
||
επεξεργαστείτε την ακόλουθη γραμμή:</para>
|
||
|
||
<programlisting>hint.ppc.0.irq="<replaceable>N</replaceable>"</programlisting>
|
||
|
||
<para>στο αρχείο <filename>/boot/device.hints</filename> και
|
||
αντικαταστήστε το <replaceable>N</replaceable> με τον
|
||
σωστό αριθμό IRQ. Το αρχείο ρύθμισης του πυρήνα πρέπει
|
||
επίσης να περιέχει τον οδηγό &man.ppc.4;:</para>
|
||
|
||
<screen>device ppc</screen>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Αν επιθυμείτε κατάσταση λειτουργίας polled, διαγράψτε
|
||
από το αρχείο <filename>/boot/device.hints</filename>, την
|
||
ακόλουθη γραμμή:</para>
|
||
|
||
<programlisting>hint.ppc.0.irq="<replaceable>N</replaceable>"</programlisting>
|
||
|
||
<para>Σε μερικές περιπτώσεις, το παραπάνω δεν είναι αρκετό
|
||
για να θέσετε την θύρα σε κατάσταση polled. Τις
|
||
περισσότερες φορές το πρόβλημα προέρχεται από τον οδηγό
|
||
&man.acpi.4;, ο οποίος έχει την ευχέρεια να εξετάζει και
|
||
να προσαρτά συσκευές, και επομένως, να ελέγχει τον τρόπο
|
||
πρόσβασης στην θύρα του εκτυπωτή. Θα πρέπει να ελέγξετε
|
||
τις ρυθμίσεις του &man.acpi.4; για να διορθώσετε αυτό το
|
||
πρόβλημα.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Αποθηκεύστε το αρχείο. Ρυθμίστε, μεταγλωττίστε, και
|
||
εγκαταστήστε τον πυρήνα, και έπειτα κάντε επανεκκίνηση.
|
||
Για περισσότερες λεπτομέρειες, δείτε τις <link
|
||
linkend="kernelconfig">ρυθμίσεις του πυρήνα</link>.</para>
|
||
</step>
|
||
</procedure>
|
||
|
||
<para><emphasis>Για να θέσετε την κατάσταση επικοινωνίας με
|
||
το</emphasis> &man.lptcontrol.8;:</para>
|
||
|
||
<procedure>
|
||
<step>
|
||
<para>Πληκτρολογήστε:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>lptcontrol <option>-i</option> <option>-d</option> <filename class="devicefile">/dev/lpt<replaceable>N</replaceable></filename></command></userinput></screen>
|
||
|
||
<para>για να θέσετε την κατάσταση λειτουργίας interrupt-driven
|
||
για το <literal>lpt<replaceable>N</replaceable></literal>.</para>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Πληκτρολογήστε:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>lptcontrol <option>-p</option> <option>-d</option> <filename class="devicefile">/dev/lpt<replaceable>N</replaceable></filename></command></userinput></screen>
|
||
|
||
<para>για να θέσετε την κατάσταση λειτουργίας polled για το
|
||
<literal>lpt<replaceable>N</replaceable></literal>.</para>
|
||
</step>
|
||
</procedure>
|
||
|
||
<para>Θα μπορούσατε να καταχωρίσετε αυτές τις εντολές στο
|
||
δικό σας αρχείο <filename>/etc/rc.local</filename>. Έτσι θα
|
||
εκτελούνται αυτόματα κατά την εκκίνηση
|
||
του συστήματος σας. Για περισσότερες πληροφορίες δείτε το
|
||
&man.lptcontrol.8;.</para>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-testing">
|
||
<title>Έλεγχος Επικοινωνίας του Εκτυπωτή</title>
|
||
|
||
<para>Πριν συνεχίσουμε να ρυθμίζουμε το σύστημα παροχέτευσης, θα
|
||
πρέπει να βεβαιωθείτε ότι το λειτουργικό σύστημα μπορεί να στείλει
|
||
επιτυχώς δεδομένα στον εκτυπωτή σας. Είναι ευκολότερο να κάνουμε
|
||
ξεχωριστά την αποσφαλμάτωση επικοινωνίας του εκτυπωτή και την
|
||
αποσφαλμάτωση του συστήματος παροχέτευσης.</para>
|
||
|
||
<para>Θα ελέγξουμε τον εκτυπωτή στέλνοντας μερικά δεδομένα κειμένου.
|
||
Για εκείνους τους εκτυπωτές που μπορούν να εκτυπώνουν άμεσα
|
||
τους χαρακτήρες που έχουν αποσταλεί, το πρόγραμμα &man.lptest.1;
|
||
είναι τέλειο: Παράγει όλους τους εκτυπώσιμους χαρακτήρες (96)
|
||
ASCII σε 96 γραμμές.</para>
|
||
|
||
<indexterm><primary>PostScript</primary></indexterm>
|
||
<para>Για εκτυπωτές &postscript; (ή που βασίζονται σε άλλη γλώσσα),
|
||
θα χρειαστεί να κάνουμε ένα πιο πολύπλοκο τεστ. Ένα μικρό
|
||
πρόγραμμα &postscript;, όπως αυτό που ακολουθεί, επαρκεί:</para>
|
||
|
||
<programlisting>%!PS
|
||
100 100 moveto 300 300 lineto stroke
|
||
310 310 moveto /Helvetica findfont 12 scalefont setfont
|
||
(Is this thing working?) show
|
||
showpage</programlisting>
|
||
|
||
<para>Ο παραπάνω κώδικας &postscript; μπορεί να τοποθετηθεί σε ένα
|
||
αρχείο και να χρησιμοποιηθεί όπως υποδεικνύουν τα παραδείγματα
|
||
στις ακόλουθες ενότητες.</para>
|
||
|
||
<indexterm><primary>PCL</primary></indexterm>
|
||
<note>
|
||
<para>Όταν αυτό το έγγραφο αναφέρεται σε μια γλώσσα εκτυπωτή,
|
||
εννοείται μια γλώσσα όπως η &postscript;, αλλά όχι η PCL της
|
||
Hewlett Packard — η PCL είναι μια γλώσσα ευρείας
|
||
λειτουργικότητας η οποία επιτρέπει την ανάμιξη απλού κειμένου με
|
||
ακολουθίες διαφυγής. Η &postscript; δεν μπορεί να εκτυπώσει
|
||
άμεσα απλό κείμενο, και αυτός είναι ακριβώς ο τύπος της
|
||
γλώσσας εκτυπωτή που θα πρέπει να διευθετήσουμε
|
||
κατάλληλα.</para>
|
||
</note>
|
||
|
||
<sect4 id="printing-checking-parallel">
|
||
<title>Έλεγχος Παράλληλου Εκτυπωτή</title>
|
||
|
||
<indexterm>
|
||
<primary>εκτυπωτές</primary>
|
||
<secondary>παράλληλη</secondary>
|
||
</indexterm>
|
||
<para>Αυτή η ενότητα υποδεικνύει πως να ελέγξετε αν το &os; μπορεί
|
||
να επικοινωνήσει με έναν εκτυπωτή συνδεδεμένο σε παράλληλη
|
||
θύρα.</para>
|
||
|
||
<para><emphasis>Για να ελέγξετε έναν εκτυπωτή σε παράλληλη
|
||
θύρα:</emphasis></para>
|
||
|
||
<procedure>
|
||
<step>
|
||
<para>Γίνετε <username>root</username> με &man.su.1;.</para>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Στείλτε δεδομένα στον εκτυπωτή.</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Αν ο εκτυπωτής μπορεί να εκτυπώσει απλό κείμενο,
|
||
τότε χρησιμοποιήστε το &man.lptest.1;.
|
||
Πληκτρολογήστε:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>lptest > <filename class="devicefile">/dev/lpt<replaceable>N</replaceable></filename></command></userinput></screen>
|
||
|
||
<para>Όπου <replaceable>N</replaceable> είναι ο αριθμός
|
||
της παράλληλης θύρας, ξεκινώντας από το μηδέν.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Εάν ο εκτυπωτής καταλαβαίνει &postscript; ή κάποια
|
||
άλλη γλώσσα εκτυπωτών, τότε στείλτε ένα μικρό πρόγραμμα
|
||
στον εκτυπωτή. Πληκτρολογήστε:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>cat > <filename class="devicefile">/dev/lpt<replaceable>N</replaceable></filename></command></userinput></screen>
|
||
|
||
<para>Έπειτα πληκτρολογήστε το πρόγραμμα μία προς μία
|
||
γραμμή, <emphasis>προσεκτικά</emphasis>, γιατί δεν
|
||
μπορείτε να επεξεργαστείτε μια γραμμή αφότου έχετε
|
||
πιέσει το πλήκτρο <literal>RETURN</literal> ή
|
||
<literal>ENTER</literal>. Αφού τελειώσετε με την
|
||
καταχώριση του προγράμματος, πιέστε
|
||
<literal>CONTROL+D</literal>, ή άλλο πλήκτρο
|
||
τερματισμού αρχείου.</para>
|
||
|
||
<para>Εναλλακτικά, μπορείτε να τοποθετήσετε το πρόγραμμα
|
||
σε ένα αρχείο και να πληκτρολογήσετε:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>cat <filename><replaceable>file</replaceable></filename> > <filename class="devicefile">/dev/lpt<replaceable>N</replaceable></filename></command></userinput></screen>
|
||
|
||
<para>Όπου <replaceable>file</replaceable> είναι το
|
||
όνομα του αρχείου που περιέχει το πρόγραμμα που θέλετε
|
||
να στείλετε στον εκτυπωτή.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</step>
|
||
</procedure>
|
||
|
||
<para>Θα δείτε κάτι να εκτυπώνεται. Μην ανησυχείτε αν το κείμενο
|
||
δεν φαίνεται σωστό. Θα το διορθώσουμε αργότερα.</para>
|
||
</sect4>
|
||
|
||
<sect4 id="printing-checking-serial">
|
||
<title>Έλεγχος Σειριακού Εκτυπωτή</title>
|
||
|
||
<indexterm>
|
||
<primary>printers</primary>
|
||
<secondary>serial</secondary>
|
||
</indexterm>
|
||
<para>Αυτή η ενότητα υποδεικνύει πως να ελέγξετε αν το &os; μπορεί
|
||
να επικοινωνήσει με έναν εκτυπωτή συνδεδεμένο σε σειριακή
|
||
θύρα.</para>
|
||
|
||
<para><emphasis>Για να ελέγξετε έναν εκτυπωτή σε σειριακή
|
||
θύρα:</emphasis></para>
|
||
|
||
<procedure>
|
||
<step>
|
||
<para>Γίνετε <username>root</username> με &man.su.1;.</para>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Επεξεργαστείτε το αρχείο
|
||
<filename>/etc/remote</filename>. Προσθέστε την ακόλουθη
|
||
καταχώριση:</para>
|
||
|
||
<programlisting>printer:dv=<filename class="devicefile">/dev/<replaceable>port</replaceable></filename>:br#<replaceable>bps-rate</replaceable>:pa=<replaceable>parity</replaceable></programlisting>
|
||
|
||
<indexterm><primary>bits-per-second</primary></indexterm>
|
||
<indexterm><primary>serial port</primary></indexterm>
|
||
<indexterm><primary>parity</primary></indexterm>
|
||
<para>Όπου <replaceable>port</replaceable> είναι η
|
||
καταχώριση συσκευής για την σειριακή πόρτα
|
||
(<literal>ttyd0</literal>, <literal>ttyd1</literal>, κτλ.),
|
||
<replaceable>bps-rate</replaceable> είναι η ταχύτητα
|
||
bits-per-second επικοινωνίας με τον εκτυπωτή, και
|
||
<replaceable>parity</replaceable> η ισοτιμία που
|
||
απαιτείται από τον εκτυπωτή (<literal>even</literal>,
|
||
<literal>odd</literal>, <literal>none</literal>, ή
|
||
<literal>zero</literal>).</para>
|
||
|
||
<para>Παρακάτω φαίνεται ένα υπόδειγμα καταχώρισης, για έναν
|
||
εκτυπωτή συνδεδεμένο μέσω σειριακής γραμμής στην τρίτη
|
||
σειριακή θύρα με ταχύτητα 19200 bps και χωρίς
|
||
parity:</para>
|
||
|
||
<programlisting>printer:dv=<filename class="devicefile">/dev/ttyd2</filename>:br#19200:pa=none</programlisting>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Συνδεθείτε στον εκτυπωτή με &man.tip.1;.
|
||
Πληκτρολογήστε:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>tip</command> printer</userinput></screen>
|
||
|
||
<para>Αν αυτό το στάδιο δεν δουλεύει, επεξεργαστείτε πάλι το
|
||
αρχείο <filename>/etc/remote</filename> και προσπαθήστε το
|
||
χρησιμοποιώντας
|
||
<filename class="devicefile">/dev/cuaa<replaceable>N</replaceable></filename>
|
||
αντί για
|
||
<filename class="devicefile">/dev/ttyd<replaceable>N</replaceable></filename>.</para>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Στείλτε δεδομένα στον εκτυπωτή.</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Αν ο εκτυπωτής μπορεί να εκτυπώσει απλό κείμενο,
|
||
χρησιμοποιήστε &man.lptest.1;. Γράψτε:</para>
|
||
|
||
<screen>&prompt.user; <userinput>$lptest</userinput></screen>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Εάν ο εκτυπωτής καταλαβαίνει &postscript; ή κάποια
|
||
άλλη γλώσσα εκτυπωτών, τότε στείλτε ένα μικρό πρόγραμμα
|
||
στον εκτυπωτή. Πληκτρολογήστε το πρόγραμμα, μία προς μία
|
||
γραμμή, <emphasis>πολύ προσεκτικά</emphasis>, καθώς
|
||
ο εκτυπωτής μπορεί να ερμηνεύει διαφορετικά την χρήση
|
||
χαρακτήρων όπως το backspace ή άλλων που παράγονται από
|
||
διάφορα πλήκτρα επεξεργασίας. Μπορεί επίσης να
|
||
χρειαστεί να πληκτρολογήσετε κάποιο ειδικό πλήκτρο
|
||
τερματισμού αρχείου για τον εκτυπωτή ώστε να γνωρίζει
|
||
πότε ολοκληρώνεται το πρόγραμμα. Για εκτυπωτές
|
||
&postscript;, πιέστε
|
||
<literal>CONTROL+D</literal>.</para>
|
||
|
||
<para>Εναλλακτικά, μπορείτε να τοποθετήσετε το πρόγραμμα
|
||
σε ένα αρχείο και να πληκτρολογήσετε:</para>
|
||
|
||
<screen>&prompt.user; <userinput>><replaceable>file</replaceable></userinput></screen>
|
||
|
||
<para>Όπου <replaceable>file</replaceable> είναι το
|
||
όνομα του αρχείου που περιέχει το πρόγραμμα. Αφού το
|
||
&man.tip.1; στείλει το αρχείο, πιέστε το κατάλληλο
|
||
πλήκτρο τερματισμού αρχείου, αν απαιτείται.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</step>
|
||
</procedure>
|
||
|
||
<para>Θα δείτε κάτι να εκτυπώνεται. Μην ανησυχείτε αν το
|
||
κείμενο δεν φαίνεται σωστό. Θα το διορθώσουμε αργότερα.</para>
|
||
</sect4>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-printcap">
|
||
<title>Ενεργοποίηση του Spooler: το Αρχείο
|
||
<filename>/etc/printcap</filename></title>
|
||
|
||
<para>Σε αυτό το σημείο, ο εκτυπωτής σας θα πρέπει να είναι
|
||
συνδεμένος, ο πυρήνας σας ρυθμισμένος να επικοινωνεί μαζί του
|
||
(αν χρειάζεται), και έχετε πετύχει να στείλετε κάποια δοκιμαστικά
|
||
δεδομένα στον εκτυπωτή. Είστε τώρα έτοιμοι να ρυθμίσετε το
|
||
<application>LPD</application> για να ελέγχετε την πρόσβαση
|
||
στον εκτυπωτή σας.</para>
|
||
|
||
<para>Μπορείτε να ρυθμίσετε το <application>LPD</application>
|
||
με επεξεργασία του αρχείου <filename>/etc/printcap</filename>.
|
||
Το σύστημα παροχέτευσης <application>LPD</application>
|
||
διαβάζει αυτό το αρχείο κάθε φορά που χρησιμοποιείται ο spooler,
|
||
επομένως πιθανές αναβαθμίσεις του μπαίνουν άμεσα σε εφαρμογή.</para>
|
||
|
||
<indexterm>
|
||
<primary>εκτυπωτές</primary>
|
||
<secondary>ικανότητες</secondary>
|
||
</indexterm>
|
||
<para>Είναι εύκολο να κατανοήσετε την μορφή του αρχείου
|
||
&man.printcap.5;. Χρησιμοποιήστε τον κειμενογράφο που προτιμάτε
|
||
για να κάνετε αλλαγές στο <filename>/etc/printcap</filename>. Η
|
||
μορφή του είναι παρόμοια με άλλα αρχεία περιγραφής δυνατοτήτων,
|
||
όπως τα <filename>/usr/share/misc/termcap</filename> και
|
||
<filename>/etc/remote</filename>. Δείτε την &man.cgetent.3;
|
||
για λεπτομερείς πληροφορίες σχετικά με την μορφή του αρχείου.</para>
|
||
|
||
<para>Η πιο απλή ρύθμιση του spooler αποτελείται από τα ακόλουθα
|
||
βήματα:</para>
|
||
|
||
<procedure>
|
||
<step>
|
||
<para>Επιλέξτε ένα όνομα (και λίγα βολικά παρωνύμια) για τον
|
||
εκτυπωτή, και τοποθετήστε τα στο αρχείο
|
||
<filename>/etc/printcap</filename>.
|
||
Δείτε την ενότητα <link
|
||
linkend="printing-naming">Ονοματοδότηση Εκτυπωτή</link> για
|
||
περισσότερες πληροφορίες σχετικά με την ονομασία των
|
||
εκτυπωτών.</para>
|
||
</step>
|
||
|
||
<indexterm><primary>σελίδες κεφαλίδας</primary></indexterm>
|
||
<step>
|
||
<para>Απενεργοποιήστε τις σελίδες κεφαλίδας (είναι ενεργές από
|
||
προεπιλογή) εισάγοντας την ικανότητα <literal>sh</literal>.
|
||
Για περισσότερες πληροφορίες δείτε την ενότητα <link
|
||
linkend="printing-no-header-pages">Παρεμπόδιση Σελίδων
|
||
Κεφαλίδας</link>.</para>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Δημιουργήστε ένα κατάλογο παροχέτευσης, και καθορίστε την
|
||
τοποθεσία του με την ικανότητα <literal>sd</literal>. Για
|
||
περισσότερες πληροφορίες δείτε την ενότητα <link
|
||
linkend="printing-spooldir">Δημιουργία Καταλόγου
|
||
Παροχέτευσης</link>.</para>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Καθορίστε την κατάλληλη καταχώριση
|
||
<filename class="devicefile">/dev</filename>
|
||
για τον εκτυπωτή, και σημειώστε τη στο
|
||
<filename>/etc/printcap</filename> με την ικανότητα
|
||
<literal>lp</literal>. Για περισσότερες πληροφορίες, δείτε την
|
||
ενότητα <link linkend="printing-device">Αναγνώριση της Συσκευής
|
||
Εκτύπωσης</link>. Επίσης, αν ο εκτυπωτής είναι σε σειριακή
|
||
θύρα, εγκαταστήστε τις παραμέτρους επικοινωνίας με την ικανότητα
|
||
<literal>ms#</literal> η οποία αναλύεται στην ενότητα <link
|
||
linkend="printing-commparam">Ρυθμίσεις Παραμέτρων Επικοινωνίας
|
||
του Spooler</link>.</para>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Εγκαταστήστε φίλτρα εισόδου απλού κειμένου. Δείτε την
|
||
ενότητα <link linkend="printing-textfilter">Εγκατάσταση Φίλτρου
|
||
Κειμένου</link> για περισσότερες πληροφορίες.</para>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Ελέγξτε την εγκατάσταση εκτυπώνοντας οτιδήποτε με την
|
||
εντολή &man.lpr.1;. Περισσότερες πληροφορίες είναι διαθέσιμες
|
||
στις ενότητες <link linkend="printing-trying">Δοκιμή του
|
||
Spooler</link> και <link linkend="printing-troubleshooting">Εντοπισμός Βλαβών</link>.</para>
|
||
</step>
|
||
</procedure>
|
||
|
||
<note>
|
||
<para>Εκτυπωτές που βασίζονται σε γλώσσες εκτύπωσης, όπως οι
|
||
εκτυπωτές &postscript;, δεν μπορούν να εκτυπώσουν άμεσα απλό
|
||
κείμενο. Ο απλός τρόπος ρύθμισης που δείξαμε παραπάνω και
|
||
που θα περιγράψουμε εκτενέστερα στις επόμενες ενότητες,
|
||
προϋποθέτει πως αν ρυθμίζετε έναν τέτοιο εκτυπωτή θα μπορείτε να
|
||
εκτυπώσετε μόνον αρχεία γραμμένα στη γλώσσα του.</para>
|
||
</note>
|
||
|
||
<para>Οι χρήστες συνήθως νομίζουν πως μπορούν να εκτυπώσουν απλό
|
||
κείμενο σε όλους τους εκτυπωτές που είναι εγκατεστημένοι στο
|
||
σύστημα τους. Τα προγράμματα που χρησιμοποιούν το
|
||
<application>LPD</application> για να εκτυπώσουν, κάνουν ακριβώς
|
||
την ίδια υπόθεση. Αν προσπαθείτε να εγκαταστήσετε έναν τέτοιο
|
||
εκτυπωτή και θέλετε να μπορείτε να τυπώνετε εργασίες στην γλώσσα
|
||
του εκτυπωτή αλλά <emphasis>και</emphasis> σε απλό κείμενο, σας
|
||
συνιστούμε να προσθέσετε ένα επιπλέον βήμα στην διαδικασία
|
||
εγκατάστασης που περιγράψαμε παραπάνω: Εγκαταστήστε ένα πρόγραμμα
|
||
αυτόματης μετατροπής από απλό κείμενο σε PostScript (ή σε άλλη
|
||
γλώσσα εκτυπωτή). Η ενότητα <link
|
||
linkend="printing-advanced-if-conversion">Συμβατότητα Εργασιών
|
||
Απλού Κειμένου σε εκτυπωτές &postscript;</link> εξηγεί πως να
|
||
ενεργήσετε.</para>
|
||
|
||
<sect4 id="printing-naming">
|
||
<title>Ονοματοδότηση Εκτυπωτή</title>
|
||
|
||
<para>Το πρώτο (εύκολο) βήμα είναι να επιλέξετε όνομα για τον
|
||
εκτυπωτή σας. Δεν έχει σημασία αν θα προτιμήσετε ένα λειτουργικό
|
||
ή κάποιο εξωτικό όνομα αφού μπορείτε επίσης να προσθέσετε και
|
||
μερικά παρωνύμια (aliases) για τον ίδιο εκτυπωτή.</para>
|
||
|
||
<para>Τουλάχιστον ένας από τους εκτυπωτές που αναφέρονται στο
|
||
<filename>/etc/printcap</filename> θα πρέπει να έχει το
|
||
παρωνύμιο <literal>lp</literal>. Αυτή είναι η ονομασία του
|
||
προεπιλεγμένου εκτυπωτή. Εάν οι χρήστες δεν έχουν την μεταβλητή
|
||
περιβάλλοντος <envar>PRINTER</envar> και δεν αναφέρουν κάποιο
|
||
όνομα εκτυπωτή στην γραμμή εντολών με οποιαδήποτε εντολή
|
||
<application>LPD</application>, τότε ο <literal>lp</literal> θα
|
||
είναι ο προεπιλεγμένος εκτυπωτής για τις εκτυπώσεις τους.</para>
|
||
|
||
<para>Επίσης, είναι κοινή πρακτική το τελευταίο alias του εκτυπωτή
|
||
να είναι μια πλήρης περιγραφή του εκτυπωτή, που να περιλαμβάνει
|
||
τον κατασκευαστή και το μοντέλο.</para>
|
||
|
||
<para>Αφού επιλέξετε μια ονομασία και μερικά συνήθη παρωνύμια,
|
||
καταχωρίστε τα στο αρχείο <filename>/etc/printcap</filename>.
|
||
Το όνομα του εκτυπωτή θα πρέπει να αναφέρεται πρώτο στο αριστερό
|
||
άκρο. Διαχωρίστε κάθε παρωνύμιο με μια κάθετη μπάρα και
|
||
τοποθετήστε μια άνω-κάτω τελεία μετά το τελευταίο
|
||
παρωνύμιο.</para>
|
||
|
||
<para>Στο ακόλουθο παράδειγμα, ξεκινάμε με ένα εντελώς βασικό
|
||
<filename>/etc/printcap</filename> που ορίζει δύο εκτυπωτές (έναν
|
||
εκτυπωτή γραμμής Diablo 630 και έναν εκτυπωτή &postscript; laser
|
||
Panasonic KX-P4455):</para>
|
||
|
||
<programlisting>#
|
||
# /etc/printcap for host rose
|
||
#
|
||
rattan|line|diablo|lp|Diablo 630 Line Printer:
|
||
|
||
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:</programlisting>
|
||
|
||
<para>Σε αυτό το παράδειγμα, ο πρώτος εκτυπωτής ονομάζεται
|
||
<literal>rattan</literal> και έχει ως παρωνύμια τα
|
||
<literal>line</literal>, <literal>diablo</literal>,
|
||
<literal>lp</literal>, και <literal>Diablo 630 Line
|
||
Printer</literal>. Από τη στιγμή που έχει το παρωνύμιο
|
||
<literal>lp</literal>, είναι και ο προεπιλεγμένος εκτυπωτής. Ο
|
||
δεύτερος ονομάζεται <literal>bamboo</literal>, και έχει ως
|
||
παρωνύμια τα <literal>ps</literal>, <literal>PS</literal>,
|
||
<literal>S</literal>, <literal>panasonic</literal>, και
|
||
<literal>Panasonic KX-P4455 PostScript v51.4</literal>.</para>
|
||
</sect4>
|
||
|
||
<sect4 id="printing-no-header-pages">
|
||
<title>Παρεμπόδιση Σελίδων Κεφαλίδας</title>
|
||
<indexterm>
|
||
<primary>printing</primary>
|
||
<secondary>header pages</secondary>
|
||
</indexterm>
|
||
|
||
<para>Το σύστημα παροχέτευσης <application>LPD</application>, από
|
||
προεπιλογή, εκτυπώνει μια <emphasis>σελίδα κεφαλίδας</emphasis>
|
||
για κάθε εργασία. Η σελίδα κεφαλίδας περιλαμβάνει το όνομα
|
||
χρήστη που αιτήθηκε την εργασία, τον υπολογιστή από τον οποίον
|
||
προήλθε η εργασία, και το όνομα της εργασίας, με μεγάλους όμορφους
|
||
χαρακτήρες. Δυστυχώς αυτό το πρόσθετο κείμενο ακολουθεί την
|
||
διαδικασία αποσφαλμάτωσης της εγκατάστασης ενός απλού εκτυπωτή,
|
||
επομένως θα παρεμποδίσουμε τις σελίδες κεφαλίδας.</para>
|
||
|
||
<para>Για την παρεμπόδιση των σελίδων κεφαλίδας, προσθέστε την
|
||
ικανότητα <literal>sh</literal> στην καταχώριση για τον εκτυπωτή
|
||
στο αρχείο <filename>/etc/printcap</filename>. Εδώ βλέπετε ένα
|
||
παράδειγμα του <filename>/etc/printcap</filename> με προσθήκη της
|
||
<literal>sh</literal>:</para>
|
||
|
||
<programlisting>#
|
||
# /etc/printcap for host rose - no header pages anywhere
|
||
#
|
||
rattan|line|diablo|lp|Diablo 630 Line Printer:\
|
||
:sh:
|
||
|
||
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
|
||
:sh:</programlisting>
|
||
|
||
<para>Παρατηρήστε πως χειριστήκαμε σωστά τη μορφή: η πρώτη
|
||
γραμμή ξεκινά στην αριστερή στήλη, και οι ακόλουθες γραμμές
|
||
είναι στοιχισμένες (indented). Κάθε γραμμή καταχώρισης (εκτός
|
||
από την τελευταία) τελειώνει με μια αριστερόστροφη κάθετο.</para>
|
||
</sect4>
|
||
|
||
<sect4 id="printing-spooldir">
|
||
<title>Δημιουργία Καταλόγου Παροχέτευσης</title>
|
||
<indexterm><primary>εκτυπωτής spool</primary></indexterm>
|
||
<indexterm><primary>εκτύπωση εργασίες</primary></indexterm>
|
||
|
||
<para>Το επόμενο βήμα στον απλό τρόπο εγκατάστασης είναι η
|
||
δημιουργία ενός
|
||
<emphasis>καταλόγου παροχέτευσης (spool)</emphasis>,
|
||
όπου θα φιλοξενούνται οι εργασίες εκτύπωσης έως ότου
|
||
να εκτυπωθούν και όπου επίσης φυλάσσονται και κάποια άλλα
|
||
βοηθητικά αρχεία του συστήματος εκτύπωσης.</para>
|
||
|
||
<para>Λόγω της μεταβαλλόμενης φύσης των καταλόγων παροχέτευσης,
|
||
συνηθίζεται να τοποθετούνται κάτω από τον κατάλογο
|
||
<filename class="directory">/var/spool</filename>. Δεν είναι
|
||
αναγκαίο να παίρνετε αντίγραφα ασφαλείας των καταλόγων
|
||
παροχέτευσης. Η επαναδημιουργία τους είναι τόσο απλή όσο να
|
||
τρέξουμε την εντολή &man.mkdir.1;.</para>
|
||
|
||
<para>Είναι επίσης συνηθισμένο να ονομάζεται ο κατάλογος με το ίδιο
|
||
όνομα με τον εκτυπωτή, όπως φαίνεται παρακάτω:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>mkdir <filename class="directory">/var/spool/<replaceable>printer-name</replaceable></filename></command></userinput></screen>
|
||
|
||
<para>Ωστόσο, αν έχετε αρκετούς εκτυπωτές στο δίκτυο, ίσως
|
||
επιθυμείτε να τοποθετήσετε τους καταλόγους παροχέτευσης κάτω από
|
||
ένα μοναδικό κατάλογο που θα χρησιμοποιείται αποκλειστικά για
|
||
εκτυπώσεις με το <application>LPD</application>. Θα κάνουμε
|
||
ακριβώς αυτό για τα παραδείγματα μας με τους εκτυπωτές
|
||
<literal>rattan</literal> και <literal>bamboo</literal>:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>mkdir <filename class="directory">/var/spool/lpd</filename></command></userinput>
|
||
&prompt.root; <userinput><command>mkdir <filename class="directory">/var/spool/lpd/rattan</filename></command></userinput>
|
||
&prompt.root; <userinput><command>mkdir <filename class="directory">/var/spool/lpd/bamboo</filename></command></userinput></screen>
|
||
|
||
<note>
|
||
<para>Εάν οι εργασίες των χρηστών περιέχουν προσωπικά δεδομένα,
|
||
μπορεί να θέλετε να προστατέψετε τον κατάλογο παροχέτευσης με
|
||
κάποιο τρόπο, ώστε να μην είναι δημόσια προσβάσιμος. Οι
|
||
κατάλογοι παροχέτευσης θα πρέπει να ανήκουν και να είναι
|
||
αναγνώσιμοι, εγγράψιμοι και με δυνατότητα αναζήτησης από τον
|
||
χρήστη daemon και από την ομάδα daemon, από κανέναν άλλο. Για
|
||
τους εκτυπωτές του παραδείγματος:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>chown daemon:daemon <filename class="directory">/var/spool/lpd/rattan</filename></command></userinput>
|
||
&prompt.root; <userinput><command>chown daemon:daemon <filename class="directory">/var/spool/lpd/bamboo</filename></command></userinput>
|
||
&prompt.root; <userinput><command>chmod 770 <filename class="directory">/var/spool/lpd/rattan</filename></command></userinput>
|
||
&prompt.root; <userinput><command>chmod 770 <filename class="directory">/var/spool/lpd/bamboo</filename></command></userinput></screen>
|
||
</note>
|
||
|
||
<para>Τέλος, πρέπει να ενημερώσετε το <application>LPD</application>
|
||
για αυτούς τους καταλόγους χρησιμοποιώντας το αρχείο
|
||
<filename>/etc/printcap</filename>. Προσδιορίστε την διαδρομή
|
||
του καταλόγου παροχέτευσης με την ικανότητα
|
||
<literal>sd</literal>:</para>
|
||
|
||
<programlisting>#
|
||
# /etc/printcap for host rose - added spooling directories
|
||
#
|
||
rattan|line|diablo|lp|Diablo 630 Line Printer:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:
|
||
|
||
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:</programlisting>
|
||
|
||
<para>Σημειώστε πως το όνομα του εκτυπωτή ξεκινά στην πρώτη στήλη,
|
||
ενώ όλες οι άλλες καταχωρίσεις που περιγράφουν τον εκτυπωτή θα
|
||
πρέπει να είναι στοιχισμένες και κάθε τέλος γραμμής να φέρει
|
||
χαρακτήρα διαφυγής με αριστερόστροφη κάθετο.</para>
|
||
|
||
<para>Εάν δεν προσδιορίσετε τον κατάλογο παροχέτευσης μέσω του
|
||
<literal>sd</literal>, τότε το σύστημα παροχέτευσης θα
|
||
χρησιμοποιήσει τον προεπιλεγμένο
|
||
<filename class="directory">/var/spool/lpd</filename>.</para>
|
||
</sect4>
|
||
|
||
<sect4 id="printing-device">
|
||
<title>Αναγνώριση της Συσκευής Εκτύπωσης</title>
|
||
|
||
<para>Στην ενότητα <link linkend="printing-hardware">Ρυθμίσεις
|
||
Hardware</link> αναγνωρίσαμε τη θύρα, και κατά συνέπεια την
|
||
καταχώριση του καταλόγου
|
||
<filename class="directory">/dev</filename> που θα
|
||
χρησιμοποιήσει το &os; για να επικοινωνήσει με τον εκτυπωτή.
|
||
Τώρα, θα δώσουμε στο <application>LPD</application> αυτή
|
||
την πληροφορία. Όταν το σύστημα παροχέτευσης έχει μια εργασία να
|
||
εκτυπώσει, θα ανοίξει αυτή την ειδική συσκευή για λογαριασμό του
|
||
προγράμματος φίλτρου (που είναι υπεύθυνο για το πέρασμα των
|
||
δεδομένων στον εκτυπωτή).</para>
|
||
|
||
<para>Προσδιορίστε την διαδρομή της καταχώρισης
|
||
<filename class="directory">/dev</filename> στο αρχείο
|
||
<filename>/etc/printcap</filename> χρησιμοποιώντας την ικανότητα
|
||
<literal>lp</literal>.</para>
|
||
|
||
<para>Στο τρέχον παράδειγμα μας, ας υποθέσουμε ότι ο
|
||
<literal>rattan</literal> είναι στην πρώτη παράλληλη θύρα, και ο
|
||
<literal>bamboo</literal> είναι στην έκτη σειριακή πόρτα. Οι νέες
|
||
καταχωρίσεις στο <filename>/etc/printcap</filename> θα
|
||
είναι:</para>
|
||
|
||
<programlisting>#
|
||
# /etc/printcap for host rose - identified what devices to use
|
||
#
|
||
rattan|line|diablo|lp|Diablo 630 Line Printer:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:\
|
||
:lp=<filename class="devicefile">/dev/lpt0</filename>:
|
||
|
||
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:\
|
||
:lp=<filename class="devicefile">/dev/ttyd5</filename>:</programlisting>
|
||
|
||
<para>Αν δεν καθορίσετε σε κάποιον εκτυπωτή την ικανότητα
|
||
<literal>lp</literal> στο αρχείο
|
||
<filename>/etc/printcap</filename>, το
|
||
<application>LPD</application> χρησιμοποιεί από προεπιλογή
|
||
το <filename class="devicefile">/dev/lp</filename>.
|
||
Το <filename class="devicefile">/dev/lp</filename>
|
||
δεν υπάρχει την δεδομένη στιγμή στο &os;.</para>
|
||
|
||
<para>Εάν ο εκτυπωτής που εγκαθιστάτε είναι συνδεδεμένος σε
|
||
παράλληλη θύρα, διαβάστε απευθείας την ενότητα με τίτλο
|
||
<link linkend="printing-textfilter">Εγκατάσταση Φίλτρου
|
||
Κειμένου</link>. Διαφορετικά, ακολουθήστε προσεκτικά τις
|
||
οδηγίες που ακολουθούν στην επόμενη ενότητα.</para>
|
||
</sect4>
|
||
|
||
<sect4 id="printing-commparam">
|
||
<title>Ρυθμίσεις Παραμέτρων Επικοινωνίας του Spooler</title>
|
||
<indexterm>
|
||
<primary>εκτυπωτές</primary>
|
||
<secondary>σειριακοί</secondary>
|
||
</indexterm>
|
||
|
||
<para>Για εκτυπωτές σε σειριακή πόρτα, το
|
||
<application>LPD</application> μπορεί να ρυθμίσει την
|
||
ταχύτητα σε bps, το parity, και άλλες παραμέτρους σειριακής
|
||
επικοινωνίας για λογαριασμό του προγράμματος φίλτρου που στέλνει
|
||
δεδομένα στον εκτυπωτή. Αυτό είναι πλεονέκτημα γιατί:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Σας επιτρέπει να δοκιμάσετε διάφορες παραμέτρους
|
||
επικοινωνίας προσθέτοντας τις απλά με επεξεργασία του αρχείου
|
||
<filename>/etc/printcap</filename>. Δεν χρειάζεται να
|
||
επαναμεταγλωττίσετε το πρόγραμμα φίλτρου.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Επιτρέπει στο σύστημα παροχέτευσης να χρησιμοποιεί το
|
||
ίδιο πρόγραμμα για πολλαπλούς εκτυπωτές, οι οποίοι μπορεί να
|
||
έχουν διαφορετικές σειριακές ρυθμίσεις επικοινωνίας.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Οι ακόλουθες ικανότητες του
|
||
<filename>/etc/printcap</filename> ελέγχουν τις παραμέτρους
|
||
σειριακής επικοινωνίας των συσκευών που αναφέρονται στην
|
||
ικανότητα <literal>lp</literal>:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>
|
||
<literal>br#<replaceable>bps-rate</replaceable></literal>
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>Ορίζει την ταχύτητα επικοινωνίας της συσκευής σε
|
||
<replaceable>bps-rate</replaceable>, όπου το
|
||
<replaceable>bps-rate</replaceable> μπορεί να είναι 50,
|
||
75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
|
||
9600, 19200, 38400, 57600, ή 115200 bits-per-second.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<literal>ms#<replaceable>stty-mode</replaceable></literal>
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>Ορίζει τις επιλογές της συσκευής τερματικού μετά το
|
||
άνοιγμα της συσκευής. Η &man.stty.1; εξηγεί τις διαθέσιμες
|
||
επιλογές.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<para>Όταν το <application>LPD</application> ανοίγει την συσκευή
|
||
που ορίζεται από την ικανότητα <literal>lp</literal>, υιοθετεί τα
|
||
χαρακτηριστικά της συσκευής με ικανότητα <literal>ms#</literal>.
|
||
Έχουν ιδιαίτερο ενδιαφέρον οι καταστάσεις λειτουργίας
|
||
<literal>parenb</literal>, <literal>parodd</literal>,
|
||
<literal>cs5</literal>, <literal>cs6</literal>,
|
||
<literal>cs7</literal>, <literal>cs8</literal>,
|
||
<literal>cstopb</literal>, <literal>crtscts</literal>, και
|
||
<literal>ixon</literal>, που εξηγούνται στην σελίδα βοηθείας
|
||
&man.stty.1;.</para>
|
||
|
||
<para>Ας προσθέσουμε στο παράδειγμα μας έναν εκτυπωτή στην έκτη
|
||
σειριακή θύρα. Θα θέσουμε την ταχύτητα bps σε 38400. Για την
|
||
κατάσταση λειτουργίας θα θέσουμε , no parity με
|
||
<literal>-parenb</literal>, χαρακτήρες 8-bit με
|
||
<literal>cs8</literal>, no modem control με
|
||
<literal>clocal</literal> και έλεγχο ροής μέσω hardware με
|
||
<literal>crtscts</literal>:</para>
|
||
|
||
<programlisting>bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:\
|
||
:lp=<filename class="devicefile">/dev/ttyd5</filename>:ms#-parenb cs8 clocal crtscts:</programlisting>
|
||
</sect4>
|
||
|
||
<sect4 id="printing-textfilter">
|
||
<title>Εγκατάσταση Φίλτρου Κειμένου</title>
|
||
<indexterm>
|
||
<primary>εκτύπωση</primary>
|
||
<secondary>φίλτρα</secondary>
|
||
</indexterm>
|
||
|
||
<para>Τώρα είμαστε έτοιμοι να πούμε στο
|
||
<application>LPD</application> ποιο φίλτρο κειμένου να
|
||
χρησιμοποιήσει για να στείλει εργασίες στον εκτυπωτή. Το φίλτρο
|
||
κειμένου, γνωστό και ως <emphasis>φίλτρο εισόδου</emphasis>,
|
||
είναι ένα πρόγραμμα που εκτελεί το <application>LPD</application>
|
||
όταν υπάρχει εργασία προς εκτύπωση. Όταν το
|
||
<application>LPD</application> εκτελεί το φίλτρο κειμένου για
|
||
κάποιον εκτυπωτή, θέτει την standard input του φίλτρου στην
|
||
εργασία εκτύπωσης, και την standard output στην συσκευή του
|
||
εκτυπωτή που ορίζεται με την ικανότητα <literal>lp</literal>.
|
||
Το φίλτρο αναμένεται να αναγνώσει την εργασία από την standard
|
||
input, να εκτελέσει όλες τις απαραίτητες μεταγλωττίσεις για τον
|
||
εκτυπωτή, και να γράψει το αποτέλεσμα στην standard output, το
|
||
οποίο και θα εκτυπωθεί. Για περισσότερες πληροφορίες για τα
|
||
φίλτρα κειμένου, δείτε την ενότητα
|
||
<link linkend="printing-advanced-filters">Φίλτρα</link>.</para>
|
||
|
||
<para>Για την απλή εγκατάσταση των εκτυπωτών μας, το φίλτρο κειμένου
|
||
μπορεί να είναι ένα μικρό shell script που απλά θα εκτελεί την
|
||
εντολή <command>/bin/cat</command> για να στέλνει εργασίες στον
|
||
εκτυπωτή. Το &os; έρχεται με άλλο ένα φίλτρο, το
|
||
<filename>lpf</filename> που χειρίζεται δυνατότητες backspacing
|
||
και υπογράμμισης για εκτυπωτές που ίσως να μην χειρίζονται σωστά
|
||
αυτές τις λειτουργίες. Και φυσικά, μπορείτε να χρησιμοποιήσετε
|
||
οποιοδήποτε άλλο πρόγραμμα φίλτρου επιθυμείτε. Το φίλτρο
|
||
<command>lpf</command> περιγράφεται λεπτομερώς στην ενότητα
|
||
<link linkend="printing-advanced-lpf">lpf: ένα Φίλτρο Κειμένου</link>.</para>
|
||
|
||
<para>Θα ξεκινήσουμε δημιουργώντας το shell script
|
||
<filename>/usr/local/libexec/if-simple</filename> σαν ένα απλό
|
||
φίλτρο κειμένου. Τοποθετήστε το ακόλουθο κείμενο στο αρχείο
|
||
χρησιμοποιώντας τον κειμενογράφο που προτιμάτε:</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# if-simple - Simple text input filter for lpd
|
||
# Installed in /usr/local/libexec/if-simple
|
||
#
|
||
# Simply copies stdin to stdout. Ignores all filter arguments.
|
||
|
||
/bin/cat && exit 0
|
||
exit 2</programlisting>
|
||
|
||
<para>Κάντε το αρχείο εκτελέσιμο:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>chmod 555 <filename>/usr/local/libexec/if-simple</filename></command></userinput></screen>
|
||
|
||
<para>Και ενημερώστε το LPD να το χρησιμοποιήσει, ορίζοντας το με
|
||
την ικανότητα <literal>if</literal> στο αρχείο
|
||
<filename>/etc/printcap</filename>. Θα το προσθέσουμε στους δύο
|
||
εκτυπωτές από το προηγούμενο παράδειγμα στο
|
||
<filename>/etc/printcap</filename>:</para>
|
||
|
||
<programlisting>#
|
||
# /etc/printcap for host rose - added text filter
|
||
#
|
||
rattan|line|diablo|lp|Diablo 630 Line Printer:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:\
|
||
:lp=<filename class="devicefile">/dev/lpt0</filename>:\
|
||
:if=<filename>/usr/local/libexec/if-simple</filename>:
|
||
|
||
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:\
|
||
:lp=<filename class="devicefile">/dev/ttyd5</filename>:ms#-parenb cs8 clocal crtscts:\
|
||
:if=<filename>/usr/local/libexec/if-simple</filename>:</programlisting>
|
||
|
||
<note>
|
||
<para>Μπορείτε να βρείτε ένα αντίγραφο του script
|
||
<filename>if-simple</filename> στον κατάλογο
|
||
<filename class="directory">/usr/share/examples/printing</filename>.</para>
|
||
</note>
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Ενεργοποίηση του <application>LPD</application></title>
|
||
|
||
<para>Το &man.lpd.8; εκτελείται από το
|
||
<filename>/etc/rc</filename>, και ελέγχεται από την μεταβλητή
|
||
<literal>lpd_enable</literal>. Η μεταβλητή αυτή έχει
|
||
προεπιλεγμένη τιμή <literal>NO</literal>. Αν δεν το έχετε κάνει
|
||
ακόμα, προσθέστε την ακόλουθη γραμμή:</para>
|
||
|
||
<programlisting>lpd_enable="YES"</programlisting>
|
||
|
||
<para>στο αρχείο <filename>/etc/rc.conf</filename>, και
|
||
επανεκκινήστε το σύστημα σας, ή απλά εκτελέστε το
|
||
&man.lpd.8;.</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>lpd</command></userinput></screen>
|
||
</sect4>
|
||
|
||
<sect4 id="printing-trying">
|
||
<title>Δοκιμή του Spooler</title>
|
||
|
||
<para>Φτάσατε στο τέλος της απλής εγκατάστασης του
|
||
<application>LPD</application>. Θα αφήσουμε για αργότερα τα
|
||
συγχαρητήρια, αφού ακόμη θα πρέπει να ελέγξουμε την εγκατάσταση
|
||
και να διορθώσουμε οποιοδήποτε πρόβλημα έχει προκύψει. Για να
|
||
ελέγξετε την εγκατάσταση προσπαθήστε να εκτυπώσετε κάτι. Για να
|
||
εκτυπώσετε με το σύστημα <application>LPD</application>,
|
||
χρησιμοποιήστε την εντολή &man.lpr.1;, η οποία αποστέλλει μία
|
||
εργασία προς εκτύπωση.</para>
|
||
|
||
<para>Μπορείτε να συνδυάσετε την &man.lpr.1; με το πρόγραμμα
|
||
&man.lptest.1;, για το οποίο κάναμε μια εισαγωγή στην ενότητα
|
||
<link linkend="printing-testing">Έλεγχος Επικοινωνίας του
|
||
Εκτυπωτή</link>, για τον έλεγχο κειμένου.</para>
|
||
|
||
<para><emphasis>Για τον έλεγχο μιας απλής εγκατάστασης
|
||
<application>LPD</application>:</emphasis></para>
|
||
|
||
<para>Πληκτρολογήστε:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>lptest 20 5 | lpr <option>-P</option><replaceable>printer-name</replaceable></command></userinput></screen>
|
||
|
||
<para>Όπου <replaceable>printer-name</replaceable> είναι το όνομα
|
||
ενός εκτυπωτή (ή το alias) που αναφέρεται στο
|
||
<filename>/etc/printcap</filename>. Για να ελέγξετε τον
|
||
προεπιλεγμένο εκτυπωτή, πληκτρολογήστε &man.lpr.1; χωρίς το
|
||
πρόθεμα <option>-P</option>. Αν ο εκτυπωτής σας χρησιμοποιεί
|
||
&postscript;, πρέπει να στείλετε ένα πρόγραμμα &postscript;,
|
||
αντί να χρησιμοποιήσετε το &man.lptest.1;. Για να τα καταφέρετε,
|
||
τοποθετήστε το πρόγραμμα σε ένα αρχείο και πληκτρολογήστε
|
||
<command>lpr <replaceable>file</replaceable></command>.</para>
|
||
|
||
<para>Σε έναν εκτυπωτή &postscript;, η εκτύπωση θα είναι το
|
||
αποτέλεσμα του προγράμματος που στείλατε. Αν χρησιμοποιείτε το
|
||
&man.lptest.1;, τότε το αποτέλεσμα θα μοιάζει με το
|
||
ακόλουθο:</para>
|
||
|
||
<screen>!"#$%&'()*+,-./01234
|
||
"#$%&'()*+,-./012345
|
||
#$%&'()*+,-./0123456
|
||
$%&'()*+,-./01234567
|
||
%&'()*+,-./012345678</screen>
|
||
|
||
<para>Για περαιτέρω έλεγχο του εκτυπωτή, δοκιμάστε να κατεβάσετε
|
||
μεγαλύτερα προγράμματα (για εκτυπωτές που χρησιμοποιούν γλώσσα
|
||
προγραμματισμού) ή τρέξτε το &man.lptest.1; με διαφορετικά
|
||
προθέματα. Για παράδειγμα, η εντολή
|
||
<command>lptest 80 60</command> θα παράγει 60 γραμμές των 80
|
||
χαρακτήρων η καθεμία.</para>
|
||
|
||
<para>Αν ο εκτυπωτής δεν δουλεύει, δείτε την ενότητα <link
|
||
linkend="printing-troubleshooting">Εντοπισμός Βλαβών</link>.</para>
|
||
</sect4>
|
||
</sect3>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="printing-advanced">
|
||
<title>Ρυθμίσεις Εκτυπωτών για Προχωρημένους</title>
|
||
|
||
<para>Αυτή η ενότητα περιγράφει φίλτρα για την εκτύπωση ειδικής μορφής
|
||
αρχείων, σελίδων κεφαλίδας, για εκτυπώσεις μέσω δικτύου, καθώς και για
|
||
τον έλεγχο πρόσβασης και την καταμέτρηση χρήσης των εκτυπωτών.</para>
|
||
|
||
<sect2 id="printing-advanced-filter-intro">
|
||
<title>Φίλτρα</title>
|
||
<indexterm>
|
||
<primary>εκτύπωση</primary>
|
||
<secondary>φίλτρα</secondary>
|
||
</indexterm>
|
||
|
||
<para>Αν και το <application>LPD</application> μπορεί να χειριστεί
|
||
πρωτόκολλα δικτύων, λίστες αναμονής, έλεγχο πρόσβασης, και άλλες
|
||
παραμέτρους των εκτυπώσεων, το κύριο μέρος της
|
||
<emphasis>πραγματικής</emphasis> εργασίας γίνεται με τα
|
||
<emphasis>φίλτρα</emphasis>. Τα φίλτρα είναι προγράμματα που
|
||
επικοινωνούν με τον εκτυπωτή και χειρίζονται τις εξαρτήσεις της
|
||
συσκευής και άλλες ειδικές απαιτήσεις της. Στην απλή εγκατάσταση
|
||
εκτυπωτή, εγκαταστήσαμε ένα φίλτρο απλού κειμένου ιδιαίτερα
|
||
απλής μορφής, που θα πρέπει να δουλεύει με τους περισσότερους
|
||
εκτυπωτές (ενότητα <link
|
||
linkend="printing-textfilter">Εγκατάσταση Φίλτρου Κειμένου</link>).</para>
|
||
|
||
<para>Ωστόσο, για να μπορέσετε να εκμεταλλευτείτε τις δυνατότητες
|
||
μετατροπών μορφής, ελέγχου πρόσβασης και καταμέτρησης, και τυχόν
|
||
ειδικές δυνατότητες του εκτυπωτή σας, θα πρέπει να καταλάβετε πως
|
||
δουλεύουν τα φίλτρα. Σε τελική ανάλυση, θα είναι ευθύνη των φίλτρων
|
||
να χειρίζονται όλες αυτές τις παραμέτρους. Τα κακά νέα είναι πως τις
|
||
περισσότερες φορές θα πρέπει να παρέχετε
|
||
<emphasis>εσείς οι ίδιοι </emphasis> τα φίλτρα σας. Τα καλά νέα είναι
|
||
πως γενικώς υπάρχουν αρκετά διαθέσιμα, και αν δεν υπάρχουν, είναι
|
||
σχετικά εύκολο να τα γράψετε.</para>
|
||
|
||
<para>Επίσης, το &os; διατίθεται με ένα φίλτρο, το
|
||
<filename>/usr/libexec/lpr/lpf</filename>, που δουλεύει με πολλούς
|
||
εκτυπωτές που μπορούν να εκτυπώσουν απλό κείμενο. (Χειρίζεται
|
||
backspacing και tabs στο αρχείο, και κάνει καταμέτρηση, αλλά
|
||
τίποτα περισσότερο.) Υπάρχουν, επίσης, διάφορα άλλα φίλτρα και
|
||
συστατικά τους στην Συλλογή των Ports του &os;.</para>
|
||
|
||
<para>Σε αυτή την ενότητα θα βρείτε: :</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Η ενότητα <link linkend="printing-advanced-filters">Πως
|
||
δουλεύουν τα Φίλτρα</link>, προσπαθεί να δώσει μια γενική άποψη
|
||
για τις αρμοδιότητες των φίλτρων στις διεργασίες εκτύπωσης. Θα
|
||
πρέπει να διαβάσετε αυτή την ενότητα για να μπορείτε να καταλάβετε
|
||
τι <quote>πραγματικά</quote> συμβαίνει όταν το
|
||
<application>LPD</application> χρησιμοποιεί φίλτρα. Αυτές οι
|
||
γνώσεις θα σας βοηθήσουν να προλαμβάνετε και να αποσφαλματώνετε
|
||
προβλήματα που μπορούν να συμβούν καθώς εγκαθιστάτε όλο και
|
||
περισσότερα φίλτρα σε κάθε εκτυπωτή σας.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Το <application>LPD</application> αναμένει πως κάθε
|
||
εκτυπωτής είναι ικανός, από προεπιλογή, να εκτυπώσει απλό
|
||
κείμενο. Αυτό όμως είναι πρόβλημα για εκτυπωτές &postscript;
|
||
(ή άλλους που βασίζονται σε γλώσσες προγραμματισμού) οι οποίοι
|
||
δεν μπορούν να εκτυπώσουν άμεσα απλό κείμενο. Η ενότητα <link
|
||
linkend="printing-advanced-if-conversion">Συμβατότητα Εργασιών
|
||
Απλού Κειμένου σε εκτυπωτές &postscript;</link> σας εξηγεί τι θα
|
||
πρέπει να κάνετε για να ξεπεράσετε αυτό το πρόβλημα. Θα πρέπει
|
||
να διαβάσετε αυτή την ενότητα αν έχετε εκτυπωτή
|
||
&postscript;.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Το &postscript; είναι δημοφιλής μορφή εξόδου για πολλά
|
||
προγράμματα. Μερικοί άνθρωποι προτιμούν και να γράφουν κατευθείαν
|
||
σε κώδικα &postscript;. Δυστυχώς, οι εκτυπωτές &postscript;
|
||
έχουν μεγάλο κόστος. Η ενότητα <link
|
||
linkend="printing-advanced-ps">Προσομοίωση &postscript; για
|
||
εκτυπωτές που δεν το υποστηρίζουν</link> εξηγεί λεπτομερώς πως
|
||
να μετατρέψετε ένα φίλτρο κειμένου για εκτυπωτές ώστε να λαμβάνει
|
||
και να τυπώνει δεδομένα &postscript; σε εκτυπωτές που
|
||
<emphasis>δεν είναι &postscript;</emphasis>. Θα πρέπει να
|
||
διαβάσετε αυτήν την ενότητα αν είστε κάτοχος εκτυπωτή που δεν
|
||
υποστηρίζει &postscript;.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Η ενότητα <link
|
||
linkend="printing-advanced-convfilters">Φίλτρα Μετατροπής</link>
|
||
περιγράφει μια αυτοματοποιημένη διαδικασία για την μετατροπή
|
||
αρχείων ειδικής μορφής, όπως δεδομένα γραφικών ή στοιχειοθεσίας,
|
||
σε μια μορφή κατανοητή από τον εκτυπωτή σας. Μετά την ανάγνωση
|
||
αυτής της ενότητας, θα πρέπει να είστε σε θέση να ρυθμίσετε τους
|
||
εκτυπωτές σας με τέτοιο τρόπο ώστε πληκτρολογώντας
|
||
<command>lpr <option>-t</option></command> οι χρήστες σας να
|
||
μπορούν να εκτυπώσουν δεδομένα troff, ή με
|
||
<command>lpr <option>-d</option></command> δεδομένα &tex;
|
||
DVI, ή με <command>lpr <option>-v</option></command> να
|
||
εκτυπώνουν εικόνες δεδομένων ράστερ, και ούτω καθεξής. Σας
|
||
συμβουλεύουμε να διαβάσετε αυτή την ενότητα.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Η ενότητα <link linkend="printing-advanced-of">Φίλτρα
|
||
Εξόδου</link> περιγράφει ένα χαρακτηριστικό του
|
||
<application>LPD</application> που δεν χρησιμοποιείται συχνά: τα
|
||
φίλτρα εξόδου. Μπορείτε να προσπεράσετε αυτή την ενότητα, εκτός
|
||
αν τυπώνετε σελίδες κεφαλίδας (δείτε τις <link
|
||
linkend="printing-advanced-header-pages">Σελίδες Κεφαλίδας</link>).</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Η ενότητα <link linkend="printing-advanced-lpf">lpf: ένα
|
||
Φίλτρο Κειμένου</link> περιγράφει το <command>lpf</command>, ένα
|
||
πραγματικά πλήρες, αν και απλό, φίλτρο κειμένου για εκτυπωτές
|
||
γραμμής (και εκτυπωτές laser που μπορούν να λειτουργήσουν και ως
|
||
εκτυπωτές γραμμής) που περιέχεται στο &os;. Αν χρειάζεστε ένα
|
||
γρήγορο τρόπο για να κάνετε την καταμέτρηση σελίδων να δουλεύει
|
||
σε απλό κείμενο, ή αν έχετε κάποιον εκτυπωτή που βγάζει καπνούς
|
||
όταν βλέπει χαρακτήρες backspace, θα πρέπει οπωσδήποτε να
|
||
εξετάσετε την περίπτωση του <command>lpf</command>.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<note>
|
||
<para>Μπορείτε να βρείτε αντίγραφο των διάφορων scripts που
|
||
αναφέρονται παρακάτω, στον κατάλογο <filename
|
||
class="directory">/usr/share/examples/printing</filename>.</para>
|
||
</note>
|
||
|
||
<sect3 id="printing-advanced-filters">
|
||
<title>Πως Δουλεύουν τα Φίλτρα</title>
|
||
|
||
<para>Όπως αναφέραμε προηγουμένως, φίλτρο είναι ένα εκτελέσιμο
|
||
πρόγραμμα που ενεργοποιείται από το <application>LPD</application>
|
||
για να χειρίζεται το τμήμα της επικοινωνίας με τον εκτυπωτή που
|
||
εξαρτάται από τον τύπο της ίδιας της συσκευής.</para>
|
||
|
||
<para>Όταν το <application>LPD</application> θέλει να εκτυπώσει ένα
|
||
αρχείο μιας εργασίας, ξεκινά το πρόγραμμα του φίλτρου. Θέτει ως
|
||
standard input του φίλτρου το αρχείο που πρέπει να εκτυπωθεί, ως
|
||
standard output τον ίδιο τον εκτυπωτή και ως standard error το
|
||
αρχείο αναφοράς σφαλμάτων (αναφέρεται στην ικανότητα
|
||
<literal>lf</literal> του <filename>/etc/printcap</filename>, ή από
|
||
προεπιλογή το <filename class="devicefile">/dev/console</filename>).</para>
|
||
|
||
<indexterm>
|
||
<primary><command>troff</command></primary>
|
||
</indexterm>
|
||
<para>Το φίλτρο που θα ξεκινήσει το <application>LPD</application>
|
||
καθώς και οι παράμετροι του φίλτρου, εξαρτώνται από το τι έχετε
|
||
δηλώσει στο αρχείο <filename>/etc/printcap</filename> και από το τι
|
||
παραμέτρους έχει καθορίσει ο ίδιος ο χρήστης για την εργασία με
|
||
την γραμμή εντολής &man.lpr.1;. Για παράδειγμα, αν ο χρήστης
|
||
πληκτρολογήσει <command>lpr <option>-t</option></command>, το
|
||
<application>LPD</application> θα ξεκινήσει το φίλτρο troff, που
|
||
υποδηλώνεται με την ικανότητα <literal>tf</literal> για τον
|
||
εκτυπωτή προορισμού. Αν ο χρήστης επιθυμεί να εκτυπώσει απλό
|
||
κείμενο, θα ξεκινήσει το φίλτρο <literal>if</literal>
|
||
(αυτό πράγματι ισχύει τις περισσότερες φορές: δείτε τα <link
|
||
linkend="printing-advanced-of">Φίλτρα Εξόδου</link> για
|
||
λεπτομέρειες).</para>
|
||
|
||
<para>Υπάρχουν τρεις τύποι φίλτρων που μπορείτε να προσδιορίσετε στο
|
||
<filename>/etc/printcap</filename>:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Το <emphasis>φίλτρο κειμένου</emphasis>, επονομαζόμενο και
|
||
ως <emphasis>φίλτρο εισόδου</emphasis> στην τεκμηρίωση του
|
||
<application>LPD</application>, χειρίζεται εκτυπώσεις κανονικού
|
||
κειμένου. Θεωρήστε το ως το προεπιλεγμένο φίλτρο. Το
|
||
<application>LPD</application> αναμένει πως όλοι οι εκτυπωτές,
|
||
από προεπιλογή, είναι σε θέση να εκτυπώσουν απλό κείμενο, και
|
||
είναι δουλειά του φίλτρου κειμένου να βεβαιωθεί ότι τα
|
||
backspaces, τα tabs, και όλοι οι άλλοι ειδικοί χαρακτήρες
|
||
δεν πρόκειται να προβληματίσουν τον εκτυπωτή. Εάν βρίσκεστε σε
|
||
ένα περιβάλλον όπου θα πρέπει να καταμετρήσετε την χρήση των
|
||
εκτυπωτών, το φίλτρο κειμένου θα πρέπει επίσης να καταμετρήσει
|
||
τις εκτυπωμένες σελίδες, συνήθως μετρώντας τον αριθμό των
|
||
εκτυπωμένων γραμμών και συγκρίνοντας τον με τον αριθμό των
|
||
γραμμών που υποστηρίζει ο εκτυπωτής ανά σελίδα. Το φίλτρο
|
||
κειμένου ξεκινά με την ακόλουθη λίστα παραμέτρων:
|
||
<cmdsynopsis>
|
||
<command>filter-name</command>
|
||
<arg>-c</arg>
|
||
<arg choice="plain">-w<replaceable>width</replaceable></arg>
|
||
<arg choice="plain">-l<replaceable>length</replaceable></arg>
|
||
<arg choice="plain">-i<replaceable>indent</replaceable></arg>
|
||
<arg choice="plain">-n <replaceable>login</replaceable></arg>
|
||
<arg choice="plain">-h <replaceable>host</replaceable></arg>
|
||
<arg choice="plain"><replaceable>acct-file</replaceable></arg>
|
||
</cmdsynopsis>
|
||
|
||
όπου
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>-c</option></term>
|
||
|
||
<listitem>
|
||
<para>εμφανίζεται αν η εργασία έχει αποσταλεί με
|
||
<command>lpr <option>-l</option></command></para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><replaceable>width</replaceable></term>
|
||
|
||
<listitem>
|
||
<para>είναι η τιμή από την ικανότητα <literal>pw</literal>
|
||
(πλάτος σελίδας - page width) όπως προσδιορίζεται στο
|
||
<filename>/etc/printcap</filename>, με προεπιλεγμένη
|
||
τιμή το 132</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><replaceable>length</replaceable></term>
|
||
|
||
<listitem>
|
||
<para>είναι η τιμή από την ικανότητα <literal>pl</literal>
|
||
(μήκος σελίδας - page length), με προεπιλεγμένη τιμή
|
||
το 66</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><replaceable>indent</replaceable></term>
|
||
|
||
<listitem>
|
||
<para>είναι το μέγεθος της εσοχής (indentation) από το
|
||
<command>lpr <option>-i</option></command>, με
|
||
προεπιλεγμένη τιμή 0</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><replaceable>login</replaceable></term>
|
||
|
||
<listitem>
|
||
<para>είναι το καταγεγραμμένο όνομα χρήστη που εκτυπώνει
|
||
το αρχείο</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><replaceable>host</replaceable></term>
|
||
|
||
<listitem>
|
||
<para>είναι το όνομα του υπολογιστή από τον οποίο
|
||
στάλθηκε η εργασία</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><replaceable>acct-file</replaceable></term>
|
||
|
||
<listitem>
|
||
<para>είναι το όνομα του αρχείου καταμέτρησης από την
|
||
ικανότητα <literal>af</literal>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
</listitem>
|
||
|
||
<indexterm>
|
||
<primary>εκτυπώσεις</primary>
|
||
<secondary>φίλτρα</secondary>
|
||
</indexterm>
|
||
<listitem>
|
||
<para>Ένα <emphasis>φίλτρο μετατροπής</emphasis> μετατρέπει ένα
|
||
αρχείο ειδικής μορφής σε ένα τύπο αρχείου κατάλληλο για εκτύπωση
|
||
από τον συγκεκριμένο εκτυπωτή. Για παράδειγμα, τα δεδομένα
|
||
στοιχειοθεσίας ditroff δεν μπορούν να εκτυπωθούν κατευθείαν,
|
||
αλλά μπορείτε να εγκαταστήσετε ένα φίλτρο μετατροπής αρχείων
|
||
ditroff, ώστε να μετατρέψετε τα δεδομένα ditroff σε μια
|
||
μορφή που ο εκτυπωτής να μπορεί να αφομοιώσει και να τυπώσει.
|
||
Θα μάθετε περισσότερα στην ενότητα <link
|
||
linkend="printing-advanced-convfilters">Φϊλτρα Μετατροπής</link>.
|
||
Τα φίλτρα μετατροπής επίσης χρειάζονται για να κάνετε
|
||
αρίθμηση/καταμέτρηση, αν χρειάζεστε καταμέτρηση των εκτυπώσεων
|
||
σας. Τα φίλτρα μετατροπής ξεκινούν με τις ακόλουθες
|
||
παραμέτρους:
|
||
|
||
<cmdsynopsis>
|
||
<command>filter-name</command>
|
||
<arg choice="plain">-x<replaceable>pixel-width</replaceable></arg>
|
||
<arg choice="plain">-y<replaceable>pixel-height</replaceable></arg>
|
||
<arg choice="plain">-n <replaceable>login</replaceable></arg>
|
||
<arg choice="plain">-h <replaceable>host</replaceable></arg>
|
||
<arg choice="plain"><replaceable>acct-file</replaceable></arg>
|
||
</cmdsynopsis>
|
||
|
||
όπου <replaceable>pixel-width</replaceable> είναι η τιμή από την
|
||
ικανότητα <literal>px</literal> (προεπιλεγμένη τιμή 0) και
|
||
<replaceable>pixel-height</replaceable> είναι η τιμή από την
|
||
ικανότητα <literal>py</literal> (προεπιλεγμένη τιμή 0).</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Το <emphasis>φίλτρο εξόδου</emphasis> χρησιμοποιείται μόνον
|
||
αν δεν υπάρχει φίλτρο κειμένου, ή αν είναι ενεργοποιημένες οι
|
||
σελίδες κεφαλίδας. Διαβάστε τη σχετική ενότητα <link
|
||
linkend="printing-advanced-of">Φίλτρα Εξόδου</link>, αν και
|
||
από την εμπειρία μας μπορούμε να σας πούμε ότι χρησιμοποιούνται
|
||
σπάνια. Υπάρχουν μόνο δύο παράμετροι για τα φίλτρα εξόδου:
|
||
|
||
<cmdsynopsis>
|
||
<command>filter-name</command>
|
||
<arg choice="plain">-w<replaceable>width</replaceable></arg>
|
||
<arg choice="plain">-l<replaceable>length</replaceable></arg>
|
||
</cmdsynopsis>
|
||
|
||
οι οποίες είναι πανομοιότυπες με τις παραμέτρους
|
||
<option>-w</option> και <option>-l</option> των φίλτρων
|
||
κειμένου.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Τα φίλτρα θα πρέπει επίσης να <emphasis>τερματίζουν</emphasis>
|
||
με κάποια από τις ακόλουθες καταστάσεις εξόδου:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>exit 0</term>
|
||
|
||
<listitem>
|
||
<para>Αν το φίλτρο τύπωσε επιτυχώς το αρχείο.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>exit 1</term>
|
||
|
||
<listitem>
|
||
<para>Αν το φίλτρο απέτυχε να τυπώσει το αρχείο, αλλά θέλει το
|
||
<application>LPD</application> να προσπαθήσει να εκτυπώσει
|
||
το αρχείο ξανά. Το <application>LPD</application> θα
|
||
ξεκινήσει ξανά το φίλτρο αν γίνει έξοδος με αυτή την
|
||
κατάσταση.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>exit 2</term>
|
||
|
||
<listitem>
|
||
<para>Αν το φίλτρο απέτυχε να εκτυπώσει το αρχείο και δεν θέλει
|
||
το <application>LPD</application> να προσπαθήσει ξανά. Το
|
||
<application>LPD</application> θα απορρίψει το αρχείο.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<para>Το φίλτρο κειμένου που έρχεται με την κανονική έκδοση του
|
||
&os;, <filename>/usr/libexec/lpr/lpf</filename>, εκμεταλλεύεται τις
|
||
παραμέτρους πλάτους και μήκους σελίδας για να προσδιορίσει πότε να
|
||
αποστείλει το form feed και πως να κάνει καταμέτρηση. Χρησιμοποιεί
|
||
τις παραμέτρους για login, host, και αρχείου καταμέτρησης για να
|
||
δημιουργήσει τις σχετικές εγγραφές καταμέτρησης.</para>
|
||
|
||
<para>Αν είστε στη διαδικασία επιλογής φίλτρων, ελέγξτε αν είναι
|
||
συμβατά με το <application>LPD</application>. Αν είναι συμβατά,
|
||
τότε πρέπει να υποστηρίζουν την λίστα παραμέτρων που περιγράψαμε
|
||
προηγουμένως. Αν σχεδιάζετε να γράψατε τα δικά σας φίλτρα γενικής
|
||
χρήσης, τότε πρέπει να τα κάνετε να υποστηρίζουν την ίδια λίστα
|
||
παραμέτρων και κωδικών εξόδου.</para>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-advanced-if-conversion">
|
||
<title>Συμβατότητα Εργασιών Απλού Κειμένου σε Εκτυπωτές
|
||
&postscript;</title>
|
||
<indexterm><primary>εκτύπωση εργασιών</primary></indexterm>
|
||
|
||
<para>Αν είστε ο μοναδικός χρήστης του Η/Υ σας και του εκτυπωτή
|
||
&postscript; (ή άλλης γλώσσας εκτυπωτών), και είστε σίγουροι πως δεν
|
||
πρόκειται να στείλετε ποτέ εκτυπώσεις απλού κειμένου στον εκτυπωτή
|
||
σας και πως δεν θα χρησιμοποιήσετε τις υπηρεσίες των διαφόρων
|
||
προγραμμάτων σας που θα θελήσουν να στείλουν απλό κείμενο στον
|
||
εκτυπωτή σας, τότε δεν χρειάζεται να ασχοληθείτε καθόλου με αυτή την
|
||
ενότητα.</para>
|
||
|
||
<para>Αλλά, αν επιθυμείτε να στείλετε τόσο εργασίες &postscript; όσο
|
||
και απλού κειμένου στον εκτυπωτή σας, τότε σας προτρέπουμε να
|
||
προσθέσετε κάποιες ρυθμίσεις στην εγκατάσταση σας. Για να γίνει
|
||
αυτό, θα πρέπει το φίλτρο κειμένου να ανιχνεύει αν η τρέχουσα
|
||
εργασία είναι απλό κείμενο ή &postscript;. Όλες οι εργασίες
|
||
&postscript; πρέπει να ξεκινούν με <literal>%!</literal>
|
||
(αν ο εκτυπωτής σας χρησιμοποιεί άλλη γλώσσα, συμβουλευθείτε
|
||
την τεκμηρίωση του). Αν είναι αυτοί οι πρώτοι δύο χαρακτήρες, τότε
|
||
έχουμε &postscript;, και η υπόλοιπη εργασία μπορεί να σταλεί
|
||
απευθείας στον εκτυπωτή. Αν δεν είναι αυτοί οι πρώτοι δύο
|
||
χαρακτήρες, τότε το φίλτρο θα μετατρέψει το κείμενο σε &postscript;
|
||
και θα τυπώσει το αποτέλεσμα.</para>
|
||
|
||
<para>Πως γίνεται αυτό;</para>
|
||
|
||
<indexterm>
|
||
<primary>εκτυπωτές</primary>
|
||
<secondary>σειριακοί</secondary>
|
||
</indexterm>
|
||
<para>Αν είστε κάτοχος σειριακού εκτυπωτή, ένας καλός τρόπος για
|
||
να γίνει αυτό εφικτό είναι να εγκαταστήσετε το
|
||
<command>lprps</command>. Το <command>lprps</command> είναι ένα
|
||
φίλτρο εκτύπωσης &postscript; που επικοινωνεί αμφίδρομα με τον
|
||
εκτυπωτή. Ενημερώνει το αρχείο κατάστασης του εκτυπωτή με
|
||
αναλυτικές πληροφορίες, ώστε οι χρήστες και οι διαχειριστές να
|
||
μπορούν να δουν επακριβώς ποια είναι η κατάσταση του εκτυπωτή
|
||
(όπως <errorname>χαμηλή στάθμη toner</errorname> ή
|
||
<errorname>πρόβλημα χαρτιού</errorname>). Ακόμη πιο σημαντικό
|
||
είναι πως περιέχει το πρόγραμμα <command>psif</command> που
|
||
ανιχνεύει αν η εισερχόμενη εργασία είναι απλού κειμένου και καλεί το
|
||
<command>textps</command> (ένα άλλο πρόγραμμα που περιέχεται στο
|
||
<command>lprps</command>) να το μετατρέψει σε &postscript;. Τέλος
|
||
χρησιμοποιείται το <command>lprps</command> για να αποστείλει την
|
||
εργασία στον εκτυπωτή.</para>
|
||
|
||
<para>Το <command>lprps</command> είναι μέρος της Συλλογής των Ports
|
||
του &os; (δείτε <link linkend="ports">Η Συλλογή των Ports</link>).
|
||
Φυσικά, μπορείτε να το κατεβάσετε, να το μεταγλωττίσετε και να το
|
||
εγκαταστήσετε μόνοι σας. Μετά την εγκατάσταση του
|
||
<command>lprps</command>, απλά προσδιορίστε τη διαδρομή προς το
|
||
πρόγραμμα <command>psif</command> που είναι μέρος του
|
||
<command>lprps</command>. Αν εγκαταστήσατε το
|
||
<command>lprps</command> από την Συλλογή των Ports, τότε για τον
|
||
σειριακό σας εκτυπωτή &postscript; χρησιμοποιήστε την ακόλουθη
|
||
καταχώριση στο αρχείο <filename>/etc/printcap</filename>:</para>
|
||
|
||
<programlisting>:if=<filename>/usr/local/libexec/psif</filename>:</programlisting>
|
||
|
||
<para>Θα πρέπει επίσης να καθορίσετε την ικανότητα
|
||
<literal>rw</literal> η οποία ορίζει ότι το
|
||
<application>LPD</application> θα χειρίζεται τον εκτυπωτή σε
|
||
κατάσταση ανάγνωσης και εγγραφής.</para>
|
||
|
||
<para>Αν έχετε παράλληλο εκτυπωτή &postscript; (και για το λόγο αυτό
|
||
δεν μπορείτε να χρησιμοποιήσετε αμφίδρομη επικοινωνία με τον
|
||
εκτυπωτή, όπως απαιτείται από το <command>lprps</command>), μπορείτε
|
||
να χρησιμοποιήσετε το ακόλουθο shell script ως φίλτρο
|
||
κειμένου:</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# psif - Print PostScript or plain text on a PostScript printer
|
||
# Script version; NOT the version that comes with lprps
|
||
# Installed in /usr/local/libexec/psif
|
||
#
|
||
|
||
IFS="" read -r first_line
|
||
first_two_chars=`expr "$first_line" : '\(..\)'`
|
||
|
||
if [ "$first_two_chars" = "%!" ]; then
|
||
#
|
||
# PostScript job, print it.
|
||
#
|
||
echo "$first_line" && cat && printf "\004" && exit 0
|
||
exit 2
|
||
else
|
||
#
|
||
# Plain text, convert it, then print it.
|
||
#
|
||
( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0
|
||
exit 2
|
||
fi</programlisting>
|
||
|
||
<para>Στο παραπάνω script, το <command>textps</command> είναι ένα
|
||
πρόγραμμα που εγκαταστήσαμε ξεχωριστά για να μετατρέπουμε απλό
|
||
κείμενο σε &postscript;. Μπορείτε να χρησιμοποιείτε οποιοδήποτε
|
||
πρόγραμμα μετατροπής από κείμενο- σε-&postscript;. Η Συλλογή των
|
||
Ports (δείτε <link linkend="ports">Η Συλλογή των Ports</link>)
|
||
περιέχει επίσης ένα πλήρες πρόγραμμα μετατροπής
|
||
από κείμενο σε &postscript;, το <literal>a2ps</literal> που ίσως
|
||
επιθυμείτε να διερευνήσετε.</para>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-advanced-ps">
|
||
<title>Προσομοίωση &postscript; για Εκτυπωτές που δεν το
|
||
Υποστηρίζουν</title>
|
||
|
||
<indexterm>
|
||
<primary>PostScript</primary>
|
||
<secondary>προσομοίωση</secondary>
|
||
</indexterm>
|
||
|
||
<indexterm><primary>Ghostscript</primary></indexterm>
|
||
<para>Το &postscript; είναι το <emphasis>de facto</emphasis> πρότυπο
|
||
για στοιχειοθεσία και εκτύπωση υψηλής ποιότητας. Ωστόσο, το
|
||
&postscript; είναι κάπως <emphasis>δαπανηρό</emphasis> πρότυπο.
|
||
Ευτυχώς, η Aladdin Enterprises παρέχει ένα παρεμφερές ελεύθερο
|
||
&postscript; που ονομάζεται <application>Ghostscript</application>
|
||
και δουλεύει άψογα στο &os;. Το Ghostscript διαβάζει τα περισσότερα
|
||
αρχεία &postscript; και μπορεί να αποδώσει τις σελίδες τους σε
|
||
μεγάλη γκάμα συσκευών, συμπεριλαμβάνοντας πολλούς τύπους εκτυπωτών
|
||
που δεν υποστηρίζουν &postscript;. Εγκαθιστώντας το
|
||
<application>Ghostscript</application> και χρησιμοποιώντας ένα
|
||
ειδικό φίλτρο κειμένου για τον εκτυπωτή σας, μπορείτε να κάνετε τον
|
||
κοινό εκτυπωτή σας να λειτουργεί σαν ένας πραγματικός εκτυπωτής
|
||
&postscript;.</para>
|
||
|
||
<para>Το <application>Ghostscript</application> βρίσκεται στην
|
||
Συλλογή των Ports του &os;, και μάλιστα σε πολλές εκδόσεις. Η πιο
|
||
διαδεδομένη είναι το <filename
|
||
role="package">print/ghostscript-gpl</filename>.</para>
|
||
|
||
<para>Για να κάνετε προσομοίωση &postscript;, πρέπει το φίλτρο
|
||
κειμένου να ανιχνεύσει αν εκτυπώνετε αρχείο &postscript;. Εάν όχι,
|
||
τότε το φίλτρο θα περάσει το αρχείο κατευθείαν στον εκτυπωτή.
|
||
Διαφορετικά, θα χρησιμοποιήσει το
|
||
<application>Ghostscript</application> για να μετατρέψει
|
||
αρχικά το αρχείο σε ένα τύπο που θα καταλαβαίνει ο εκτυπωτής.</para>
|
||
|
||
<para>Ιδού ένα παράδειγμα: το ακόλουθο script είναι ένα φίλτρο
|
||
κειμένου για εκτυπωτές Hewlett Packard DeskJet 500. Για άλλους
|
||
εκτυπωτές, αντικαταστήστε το όρισμα <option>-sDEVICE</option> στην
|
||
εντολή <command>gs</command>
|
||
(<application>Ghostscript</application>). (Πληκτρολογήστε
|
||
<command>gs <option>-h</option></command> για να δείτε την λίστα
|
||
συσκευών που υποστηρίζει η τρέχουσα εγκατάσταση του
|
||
<application>Ghostscript.</application>)</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# ifhp - Print Ghostscript-simulated PostScript on a DeskJet 500
|
||
# Installed in /usr/local/libexec/ifhp
|
||
|
||
#
|
||
# Treat LF as CR+LF (to avoid the "staircase effect" on HP/PCL
|
||
# printers):
|
||
#
|
||
printf "\033&k2G" || exit 2
|
||
|
||
#
|
||
# Read first two characters of the file
|
||
#
|
||
IFS="" read -r first_line
|
||
first_two_chars=`expr "$first_line" : '\(..\)'`
|
||
|
||
if [ "$first_two_chars" = "%!" ]; then
|
||
#
|
||
# It is PostScript; use Ghostscript to scan-convert and print it.
|
||
#
|
||
/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
|
||
-sOutputFile=- - && exit 0
|
||
else
|
||
#
|
||
# Plain text or HP/PCL, so just print it directly; print a form feed
|
||
# at the end to eject the last page.
|
||
#
|
||
echo "$first_line" && cat && printf "\033&l0H" &&
|
||
exit 0
|
||
fi
|
||
|
||
exit 2</programlisting>
|
||
|
||
<para>Τέλος, χρειάζεται να ενημερώσετε το
|
||
<application>LPD</application> για το φίλτρο με την ικανότητα
|
||
<literal>if</literal>:</para>
|
||
|
||
<programlisting>:if=<filename>/usr/local/libexec/ifhp</filename>:</programlisting>
|
||
|
||
<para>Αυτό είναι όλο. Μπορείτε να πληκτρολογήσετε
|
||
<command>lpr <filename><replaceable>plain.text</replaceable></filename></command> και
|
||
<command>lpr <filename><replaceable>whatever.ps</replaceable></filename></command> και τα δύο θα εκτυπωθούν επιτυχώς.</para>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-advanced-convfilters">
|
||
<title>Φίλτρα Μετατροπής</title>
|
||
|
||
<para>Το επόμενο βήμα μετά την ολοκλήρωση της απλής εγκατάστασης που
|
||
περιγράψαμε στις <link linkend="printing-simple">Βασικές Ρυθμίσεις
|
||
Εκτυπωτών</link>, είναι συνήθως η εγκατάσταση φίλτρων μετατροπής
|
||
για τους τύπους αρχείων που προτιμάτε (εκτός από απλό κείμενο
|
||
ASCII).</para>
|
||
|
||
<sect4>
|
||
<title>Γιατί να εγκαταστήσετε Φίλτρα Μετατροπής;</title>
|
||
<indexterm>
|
||
<primary>&tex;</primary>
|
||
<secondary>εκτύπωση αρχείων DVI</secondary>
|
||
</indexterm>
|
||
|
||
<para>Τα φίλτρα μετατροπής κάνουν την εκτύπωση διαφόρων τύπων
|
||
αρχείων εύκολη υπόθεση. Για παράδειγμα, ας υποθέσουμε ότι έχουμε
|
||
να κάνουμε αρκετή εργασία με το σύστημα στοιχειοθεσίας &tex;, και
|
||
ότι έχουμε εκτυπωτή &postscript;. Κάθε φορά που δημιουργούμε ένα
|
||
αρχείο DVI με το &tex;, δεν μπορούμε να εκτυπώσουμε κατευθείαν έως
|
||
ότου να μετατρέψουμε το αρχείο DVI σε &postscript;. Η ακολουθία
|
||
εντολών που πρέπει να ακολουθήσουμε είναι:</para>
|
||
|
||
<screen>&prompt.user; <userinput><command>dvips <filename><replaceable>seaweed-analysis.dvi</replaceable></filename></command></userinput>
|
||
&prompt.user; <userinput><command>lpr <filename><replaceable>seaweed-analysis.ps</replaceable></filename></command></userinput></screen>
|
||
|
||
<para>Με την χρήση ενός φίλτρου μετατροπής για αρχεία DVI, μπορούμε
|
||
να αποφύγουμε την μετατροπή που πρέπει να κάνουμε κάθε φορά
|
||
χειροκίνητα, καλώντας το <application>LPD</application> να κάνει
|
||
τη δουλειά για μας. Τώρα, κάθε φορά που έχουμε ένα αρχείο DVI,
|
||
για να το τυπώσουμε χρειάζεται μόνο ένα βήμα:</para>
|
||
|
||
<screen>&prompt.user; <userinput><command>lpr <option>-d</option> <filename><replaceable>seaweed-analysis.dvi</replaceable></filename></command></userinput></screen>
|
||
|
||
<para>Έχουμε αναθέσει στο <application>LPD</application> να κάνει τη
|
||
μετατροπή του αρχείου DVI προσθέτοντας του την επιλογή
|
||
<option>-d</option>. Η ενότητα <link
|
||
linkend="printing-lpr-options-format">Επιλογές Μορφοποίησης και
|
||
Μετατροπής</link> περιέχει τους πίνακες επιλογής
|
||
μετατροπών.</para>
|
||
|
||
<para>Για κάθε επιλογή μετατροπής που θέλετε να υποστηρίζετε από
|
||
ένα εκτυπωτή, πρέπει να εγκαταστήσετε ένα
|
||
<emphasis>φίλτρο μετατροπής</emphasis> και να ορίσετε την
|
||
διαδρομή του στο αρχείο <filename>/etc/printcap</filename>. Ένα
|
||
φίλτρο μετατροπής είναι σαν το φίλτρο κειμένου στην απλή
|
||
εγκατάσταση εκτυπωτή (δείτε την ενότητα <link
|
||
linkend="printing-textfilter">Εγκατάσταση Φίλτρου
|
||
Κειμένου</link>) με μόνη διαφορά πως αντί το φίλτρο να
|
||
εκτυπώνει απλό κείμενο, μετατρέπει το αρχείο σε μια διαφορετική
|
||
μορφή ώστε να είναι κατανοητό από τον εκτυπωτή.</para>
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Ποιο Φίλτρο Μετατροπής θα Πρέπει να Εγκαταστήσω;</title>
|
||
|
||
<para>Θα πρέπει να εγκαθιστάτε τα φίλτρα μετατροπής που νομίζετε
|
||
πως θα χρησιμοποιήσετε. Αν εκτυπώνετε αρκετά δεδομένα DVI, τότε
|
||
είναι λογικό να συμπεριλάβετε ένα φίλτρο μετατροπής DVI. Αν
|
||
εκτυπώνετε συχνά δεδομένα troff, θα θέλετε να εγκαταστήσετε ένα
|
||
φίλτρο troff.</para>
|
||
|
||
<para>Ο ακόλουθος πίνακας συνοψίζει τα φίλτρα με τα οποία
|
||
συνεργάζεται το <application>LPD</application>, τις καταχωρίσεις
|
||
της αντίστοιχης ικανότητας στο αρχείο
|
||
<filename>/etc/printcap</filename>, και πως να τις καλέσετε μέσω
|
||
της εντολής <command>lpr</command>:</para>
|
||
|
||
<informaltable frame="none" pgwide="1">
|
||
<tgroup cols="3">
|
||
<thead>
|
||
<row>
|
||
<entry>Τύπος αρχείου</entry>
|
||
<entry>Ικανότητα <filename>/etc/printcap</filename></entry>
|
||
<entry>Παράμετρος εντολής <command>lpr</command></entry>
|
||
</row>
|
||
</thead>
|
||
|
||
<tbody>
|
||
<row>
|
||
<entry>cifplot</entry>
|
||
<entry><literal>cf</literal></entry>
|
||
<entry><option>-c</option></entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>DVI</entry>
|
||
<entry><literal>df</literal></entry>
|
||
<entry><option>-d</option></entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>plot</entry>
|
||
<entry><literal>gf</literal></entry>
|
||
<entry><option>-g</option></entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>ditroff</entry>
|
||
<entry><literal>nf</literal></entry>
|
||
<entry><option>-n</option></entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>FORTRAN text</entry>
|
||
<entry><literal>rf</literal></entry>
|
||
<entry><option>-f</option></entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>troff</entry>
|
||
<entry><literal>tf</literal></entry>
|
||
<entry><option>-f</option></entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>raster</entry>
|
||
<entry><literal>vf</literal></entry>
|
||
<entry><option>-v</option></entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>plain text</entry>
|
||
<entry><literal>if</literal></entry>
|
||
<entry>none, <option>-p</option>, or
|
||
<option>-l</option></entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
|
||
<para>Στο παράδειγμα μας, αν χρησιμοποιήσουμε
|
||
<command>lpr <option>-d</option></command> σημαίνει ότι ο
|
||
εκτυπωτής χρειάζεται την ικανότητα <literal>df</literal> στην
|
||
καταχώριση του στο <filename>/etc/printcap</filename>.</para>
|
||
|
||
<indexterm><primary>FORTRAN</primary></indexterm>
|
||
<para>Αν και κάποιοι μπορεί να ισχυριστούν το αντίθετο, μερικοί
|
||
τύποι αρχείων όπως είναι τα κείμενα και γραφικά FORTRAN είναι
|
||
ξεπερασμένα. Μπορείτε να δώσετε νέα πνοή σε αρχεία αυτού του
|
||
τύπου (ή και οποιασδήποτε άλλης μορφής εξόδου), εγκαθιστώντας
|
||
προσαρμοσμένα φίλτρα. Για παράδειγμα, ας υποθέσουμε ότι θα θέλατε
|
||
να εκτυπώσετε κατευθείαν αρχεία Printerleaf (αρχεία προερχόμενα
|
||
από το πρόγραμμα επιτραπέζιας τυπογραφίας Interleaf), αλλά δεν
|
||
θα εκτυπώσετε ποτέ διαγράμματα (plots). Θα μπορούσατε να
|
||
εγκαταστήσετε ένα φίλτρο μετατροπής αρχείων Printerleaf υπό την
|
||
ικανότητα <literal>gf</literal> και να εκπαιδεύσετε τους χρήστες
|
||
σας ότι η εντολή <command>lpr <option>-g</option></command>
|
||
σημαίνει <quote>τύπωσε αρχεία Printerleaf.</quote></para>
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Εγκατάσταση Φίλτρων Μετατροπών</title>
|
||
|
||
<para>Από τη στιγμή που τα φίλτρα μετατροπής είναι προγράμματα που
|
||
δεν ανήκουν στο βασικό σύστημα εγκατάστασης του &os;, είναι πιο
|
||
σωστό να εγκατασταθούν στον κατάλογο
|
||
<filename class="directory">/usr/local</filename>. Ένας συνήθης
|
||
προορισμός των προγραμμάτων αυτών είναι ο κατάλογος
|
||
<filename class="directory">/usr/local/libexec</filename>, μια
|
||
που πρόκειται για εξειδικευμένα προγράμματα που εκτελούνται μόνο
|
||
από το <application>LPD</application>. Οι απλοί χρήστες δεν θα
|
||
χρειαστεί ποτέ να τα εκτελέσουν.</para>
|
||
|
||
<para>Για να ενεργοποιήσετε ένα φίλτρο μετατροπής, προσδιορίστε τη
|
||
διαδρομή του στο αρχείο <filename>/etc/printcap</filename>,
|
||
αλλάζοντας την κατάλληλη ικανότητα στον εκτυπωτή που επιθυμείτε
|
||
να το χρησιμοποιήσετε.</para>
|
||
|
||
<para>Στο παράδειγμα μας, θα προσθέσουμε το φίλτρο μετατροπής DVI
|
||
στην καταχώριση μας για τον εκτυπωτή με το όνομα
|
||
<literal>bamboo</literal>. Ακολουθεί, λοιπόν, το παράδειγμα
|
||
για το αρχείο <filename>/etc/printcap</filename>, με την νέα
|
||
ικανότητα <literal>df</literal> για τον εκτυπωτή
|
||
<literal>bamboo</literal>:</para>
|
||
|
||
<programlisting>#
|
||
# /etc/printcap for host rose - added df filter for bamboo
|
||
#
|
||
rattan|line|diablo|lp|Diablo 630 Line Printer:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:\
|
||
:lp=<filename class="devicefile">/dev/lpt0</filename>:\
|
||
:if=<filename>/usr/local/libexec/if-simple</filename>:
|
||
|
||
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:\
|
||
:lp=<filename class="devicefile">/dev/ttyd5</filename>:ms#-parenb cs8 clocal crtscts:rw:\
|
||
:if=<filename>/usr/local/libexec/psif</filename>:\
|
||
:df=<filename>/usr/local/libexec/psdf</filename>:</programlisting>
|
||
|
||
<para>Το φίλτρο DVI είναι ένα shell script που ονομάζεται
|
||
<filename>/usr/local/libexec/psdf</filename>, το οποίο και
|
||
παραθέτουμε παρακάτω:</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# psdf - DVI to PostScript printer filter
|
||
# Installed in /usr/local/libexec/psdf
|
||
#
|
||
# Invoked by lpd when user runs lpr -d
|
||
#
|
||
exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"</programlisting>
|
||
|
||
<para>Αυτό το script τρέχει το <command>dvips</command> σε κατάσταση
|
||
φίλτρου (με την παράμετρο <option>-f</option>) στην standard
|
||
input, από όπου και λαμβάνει την εργασία προς εκτύπωση. Αυτό
|
||
ξεκινά το φίλτρο εκτύπωσης &postscript; <command>lprps</command>
|
||
(δείτε την ενότητα <link
|
||
linkend="printing-advanced-if-conversion">Συμβατότητα Εργασιών
|
||
Απλού Κειμένου σε εκτυπωτές &postscript;</link>) δίνοντας του
|
||
και τις παραμέτρους που πέρασε το <application>LPD</application>
|
||
στο παραπάνω script. Το <command>lprps</command> θα
|
||
χρησιμοποιήσει αυτές τις παραμέτρους για την καταμέτρηση των
|
||
εκτυπωμένων σελίδων.</para>
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Ακόμα μερικά Παραδείγματα Φίλτρων Μετατροπής</title>
|
||
|
||
<para>Από τη στιγμή που δεν υπάρχει αυτοματοποιημένη μέθοδος για την
|
||
εγκατάσταση των φίλτρων μετατροπής, ας μας επιτραπεί να παρέχουμε
|
||
μερικά ακόμη παραδείγματα. Μπορείτε να τα χρησιμοποιήσετε σαν
|
||
οδηγό για την δημιουργία των δικών σας φίλτρων. Αν νομίζετε πως
|
||
είναι κατάλληλα για την περίπτωση σας μπορείτε να τα
|
||
χρησιμοποιήσετε και κατευθείαν.</para>
|
||
|
||
<para>Αυτό το παράδειγμα script είναι ένα φίλτρο μετατροπής ράστερ
|
||
(αρχείου GIF για την ακρίβεια) για έναν εκτυπωτή Hewlett Packard
|
||
LaserJet III-Si:</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# hpvf - Convert GIF files into HP/PCL, then print
|
||
# Installed in /usr/local/libexec/hpvf
|
||
|
||
PATH=/usr/X11R6/bin:$PATH; export PATH
|
||
giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
|
||
&& exit 0 \
|
||
|| exit 2</programlisting>
|
||
|
||
<para>Δουλεύει ως εξής: μετατρέπει το αρχείο GIF σε ένα γενικό
|
||
φορητό τύπο anymap, εν συνεχεία το μετατρέπει σε ένα φορητό τύπο
|
||
graymap, έπειτα σε ένα φορητό τύπο bitmap, και τέλος το
|
||
μετατρέπει σε δεδομένα συμβατά με PCL για τον LaserJet.</para>
|
||
|
||
<para>Εδώ είναι το αρχείο <filename>/etc/printcap</filename> με μια
|
||
καταχώριση για έναν εκτυπωτή που χρησιμοποιεί το παραπάνω
|
||
φίλτρο:</para>
|
||
|
||
<programlisting>#
|
||
# /etc/printcap for host orchid
|
||
#
|
||
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
|
||
:lp=<filename class="devicefile">/dev/lpt0</filename>:sh:sd=<filename class="directory">/var/spool/lpd/teak</filename>:mx#0:\
|
||
:if=<filename>/usr/local/libexec/hpif</filename>:\
|
||
:vf=<filename>/usr/local/libexec/hpvf</filename>:</programlisting>
|
||
|
||
<para>Το ακόλουθο script είναι ένα φίλτρο μετατροπής δεδομένων troff
|
||
από το σύστημα στοιχειοθεσίας groff για τον εκτυπωτή &postscript;
|
||
με όνομα <literal>bamboo</literal>:</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# pstf - Convert groff's troff data into PS, then print.
|
||
# Installed in /usr/local/libexec/pstf
|
||
#
|
||
exec grops | /usr/local/libexec/lprps "$@"</programlisting>
|
||
|
||
<para>Το παραπάνω script χρησιμοποιεί πάλι το
|
||
<command>lprps</command> για να χειριστεί την επικοινωνία με τον
|
||
εκτυπωτή. Αν ο εκτυπωτής ήταν σε παράλληλη πόρτα τότε θα είχαμε,
|
||
αντιθέτως, χρησιμοποιήσει το ακόλουθο script:</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# pstf - Convert groff's troff data into PS, then print.
|
||
# Installed in /usr/local/libexec/pstf
|
||
#
|
||
exec grops</programlisting>
|
||
|
||
<para>Εδώ είναι η καταχώριση που χρειάζεται να προσθέσουμε στο
|
||
<filename>/etc/printcap</filename> για να ενεργοποιήσουμε το
|
||
φίλτρο:</para>
|
||
|
||
<programlisting>:tf=<filename>/usr/local/libexec/pstf</filename>:</programlisting>
|
||
|
||
<para>Εδώ είναι ένα παράδειγμα που μας επιτρέπει να εκτυπώσουμε
|
||
παλαιό κώδικα της FORTRAN. Είναι ένα φίλτρο κειμένου για FORTRAN
|
||
για οποιονδήποτε εκτυπωτή μπορεί να εκτυπώσει κατευθείαν απλό
|
||
κείμενο. Θα το εγκαταστήσουμε για έναν εκτυπωτή που ονομάζεται
|
||
<literal>teak</literal>:</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# hprf - FORTRAN text filter for LaserJet 3si:
|
||
# Installed in /usr/local/libexec/hprf
|
||
#
|
||
|
||
printf "\033&k2G" && fpr && printf "\033&l0H" &&
|
||
exit 0
|
||
exit 2</programlisting>
|
||
|
||
<para>Και θα προσθέσουμε αυτή τη γραμμή στο
|
||
<filename>/etc/printcap</filename> για να ενεργοποιήσουμε το
|
||
φίλτρο για τον εκτυπωτή <literal>teak</literal>:</para>
|
||
|
||
<programlisting>:rf=<filename>/usr/local/libexec/hprf</filename>:</programlisting>
|
||
|
||
<para>Και ένα τελευταίο κάπως περίπλοκο παράδειγμα: Θα
|
||
προσθέσουμε ένα φίλτρο DVI στον εκτυπωτή LaserJet
|
||
<literal>teak</literal> που αναφέραμε προηγούμενα. Καταρχήν το
|
||
εύκολο μέρος: αναβαθμίζουμε το <filename>/etc/printcap</filename>
|
||
με την τοποθεσία όπου βρίσκεται το φίλτρο DVI:</para>
|
||
|
||
<programlisting>:df=<filename>/usr/local/libexec/hpdf</filename>:</programlisting>
|
||
|
||
<para>Τώρα, το δύσκολο μέρος: η κατασκευή του φίλτρου. Θα
|
||
χρειαστούμε ένα πρόγραμμα μετατροπής από DVI-σε-LaserJet/PCL.
|
||
Στην Συλλογή των Ports του &os; (δείτε <link
|
||
linkend="ports">Συλλογή των Ports</link>) υπάρχει ένα τέτοιο
|
||
πρόγραμμα: Το όνομα του πακέτου είναι <command>dvi2xx</command>.
|
||
Η εγκατάσταση του πακέτου, μας παρέχει ακριβώς το πρόγραμμα
|
||
που χρειαζόμαστε, το <command>dvilj2p</command>, το οποίο
|
||
μετατρέπει τον κώδικα DVI σε κώδικα συμβατό με LaserJet IIp,
|
||
LaserJet III, και LaserJet 2000.</para>
|
||
|
||
<para>Το <command>dvilj2p</command> κάνει το φίλτρο
|
||
<command>hpdf</command> αρκετά περίπλοκο από τη στιγμή που το
|
||
<command>dvilj2p</command> δε μπορεί να διαβάσει από το standard
|
||
input. Χρειάζεται να δουλέψει με κάποιο όνομα αρχείου. Ακόμη
|
||
χειρότερα, το όνομα του αρχείου πρέπει να τελειώνει σε
|
||
<filename>.dvi</filename> κι επομένως η χρήση του
|
||
<filename class="devicefile">/dev/fd/0</filename> ως standard
|
||
input είναι προβληματική. Θα μπορούσαμε να αντιμετωπίσουμε το
|
||
πρόβλημα δημιουργώντας (συμβολικούς) δεσμούς με κάποιο προσωρινό
|
||
όνομα αρχείου (που να τελειώνει σε <filename>.dvi</filename>)
|
||
για το <filename class="devicefile">/dev/fd/0</filename>, και με
|
||
αυτό τον τρόπο να εξαναγκάσουμε το <command>dvilj2p</command> να
|
||
διαβάζει από το standard input.</para>
|
||
|
||
<para>Ακόμη ένα πρόβλημα που προκύπτει είναι το γεγονός πως δεν
|
||
μπορούμε να χρησιμοποιήσουμε το
|
||
<filename class="directory">/tmp</filename> για τον
|
||
προσωρινό δεσμό. Οι συμβολικοί δεσμοί ανήκουν στον χρήστη και
|
||
στην ομάδα <username>bin</username>, ενώ το φίλτρο τρέχει σαν
|
||
χρήστης <username>daemon</username>. Επίσης στον κατάλογο
|
||
<filename class="directory">/tmp</filename> είναι ενεργό το
|
||
sticky bit. Το φίλτρο μπορεί να δημιουργήσει το δεσμό, αλλά δεν
|
||
θα είναι ικανό να τον εξαλείψει και να τον αφαιρέσει από τη
|
||
στιγμή που αυτός θα ανήκει σε διαφορετικό χρήστη.</para>
|
||
|
||
<para>Αντίθετα, το φίλτρο θα φτιάξει το συμβολικό link στον τρέχοντα
|
||
κατάλογο, που είναι ο κατάλογος παροχέτευσης (spooling) (και που
|
||
προσδιορίζεται από την ικανότητα <literal>sd</literal> στο
|
||
<filename>/etc/printcap</filename>). Αυτό είναι το τέλειο μέρος
|
||
για να δουλεύουν τα φίλτρα, ειδικά λόγω του ότι (μερικές φορές)
|
||
υπάρχει περισσότερες ελεύθερος χώρος στο δίσκο στον κατάλογο
|
||
παροχέτευσης (spool) από ότι στο
|
||
<filename class="directory">/tmp</filename>.</para>
|
||
|
||
<para>Και τελικά, ιδού το φίλτρο:</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# hpdf - Print DVI data on HP/PCL printer
|
||
# Installed in /usr/local/libexec/hpdf
|
||
|
||
PATH=/usr/local/bin:$PATH; export PATH
|
||
|
||
#
|
||
# Define a function to clean up our temporary files. These exist
|
||
# in the current directory, which will be the spooling directory
|
||
# for the printer.
|
||
#
|
||
cleanup() {
|
||
rm -f hpdf$$.dvi
|
||
}
|
||
|
||
#
|
||
# Define a function to handle fatal errors: print the given message
|
||
# and exit 2. Exiting with 2 tells LPD to do not try to reprint the
|
||
# job.
|
||
#
|
||
fatal() {
|
||
echo "$@" 1>&2
|
||
cleanup
|
||
exit 2
|
||
}
|
||
|
||
#
|
||
# If user removes the job, LPD will send SIGINT, so trap SIGINT
|
||
# (and a few other signals) to clean up after ourselves.
|
||
#
|
||
trap cleanup 1 2 15
|
||
|
||
#
|
||
# Make sure we are not colliding with any existing files.
|
||
#
|
||
cleanup
|
||
|
||
#
|
||
# Link the DVI input file to standard input (the file to print).
|
||
#
|
||
ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
|
||
|
||
#
|
||
# Make LF = CR+LF
|
||
#
|
||
printf "\033&k2G" || fatal "Cannot initialize printer"
|
||
|
||
#
|
||
# Convert and print. Return value from dvilj2p does not seem to be
|
||
# reliable, so we ignore it.
|
||
#
|
||
dvilj2p -M1 -q -e- dfhp$$.dvi
|
||
|
||
#
|
||
# Clean up and exit
|
||
#
|
||
cleanup
|
||
exit 0</programlisting>
|
||
</sect4>
|
||
|
||
<sect4 id="printing-advanced-autoconv">
|
||
<title>Αυτοματοποιημένες Μετατροπές: Μία Εναλλακτική στα Φίλτρα
|
||
Μετατροπής</title>
|
||
|
||
<para>Όλα τα φίλτρα μετατροπής μπορεί να πληρούν το περιβάλλον
|
||
εκτυπώσεων σας, αλλά υποχρεώνουν τον χρήστη να προσδιορίζει
|
||
(στην γραμμή εντολών του &man.lpr.1;) ποιό από αυτά θα
|
||
χρησιμοποιηθεί. Αν οι χρήστες σας δεν είναι ιδιαίτερα
|
||
εξοικειωμένοι με τους Η/Υ, το να πρέπει να αναφέρουν κάθε φορά
|
||
ένα φίλτρο πιθανώς να είναι ενοχλητικό. Είναι ακόμα χειρότερο
|
||
ωστόσο να γίνει λανθασμένη επιλογή φίλτρου, το οποίο θα
|
||
εκτελεστεί σε ακατάλληλο για αυτό τύπο αρχείου, και θα προκαλέσει
|
||
την σπατάλη εκατοντάδων σελίδων χαρτιού.</para>
|
||
|
||
<para>Αντί να εγκαταστήσετε οποιοδήποτε φίλτρο μετατροπής, μπορεί να
|
||
θέλετε να δοκιμάσετε να έχετε ένα φίλτρο κειμένου (αφού είναι
|
||
το προεπιλεγμένο φίλτρο) που να ανιχνεύει τον τύπο του αρχείου
|
||
που έχει ζητηθεί να εκτυπωθεί και να εκτελεί αυτόματα το
|
||
κατάλληλο φίλτρο μετατροπής. Εργαλεία σαν το
|
||
<command>file</command> μπορούν να σας βοηθήσουν. Μπορεί να
|
||
είναι δύσκολο να προσδιοριστούν οι διαφορές μεταξύ
|
||
<emphasis>κάποιων</emphasis> τύπων αρχείων—αλλά, φυσικά,
|
||
μπορείτε πάντα να παρέχετε φίλτρα μετατροπής ειδικά για αυτές τις
|
||
περιπτώσεις.</para>
|
||
|
||
<indexterm><primary>apsfilter</primary></indexterm>
|
||
<indexterm>
|
||
<primary>printing</primary>
|
||
<secondary>filters</secondary>
|
||
<tertiary>apsfilter</tertiary>
|
||
</indexterm>
|
||
<para>Η Συλλογή των Ports του &os; έχει ένα φίλτρο κειμένου που
|
||
εκτελεί αυτόματες μετατροπές και ονομάζεται
|
||
<command>apsfilter</command>. Μπορεί να ανιχνεύει απλό κείμενο,
|
||
&postscript;, DVI και σχεδόν οποιοδήποτε τύπο αρχείου, να εκτελεί
|
||
την κατάλληλη μετατροπή, και να εκτυπώνει.</para>
|
||
</sect4>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-advanced-of">
|
||
<title>Φίλτρα Εξόδου</title>
|
||
|
||
<para>Το σύστημα παροχέτευσης <application>LPD</application>
|
||
υποστηρίζει έναν ακόμη τύπο φίλτρου που ίσως να μην έχετε
|
||
εξερευνήσει ακόμα: το φίλτρο εξόδου. Το φίλτρο εξόδου προορίζεται
|
||
μόνο για εκτύπωση απλού κειμένου, όπως το φίλτρο κειμένου, αλλά με
|
||
πολλές απλοποιήσεις. Εάν χρησιμοποιείτε φίλτρο εξόδου αλλά όχι
|
||
φίλτρο κειμένου, τότε:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Το <application>LPD</application> ξεκινά ένα φίλτρο εξόδου
|
||
μόνο μια φορά για όλη την εργασία, αντί ένα χωριστό για κάθε
|
||
αρχείο της εργασίας.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Το <application>LPD</application> δεν φροντίζει να
|
||
αναγνωρίσει την αρχή ή το τέλος των αρχείων μέσα στην ίδια την
|
||
εργασία όταν χρησιμοποιείται το φίλτρο εξόδου.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Το <application>LPD</application> δεν περνάει στο φίλτρο τα
|
||
δεδομένα εισόδου του χρήστη ή το όνομα του μηχανήματος, επομένως
|
||
δεν προορίζεται για καταμέτρηση εκτυπωμένων σελίδων. Το φίλτρο
|
||
εξόδου δέχεται μόνος τις παραμέτρους:</para>
|
||
|
||
<cmdsynopsis>
|
||
<command>filter-name</command>
|
||
<arg choice="plain">-w<replaceable>width</replaceable></arg>
|
||
<arg choice="plain">-l<replaceable>length</replaceable></arg>
|
||
</cmdsynopsis>
|
||
|
||
<para>Όπου το <replaceable>width</replaceable> είναι από την
|
||
ικανότητα <literal>pw</literal> και το
|
||
<replaceable>length</replaceable> είναι από την ικανότητα
|
||
<literal>pl</literal> για τον συγκεκριμένο εκτυπωτή.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Μην παρασύρεστε από την απλότητα του φίλτρου εξόδου. Αν
|
||
επιθυμείτε κάθε αρχείο μιας εργασίας να ξεκινά σε μια νέα σελίδα,
|
||
το φίλτρο εξόδου <emphasis>δεν κάνει για σας</emphasis>.
|
||
Χρησιμοποιήστε ένα φίλτρο κειμένου (γνωστό και ως φίλτρο εισόδου).
|
||
Δείτε την ενότητα <link linkend="printing-textfilter">Εγκατάσταση
|
||
Φίλτρου Κειμένου</link>. Επιπλέον, ένα φίλτρο εξόδου είναι στην
|
||
πραγματικότητα <emphasis>πιο περίπλοκο</emphasis> αφού πρέπει να
|
||
εξετάζει την ροή των byte που αποστέλλεται προς αυτό για ειδικούς
|
||
χαρακτήρες flag και πρέπει να στέλνει σήματα στον εαυτό
|
||
του για λογαριασμό του <application>LPD</application>.</para>
|
||
|
||
<para>Ωστόσο, ένα φίλτρο εξόδου είναι <emphasis>αναγκαίο</emphasis>
|
||
αν θέλετε σελίδες κεφαλίδας και χρειάζεται να στέλνετε ακολουθίες
|
||
διαφυγής ή άλλες ακολουθίες αρχικοποίησης προκειμένου να τις
|
||
εκτυπώσετε. (Αλλά είναι επίσης <emphasis>μάταιο</emphasis> αν
|
||
θέλετε να χρεώνετε σελίδες κεφαλίδας στον λογαριασμό του αντίστοιχου
|
||
χρήστη, από τη στιγμή που το <application>LPD</application> δεν
|
||
στέλνει καμιά πληροφορία για τον χρήστη ή τον υπολογιστή στο φίλτρο
|
||
εξόδου.)</para>
|
||
|
||
<para>Το <application>LPD</application> επιτρέπει την συνύπαρξη
|
||
ενός φίλτρου εξόδου και άλλων φίλτρων (κειμένου ή διαφορετικού
|
||
τύπου) στον ίδιο εκτυπωτή. Σε αυτές τις περιπτώσεις, το
|
||
<application>LPD</application> θα ξεκινά το φίλτρο εξόδου μόνο για
|
||
την εκτύπωση της σελίδας κεφαλίδας (δείτε την ενότητα <link
|
||
linkend="printing-advanced-header-pages">Σελίδες
|
||
Κεφαλίδας</link>). Το <application>LPD</application> θα αναμένει
|
||
το φίλτρο εξόδου να <emphasis>σταματήσει από μόνο του</emphasis>
|
||
όταν του στείλει δύο bytes: ένα ASCII 031 ακολουθούμενο από ένα
|
||
ASCII 001. Όταν ένα φίλτρο εξόδου βλέπει αυτά τα δύο bytes (031,
|
||
001), θα πρέπει να σταματά στέλνοντας σήμα
|
||
<literal>SIGSTOP</literal> στον εαυτό του. Όταν το
|
||
<application>LPD</application> ολοκληρώσει την εκτέλεση και των
|
||
υπολοίπων φίλτρων, θα επανεκκινήσει το φίλτρο εξόδου στέλνοντας
|
||
του το σήμα <literal>SIGCONT</literal>.</para>
|
||
|
||
<para>Αν υπάρχει φίλτρο εξόδου, αλλά <emphasis>δεν υπάρχει</emphasis>
|
||
φίλτρο κειμένου και το <application>LPD</application> δουλεύει σε
|
||
εργασία απλού κειμένου, το <application>LPD</application>
|
||
χρησιμοποιεί το φίλτρο εξόδου για την εκτέλεση της εργασίας. Όπως
|
||
αναφέραμε και παραπάνω, το φίλτρο εξόδου θα εκτυπώσει κάθε αρχείο
|
||
εργασίας στη σειρά, δίχως δυνατότητα παρεμβολής κενής σελίδας ή
|
||
άλλων ρυθμίσεων στην τροφοδοσία χαρτιού, και πιθανώς αυτό να
|
||
<emphasis>μην</emphasis> είναι επιθυμητό. Σχεδόν σε όλες τις
|
||
περιπτώσεις, θα χρειαστείτε ένα φίλτρο κειμένου.</para>
|
||
|
||
<para>Το πρόγραμμα <command>lpf</command>, που αναφέραμε νωρίτερα σαν
|
||
φίλτρο κειμένου, μπορεί να τρέξει και σαν φίλτρο εξόδου. Αν
|
||
χρειάζεστε ένα γρήγορο φίλτρο εξόδου αλλά δεν θέλετε να γράψετε τον
|
||
κώδικα ανίχνευσης των byte και τον κώδικα αποστολής σημάτων,
|
||
δοκιμάστε το <command>lpf</command>. Μπορείτε επίσης να
|
||
χρησιμοποιήσετε το <command>lpf</command> μέσα από ένα shell script
|
||
το οποίο θα χειρίζεται τους κωδικούς αρχικοποίησης που ίσως να
|
||
χρειάζεται ο εκτυπωτής.</para>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-advanced-lpf">
|
||
<title><command>lpf</command>: ένα Φίλτρο Κειμένου</title>
|
||
|
||
<para>Το πρόγραμμα <filename>/usr/libexec/lpr/lpf</filename> που
|
||
παρέχεται με τη διανομή εκτελέσιμων του &os; είναι ένα φίλτρο
|
||
κειμένου (φίλτρο εισόδου) που μπορεί να παραγραφοποιεί την έξοδο
|
||
(εργασίες που έχουν σταλεί με
|
||
<command>lpr <option>-i</option></command>), να
|
||
επιτρέπει την διέλευση literal χαρακτήρων (εργασίες που έχουν
|
||
σταλεί με <command>lpr <option>-l</option></command>), να ρυθμίζει
|
||
την θέση εκτύπωσης με τη χρήση χαρακτήρων backspace και tab στην
|
||
εργασία, και να κάνει καταμέτρηση των εκτυπωμένων σελίδων. Επίσης
|
||
μπορεί να ενεργεί και σαν φίλτρο εξόδου.</para>
|
||
|
||
<para>Το <command>lpf</command> είναι κατάλληλο για διάφορα
|
||
περιβάλλοντα εκτύπωσης. Αν και δεν έχει δυνατότητα αποστολής
|
||
ακολουθιών αρχικοποίησης στον εκτυπωτή, είναι εύκολο να γράψετε
|
||
ένα shell script για να κάνετε την απαραίτητη αρχικοποίηση και
|
||
να εκτελέσετε έπειτα το <command>lpf</command>.</para>
|
||
|
||
<indexterm><primary>καταμέτρηση σελίδων</primary></indexterm>
|
||
<indexterm>
|
||
<primary>καταμέτρηση</primary>
|
||
<secondary>εκτυπωτής</secondary>
|
||
</indexterm>
|
||
<para>Για να κάνει σωστά καταμέτρηση σελίδων, το
|
||
<command>lpf</command> χρειάζεται κατάλληλες τιμές για τις
|
||
ικανότητες <literal>pw</literal> και <literal>pl</literal> στο
|
||
αρχείο <filename>/etc/printcap</filename>. Χρησιμοποιεί αυτές τις
|
||
τιμές για να προσδιορίσει πόσο κείμενο μπορεί να χωρέσει σε μία
|
||
σελίδα και από πόσες σελίδες αποτελείται η εργασία του χρήστη. Για
|
||
περισσότερες πληροφορίες σχετικά με την καταμέτρηση σελίδων,
|
||
συμβουλευτείτε την <link
|
||
linkend="printing-advanced-acct">Καταμέτρηση Χρήσης Εκτυπωτών</link>.</para>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2 id="printing-advanced-header-pages">
|
||
<title>Σελίδες Κεφαλίδας</title>
|
||
|
||
<para>Αν έχετε <emphasis>αρκετούς</emphasis> χρήστες, και όλοι τους
|
||
χρησιμοποιούν διάφορους εκτυπωτές, τότε πιθανώς να θεωρείτε τις
|
||
<emphasis>σελίδες κεφαλίδας</emphasis> ως αναγκαίο κακό.</para>
|
||
|
||
<indexterm>
|
||
<primary>σελίδες banner</primary>
|
||
<see>σελίδες κεφαλίδας</see>
|
||
</indexterm>
|
||
<indexterm><primary>σελίδες κεφαλίδας</primary></indexterm>
|
||
<para>Οι σελίδες κεφαλίδας, γνωστές επίσης και ως
|
||
<emphasis>banner</emphasis> ή <emphasis>σελίδες burst</emphasis>
|
||
αναγνωρίζουν σε ποιον ανήκουν οι εργασίες μετά την εκτύπωση τους.
|
||
Συνήθως τυπώνονται με μεγάλα, έντονα γράμματα, και ίσως με
|
||
διακοσμητικά περιγράμματα, ώστε σε μια στοίβα εκτυπώσεων να
|
||
ξεχωρίζουν από τα πραγματικά έγγραφα εργασιών των χρηστών.
|
||
Επιτρέπουν έτσι στους χρήστες να βρίσκουν γρήγορα τις εργασίες τους.
|
||
Το προφανές μειονέκτημα σε μια σελίδα κεφαλίδας είναι πως πρόκειται
|
||
να εκτυπωθεί μια ακόμα σελίδα για κάθε μία εργασία. Η εφήμερη
|
||
χρησιμότητα τους διαρκεί λίγα λεπτά, και ο προορισμός τους είναι ο
|
||
κάδος αχρήστων/ανακύκλωσης. (Παρατηρήστε πως οι σελίδες κεφαλίδας
|
||
είναι ανά εργασία, και όχι ανά αρχείο σε μια εργασία, επομένως το
|
||
αχρηστευμένο χαρτί ίσως να μην είναι τόσο πολύ).</para>
|
||
|
||
<para>Το σύστημα <application>LPD</application> μπορεί να παρέχει
|
||
αυτόματα σελίδες κεφαλίδας για τις εκτυπώσεις σας,
|
||
<emphasis>αν</emphasis> ο εκτυπωτής σας μπορεί να εκτυπώσει άμεσα
|
||
απλό κείμενο. Αν έχετε εκτυπωτή &postscript;, θα χρειαστείτε ένα
|
||
εξωτερικό πρόγραμμα για να δημιουργήσετε την σελίδα κεφαλίδας. Δείτε
|
||
το <link linkend="printing-advanced-header-pages-ps">Σελίδες
|
||
Κεφαλίδας σε Εκτυπωτές &postscript;</link>.</para>
|
||
|
||
<sect3 id="printing-advanced-header-pages-enabling">
|
||
<title>Ενεργοποίηση Σελίδων Κεφαλίδας</title>
|
||
|
||
<para>Στην ενότητα <link linkend="printing-simple">Βασικές Ρυθμίσεις
|
||
Εκτυπωτών</link>, απενεργοποιήσαμε τις σελίδες κεφαλίδας
|
||
με την καταχώριση <literal>sh</literal> (σημαίνει <quote>suppress
|
||
header</quote>) στο αρχείο <filename>/etc/printcap</filename>.
|
||
Για να ενεργοποιήσετε τις σελίδες κεφαλίδας για κάποιον εκτυπωτή,
|
||
απλά αφαιρέστε την ικανότητα <literal>sh</literal>.</para>
|
||
|
||
<para>Ακούγεται εύκολο, δεν νομίζετε;</para>
|
||
|
||
<para>Έτσι είναι. <emphasis>Ίσως</emphasis> χρειαστεί να παρέχετε ένα
|
||
φίλτρο εξόδου για να στείλετε εντολές αρχικοποίησης στον εκτυπωτή.
|
||
Εδώ είναι ένα παράδειγμα φίλτρου εξόδου για εκτυπωτές συμβατούς με
|
||
τον τύπο PCL της Hewlett Packard:</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# hpof - Output filter for Hewlett Packard PCL-compatible printers
|
||
# Installed in /usr/local/libexec/hpof
|
||
|
||
printf "\033&k2G" || exit 2
|
||
exec /usr/libexec/lpr/lpf</programlisting>
|
||
|
||
<para>Προσδιορίστε την διαδρομή προς το φίλτρο εξόδου στην ικανότητα
|
||
<literal>of</literal>. Δείτε την ενότητα <link
|
||
linkend="printing-advanced-of">Φίλτρα Εξόδου</link> για
|
||
περισσότερες πληροφορίες.</para>
|
||
|
||
<para>Εδώ είναι ένα παράδειγμα αρχείου
|
||
<filename>/etc/printcap</filename> για τον εκτυπωτή
|
||
<literal>teak</literal> από το προηγούμενο παράδειγμα.
|
||
Ενεργοποιήσαμε τις σελίδες κεφαλίδας και προσθέσαμε το παραπάνω
|
||
φίλτρο εξόδου:</para>
|
||
|
||
<programlisting>#
|
||
# /etc/printcap for host orchid
|
||
#
|
||
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
|
||
:lp=<filename class="devicefile">/dev/lpt0</filename>:sd=<filename class="directory">/var/spool/lpd/teak</filename>:mx#0:\
|
||
:if=<filename>/usr/local/libexec/hpif</filename>:\
|
||
:vf=<filename>/usr/local/libexec/hpvf</filename>:\
|
||
:of=<filename>/usr/local/libexec/hpof</filename>:</programlisting>
|
||
|
||
<para>Τώρα, όταν οι χρήστες εκτυπώνουν εργασίες στον
|
||
<literal>teak</literal>, θα παίρνουν και μία σελίδα κεφαλίδας ανά
|
||
εργασία. Αν οι χρήστες θέλουν να ξοδεύουν χρόνο ψάχνοντας για
|
||
τις εκτυπώσεις τους, μπορούν να παρεμποδίσουν τις σελίδες κεφαλίδας
|
||
αποστέλλοντας τις εργασίες τους με
|
||
<command>lpr <option>-h</option></command>. Δείτε την ενότητα
|
||
<link linkend="printing-lpr-options-misc">Επιλογές Σελίδων
|
||
Κεφαλίδας</link> για περισσότερες επιλογές του &man.lpr.1;.</para>
|
||
|
||
<note>
|
||
<para>Το <application>LPD</application> στέλνει το χαρακτήρα
|
||
αλλαγής σελίδας (form feed) αμέσως μετά τη σελίδα κεφαλίδας. Αν
|
||
ο εκτυπωτής σας χρησιμοποιεί διαφορετικό χαρακτήρα ή ακολουθία
|
||
χαρακτήρων για την αλλαγή σελίδας, προσδιορίστε τα με την
|
||
ικανότητα <literal>ff</literal> στο αρχείο
|
||
<filename>/etc/printcap</filename>.</para>
|
||
</note>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-advanced-header-pages-controlling">
|
||
<title>Έλεγχος Σελίδων Κεφαλίδας </title>
|
||
|
||
<para>Μετά την ενεργοποίηση των σελίδων κεφαλίδας, το
|
||
<application>LPD</application> θα παράγει μία <emphasis>επιμήκη
|
||
κεφαλίδα</emphasis>, μία ολόκληρη σελίδα με μεγάλα γράμματα που
|
||
προσδιορίζει τον χρήστη, τον υπολογιστή (host), και την εργασία.
|
||
Εδώ είναι ένα παράδειγμα (η <username>kelly</username> εκτύπωσε την
|
||
εργασία με όνομα <quote>outline</quote> από τον υπολογιστή
|
||
<hostid>rose</hostid>):</para>
|
||
|
||
<screen> k ll ll
|
||
k l l
|
||
k l l
|
||
k k eeee l l y y
|
||
k k e e l l y y
|
||
k k eeeeee l l y y
|
||
kk k e l l y y
|
||
k k e e l l y yy
|
||
k k eeee lll lll yyy y
|
||
y
|
||
y y
|
||
yyyy
|
||
|
||
|
||
ll
|
||
t l i
|
||
t l
|
||
oooo u u ttttt l ii n nnn eeee
|
||
o o u u t l i nn n e e
|
||
o o u u t l i n n eeeeee
|
||
o o u u t l i n n e
|
||
o o u uu t t l i n n e e
|
||
oooo uuu u tt lll iii n n eeee
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
r rrr oooo ssss eeee
|
||
rr r o o s s e e
|
||
r o o ss eeeeee
|
||
r o o ss e
|
||
r o o s s e e
|
||
r oooo ssss eeee
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Job: outline
|
||
Date: Sun Sep 17 11:04:58 1995</screen>
|
||
|
||
<para>Το <application>LPD</application> προσθέτει μια εντολή αλλαγής
|
||
σελίδας (form feed) μετά από αυτό το κείμενο έτσι ώστε η
|
||
εργασία να ξεκινήσει σε νέα σελίδα (εκτός αν έχετε προσδιορίσει την
|
||
ικανότητα <literal>sf</literal> (suppress form feeds) για τον
|
||
εκτυπωτή στο αρχείο <filename>/etc/printcap</filename>).</para>
|
||
|
||
<para>Αν προτιμάτε, το <application>LPD</application> μπορεί να
|
||
φτιάξει μια <emphasis>μικρότερου μήκους κεφαλίδα</emphasis>.
|
||
Προσδιορίστε <literal>sb</literal> (short banner) στο αρχείο
|
||
<filename>/etc/printcap</filename>. Η σελίδα κεφαλίδας θα μοιάζει
|
||
σαν αυτή:</para>
|
||
|
||
<screen>rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995</screen>
|
||
|
||
<para>Το <application>LPD</application> τυπώνει (από προεπιλογή)
|
||
πρώτα την σελίδα κεφαλίδας, και μετά την εργασία. Για να
|
||
αντιστρέψετε την σειρά, χρησιμοποιήστε την ικανότητα
|
||
<literal>hl</literal> (header last) στο αρχείο
|
||
<filename>/etc/printcap</filename>.</para>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-advanced-header-pages-accounting">
|
||
<title>Καταμέτρηση με Σελίδες Κεφαλίδας</title>
|
||
|
||
<para>Η χρήση των προεγκατεστημένων σελίδων κεφαλίδας του
|
||
<application>LPD</application> ουσιαστικά υποχρεώνουν την τήρηση
|
||
του παρακάτω κανόνα όταν κάνουμε καταμέτρηση χρήσης του εκτυπωτή:
|
||
Οι σελίδες κεφαλίδας πρέπει να διατίθενται <emphasis>ελεύθερα (δίχως
|
||
χρέωση)</emphasis>.</para>
|
||
|
||
<para>Γιατί;</para>
|
||
|
||
<para>Διότι το φίλτρο εξόδου είναι το μοναδικό εξωτερικό πρόγραμμα
|
||
που έχει τον έλεγχο στην εκτύπωση της κεφαλίδας και θα μπορούσε να
|
||
κάνει καταμέτρηση, αλλά ωστόσο δεν παρέχει καμία πληροφορία για
|
||
<emphasis>τον χρήστη ή τον υπολογιστή</emphasis> ή κάποιο άλλο
|
||
αρχείο καταμέτρησης, επομένως δεν γνωρίζει σε ποιόν να αποδώσει
|
||
την χρήση του εκτυπωτή. Δεν αρκεί απλά να <quote>προσθέσετε μία
|
||
ακόμη σελίδα στην καταμέτρηση</quote> τροποποιώντας το φίλτρο
|
||
κειμένου ή οποιοδήποτε άλλο φίλτρο μετατροπής (το οποίο διαθέτει τις
|
||
πληροφορίες χρήστη και υπολογιστή), από τη στιγμή που οι χρήστες
|
||
έχουν την δυνατότητα να παρεμποδίσουν τις σελίδες κεφαλίδας με
|
||
<command>lpr <option>-h</option></command>. Θα μπορούσαν πάλι να
|
||
χρεωθούν για σελίδες κεφαλίδας που δεν εκτύπωσαν. Βασικά, η
|
||
<command>lpr <option>-h</option></command> θα είναι η προτιμώμενη
|
||
επιλογή σε ένα περιβάλλον που οι χρήστες έχουν οικολογική
|
||
συνείδηση, αλλά δεν μπορείτε πραγματικά να παροτρύνετε οποιονδήποτε
|
||
να τη χρησιμοποιήσει.</para>
|
||
|
||
<para><emphasis>Δεν είναι αρκετό</emphasis> απλά κάθε φίλτρο σας να
|
||
δημιουργεί τη δικιά του σελίδα κεφαλίδας (έτσι ώστε να μπορεί να
|
||
χρεώνει με αυτό τον τρόπο). Αν οι χρήστες επιθυμούν την επιλογή
|
||
παρεμπόδισης των σελίδων κεφαλίδας με
|
||
<command>lpr <option>-h</option></command>, θα συνεχίσουν να τις
|
||
παραλαμβάνουν - και να χρεώνονται για αυτές - αφού το
|
||
<application>LPD</application> δεν έχει δυνατότητα να
|
||
περάσει σε οποιοδήποτε φίλτρο την επιλογή
|
||
<option>-h</option>.</para>
|
||
|
||
<para>Επομένως, ποιες επιλογές έχετε;</para>
|
||
|
||
<para>Μπορείτε:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Να αποδεχθείτε την υπόδειξη του
|
||
<application>LPD</application> και να παρέχετε τις σελίδες
|
||
κεφαλίδας ελεύθερα.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Να εγκαταστήσετε εναλλακτικές λύσεις αντί του
|
||
<application>LPD</application>, όπως το
|
||
<application>LPRng</application>. Η ενότητα <link
|
||
linkend="printing-lpd-alternatives">Εναλλακτικές Λύσεις για
|
||
τον Στάνταρ Spooler</link> δίνει περισσότερες πληροφορίες
|
||
για άλλες εφαρμογές παροχέτευσης που μπορείτε να
|
||
χρησιμοποιήσετε αντί για το
|
||
<application>LPD</application>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Να γράψετε ένα <emphasis>έξυπνο</emphasis> φίλτρο εξόδου.
|
||
Υπό κανονικές συνθήκες, ένα "φίλτρο εξόδου" δεν κάνει τίποτε
|
||
παραπάνω από την αρχικοποίηση ενός εκτυπωτή ή μερικές απλές
|
||
μετατροπές χαρακτήρων. Είναι κατάλληλο για σελίδες κεφαλίδας
|
||
και για εργασίες απλού κειμένου (όταν δεν υπάρχει φίλτρο
|
||
(εισόδου) κειμένου). Αλλά αν υπάρχει φίλτρο κειμένου για
|
||
εργασίες απλού κειμένου, τότε το
|
||
<application>LPD</application> θα ενεργοποιεί το φίλτρο εξόδου
|
||
μόνο για τις σελίδες κεφαλίδας. Και το φίλτρο εξόδου μπορεί να
|
||
αναλύει το κείμενο της σελίδας κεφαλίδας που δημιουργεί το
|
||
<application>LPD</application> για να προσδιορίζει τον χρήστη
|
||
και τον υπολογιστή, ώστε να χρεώνει τις σελίδες κεφαλίδας.
|
||
Το μόνο επιπλέον πρόβλημα με αυτή τη μέθοδο είναι πως το φίλτρο
|
||
εξόδου εξακολουθεί να μη γνωρίζει ποιό αρχείο καταμέτρησης να
|
||
χρησιμοποιήσει (δεν του έχει δοθεί το όνομα του αρχείου από την
|
||
ικανότητα <literal>af</literal>), αλλά αν το όνομα του αρχείου
|
||
σας είναι γνωστό, μπορείτε να το ενσωματώσετε απευθείας στον
|
||
κώδικα του φίλτρου εξόδου. Για να διευκολύνετε την διαδικασία
|
||
ανάλυσης, χρησιμοποιήστε την ικανότητα <literal>sh</literal>
|
||
(short header) στο <filename>/etc/printcap</filename>. Ίσως
|
||
πάλι όλα αυτά να είναι υπερβολικά κοπιαστικά, ενώ είναι σίγουρο
|
||
πως οι χρήστες θα εκτιμήσουν τον γενναιόδωρο διαχειριστή
|
||
συστήματος που επιτρέπει ελεύθερα τις σελίδες κεφαλίδας.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-advanced-header-pages-ps">
|
||
<title>Σελίδες Κεφαλίδας σε Εκτυπωτές &postscript;</title>
|
||
|
||
<para>Όπως περιγράψαμε παραπάνω, το <application>LPD</application>
|
||
μπορεί να δημιουργήσει μία σελίδα κεφαλίδας απλού κειμένου,
|
||
κατάλληλη για πολλούς εκτυπωτές. Οι εκτυπωτές &postscript;,
|
||
φυσικά, δεν μπορούν να τυπώσουν κατευθείαν απλό κείμενο, επομένως
|
||
αυτή η δυνατότητα του <application>LPD</application> για τις
|
||
σελίδες κεφαλίδας είναι άχρηστη σε αυτή την περίπτωση.</para>
|
||
|
||
<para>Ένας προφανής τρόπος να παρέχονται σελίδες κεφαλίδας είναι να
|
||
δημιουργούνται από κάθε φίλτρο μετατροπής και το φίλτρο κειμένου.
|
||
Τα φίλτρα θα πρέπει να δέχονται ως παραμέτρους το όνομα του χρήστη
|
||
και του υπολογιστή ώστε να δημιουργούν την κατάλληλη σελίδα
|
||
κεφαλίδας. Το μειονέκτημα αυτής της μεθόδου είναι πως οι
|
||
χρήστες θα εκτυπώνουν πάντα σελίδα κεφαλίδας, ακόμη κι αν
|
||
αποστέλλουν την εργασία τους με
|
||
<command>lpr <option>-h</option></command>.</para>
|
||
|
||
<para>Επιτρέψτε μας να εξερευνήσουμε αυτή τη μέθοδο. Το ακόλουθο
|
||
script δέχεται τρεις παραμέτρους (το όνομα χρήστη - login name, το
|
||
όνομα του υπολογιστή - host name, και το όνομα εργασίας) και
|
||
δημιουργεί μία απλή σελίδα κεφαλίδας &postscript;:</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# make-ps-header - make a PostScript header page on stdout
|
||
# Installed in /usr/local/libexec/make-ps-header
|
||
#
|
||
|
||
#
|
||
# These are PostScript units (72 to the inch). Modify for A4 or
|
||
# whatever size paper you are using:
|
||
#
|
||
page_width=612
|
||
page_height=792
|
||
border=72
|
||
|
||
#
|
||
# Check arguments
|
||
#
|
||
if [ $# -ne 3 ]; then
|
||
echo "Usage: `basename $0` <user> <host> <job>" 1>&2
|
||
exit 1
|
||
fi
|
||
|
||
#
|
||
# Save these, mostly for readability in the PostScript, below.
|
||
#
|
||
user=$1
|
||
host=$2
|
||
job=$3
|
||
date=`date`
|
||
|
||
#
|
||
# Send the PostScript code to stdout.
|
||
#
|
||
exec cat <<EOF
|
||
%!PS
|
||
|
||
%
|
||
% Make sure we do not interfere with user's job that will follow
|
||
%
|
||
save
|
||
|
||
%
|
||
% Make a thick, unpleasant border around the edge of the paper.
|
||
%
|
||
$border $border moveto
|
||
$page_width $border 2 mul sub 0 rlineto
|
||
0 $page_height $border 2 mul sub rlineto
|
||
currentscreen 3 -1 roll pop 100 3 1 roll setscreen
|
||
$border 2 mul $page_width sub 0 rlineto closepath
|
||
0.8 setgray 10 setlinewidth stroke 0 setgray
|
||
|
||
%
|
||
% Display user's login name, nice and large and prominent
|
||
%
|
||
/Helvetica-Bold findfont 64 scalefont setfont
|
||
$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
|
||
($user) show
|
||
|
||
%
|
||
% Now show the boring particulars
|
||
%
|
||
/Helvetica findfont 14 scalefont setfont
|
||
/y 200 def
|
||
[ (Job:) (Host:) (Date:) ] {
|
||
200 y moveto show /y y 18 sub def }
|
||
forall
|
||
|
||
/Helvetica-Bold findfont 14 scalefont setfont
|
||
/y 200 def
|
||
[ ($job) ($host) ($date) ] {
|
||
270 y moveto show /y y 18 sub def
|
||
} forall
|
||
|
||
%
|
||
% That is it
|
||
%
|
||
restore
|
||
showpage
|
||
EOF</programlisting>
|
||
|
||
<para>Τώρα, καθένα από τα φίλτρα μετατροπής και το φίλτρο κειμένου
|
||
μπορούν να καλέσουν το script, πρώτα για να δημιουργήσουν τη σελίδα
|
||
κεφαλίδας, και έπειτα για να εκτυπώσουν την εργασία του χρήστη.
|
||
Ακολουθεί το φίλτρο μετατροπής DVI που δείξαμε νωρίτερα, ειδικά
|
||
διαμορφωμένο για να φτιάξουμε μια σελίδα κεφαλίδας:</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# psdf - DVI to PostScript printer filter
|
||
# Installed in /usr/local/libexec/psdf
|
||
#
|
||
# Invoked by lpd when user runs lpr -d
|
||
#
|
||
|
||
orig_args="$@"
|
||
|
||
fail() {
|
||
echo "$@" 1>&2
|
||
exit 2
|
||
}
|
||
|
||
while getopts "x:y:n:h:" option; do
|
||
case $option in
|
||
x|y) ;; # Ignore
|
||
n) login=$OPTARG ;;
|
||
h) host=$OPTARG ;;
|
||
*) echo "LPD started `basename $0` wrong." 1>&2
|
||
exit 2
|
||
;;
|
||
esac
|
||
done
|
||
|
||
[ "$login" ] || fail "No login name"
|
||
[ "$host" ] || fail "No host name"
|
||
|
||
( /usr/local/libexec/make-ps-header $login $host "DVI File"
|
||
/usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args</programlisting>
|
||
|
||
<para>Παρατηρήστε πως το φίλτρο πρέπει να αναλύσει την λίστα
|
||
παραμέτρων για να προσδιορίσει το όνομα χρήστη και υπολογιστή. Η
|
||
μέθοδος ανάλυσης είναι παρόμοια και για τα υπόλοιπα φίλτρα
|
||
μετατροπής. Το φίλτρο κειμένου παίρνει ένα ελαφρώς διαφορετικό
|
||
σετ παραμέτρων, (δείτε την ενότητα <link
|
||
linkend="printing-advanced-filters">Πως δουλεύουν τα
|
||
Φίλτρα</link>).</para>
|
||
|
||
<para>Όπως αναφέραμε προηγούμενα, ο παραπάνω σχεδιασμός, αν και
|
||
πραγματικά απλός, απενεργοποιεί την επιλογή
|
||
<quote>παρεμπόδισης σελίδων κεφαλίδας</quote> (την επιλογή
|
||
<option>-h</option>) του <command>lpr</command>. Αν οι χρήστες
|
||
επιθυμούν να σώσουν ένα δέντρο (ή λίγα χρήματα, αν χρεώνετε τις
|
||
σελίδες κεφαλίδας), δεν θα υπάρχει τρόπος για να γίνει αυτό, από
|
||
τη στιγμή που κάθε εκτύπωση μέσω των φίλτρων θα συνοδεύεται και από
|
||
μια σελίδα κεφαλίδας για κάθε εργασία.</para>
|
||
|
||
<para>Για να επιτρέψετε στους χρήστες να απενεργοποιούν τις σελίδες
|
||
κεφαλίδας ανά εργασία, θα πρέπει να χρησιμοποιήσετε το τέχνασμα
|
||
που παρουσιάσαμε στην ενότητα <link
|
||
linkend="printing-advanced-header-pages-accounting">Καταμέτρηση με
|
||
Σελίδες Κεφαλίδας</link>: δηλαδή να γράψετε ένα φίλτρο εξόδου που
|
||
να αναλύει την σελίδα κεφαλίδας που δημιουργείται από το
|
||
<application>LPD</application> και να κατασκευάζει μια
|
||
&postscript; έκδοση. Αν ο χρήστης στείλει μια εργασία με
|
||
<command>lpr <option>-h</option></command>, τότε ούτε το
|
||
<application>LPD</application>, ούτε το φίλτρο εξόδου θα φτιάξουν
|
||
σελίδα κεφαλίδας. Σε όλες τις άλλες περιπτώσεις, το φίλτρο εξόδου
|
||
θα διαβάζει το κείμενο από το <application>LPD</application> και θα
|
||
στέλνει τον κατάλληλο κώδικα &postscript; στον εκτυπωτή ώστε να
|
||
εκτυπώνεται η σελίδα κεφαλίδας.</para>
|
||
|
||
<para>Αν έχετε εκτυπωτή &postscript; με σειριακή σύνδεση, μπορείτε να
|
||
κάνετε χρήση της <command>lprps</command>, η οποία συνοδεύεται από
|
||
ένα φίλτρο εξόδου, το <command>psof</command>, το οποία κάνει τα
|
||
παραπάνω. Σημειώστε πως το <command>psof</command> δεν χρεώνει για
|
||
τις σελίδες κεφαλίδας.</para>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2 id="printing-advanced-network-printers">
|
||
<title>Εκτυπώσεις μέσω Δικτύου</title>
|
||
|
||
<indexterm>
|
||
<primary>εκτυπωτές</primary>
|
||
<secondary>δίκτυο</secondary>
|
||
</indexterm>
|
||
<indexterm><primary>εκτυπώσεις μέσω δικτύου</primary></indexterm>
|
||
<para>Το &os; υποστηρίζει τις εκτυπώσεις μέσω δικτύου: μπορεί να στείλει
|
||
εργασίες σε απομακρυσμένους εκτυπωτές. Η έννοια της δικτυακής
|
||
εκτύπωσης αναφέρεται γενικά σε δύο διαφορετικά πράγματα:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Πρόσβαση σε εκτυπωτή συνδεδεμένο σε απομακρυσμένο υπολογιστή
|
||
(host). Εγκαθιστάτε έναν εκτυπωτή με συμβατική σειριακή ή
|
||
παράλληλη σύνδεση σε ένα υπολογιστή. Έπειτα, ρυθμίζετε το
|
||
<application>LPD</application> για να ενεργοποιηθεί η πρόσβαση
|
||
στον εκτυπωτή από άλλους υπολογιστές του δικτύου. Η ενότητα
|
||
<link linkend="printing-advanced-network-rm">Εκτυπωτές
|
||
Εγκατεστημένοι σε Απομακρυσμένους Υπολογιστές</link> εξηγεί τις
|
||
απαραίτητες ενέργειες.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Πρόσβαση σε εκτυπωτή συνδεδεμένο κατευθείαν στο δίκτυο.
|
||
Εκτός (ή αντί) της συμβατικής σειριακής ή παράλληλης θύρας, ο
|
||
εκτυπωτής πρέπει να έχει επιπρόσθετα μια δικτυακή διασύνδεση.
|
||
Ένας τέτοιος εκτυπωτής δουλεύει ως εξής:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Μπορεί να καταλαβαίνει το πρωτόκολλο
|
||
<application>LPD</application> και να δημιουργεί ουρά
|
||
αναμονής για τις εργασίες που προέρχονται από απομακρυσμένους
|
||
υπολογιστές. Σε αυτή την περίπτωση, ενεργεί σαν ένας
|
||
κανονικός υπολογιστής που εκτελεί το
|
||
<application>LPD</application>. Ακολουθήστε την ίδια
|
||
διαδικασία με την ενότητα <link
|
||
linkend="printing-advanced-network-rm">Εκτυπωτές
|
||
Εγκατεστημένοι σε Απομακρυσμένους Υπολογιστές</link> για να
|
||
εγκαταστήσετε αυτόν τον εκτυπωτή.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Μπορεί να υποστηρίζει σύνδεση δικτυακής ροής δεδομένων
|
||
(data stream). Σε αυτή την περίπτωση, <quote>συνδέετε</quote>
|
||
τον εκτυπωτή σε έναν υπολογιστή συνδεδεμένο στο δίκτυο, ο
|
||
οποίος θα είναι υπεύθυνος για την παροχέτευση των εργασιών
|
||
και την αποστολή τους στον εκτυπωτή. Η ενότητα <link
|
||
linkend="printing-advanced-network-net-if">Εκτυπωτές Με
|
||
Συνδέσεις Δικτύου</link> δίνει μερικές συμβουλές για την
|
||
εγκατάσταση εκτυπωτών αυτού του τύπου.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<sect3 id="printing-advanced-network-rm">
|
||
<title>Εκτυπωτές Εγκατεστημένοι σε Απομακρυσμένους Υπολογιστές</title>
|
||
|
||
<para>Το σύστημα παροχέτευσης <application>LPD</application> έχει
|
||
ενσωματωμένη υποστήριξη για την αποστολή εργασιών σε άλλους
|
||
υπολογιστές που εκτελούν το <application>LPD</application> (ή που
|
||
είναι συμβατοί με το <application>LPD</application>). Αυτό το
|
||
χαρακτηριστικό σας επιτρέπει να εγκαταστήσετε έναν εκτυπωτή σε ένα
|
||
υπολογιστή και να έχετε πρόσβαση σε αυτόν από άλλους. Επίσης
|
||
δουλεύει και με εκτυπωτές που έχουν δικτυακές διασυνδέσεις που
|
||
καταλαβαίνουν το πρωτόκολλο <application>LPD</application>.</para>
|
||
|
||
<para>Για να ενεργοποιήσετε αυτόν τον τύπο απομακρυσμένης εκτύπωσης,
|
||
εγκαταστήστε πρώτα έναν εκτυπωτή σε ένα υπολογιστή, τον
|
||
<emphasis>υπολογιστή εκτύπωσης (printer host)</emphasis>,
|
||
χρησιμοποιώντας την απλή εγκατάσταση εκτυπωτή που περιγράφεται στην
|
||
ενότητα <link
|
||
linkend="printing-simple">Βασικές Ρυθμίσεις Εκτυπωτών</link>.
|
||
Κάντε όσες προχωρημένες ρυθμίσεις χρειάζεστε όπως αναφέρεται στις
|
||
<link linkend="printing-advanced">Ρυθμίσεις Εκτυπωτών για
|
||
Προχωρημένους</link>. Ελέγξτε τον εκτυπωτή και δείτε αν δουλεύει
|
||
με τα χαρακτηριστικά του <application>LPD</application> που έχετε
|
||
ενεργοποιήσει. Επίσης βεβαιωθείτε πως ο
|
||
<emphasis>τοπικός υπολογιστής (local host)</emphasis> είναι
|
||
εξουσιοδοτημένος να χρησιμοποιεί τις υπηρεσίες του
|
||
<application>LPD</application> στον
|
||
<emphasis>απομακρυσμένο υπολογιστή (remote host)</emphasis>
|
||
(δείτε <link
|
||
linkend="printing-advanced-restricting-remote">Παρεμπόδιση
|
||
Εργασιών από Απομακρυσμένους Υπολογιστές</link>).</para>
|
||
|
||
<indexterm>
|
||
<primary>εκτυπωτές</primary>
|
||
<secondary>δίκτυο</secondary>
|
||
</indexterm>
|
||
<indexterm><primary>δικτυακές εκτυπώσεις</primary></indexterm>
|
||
<para>Εάν χρησιμοποιείτε εκτυπωτή με δικτυακή διασύνδεση που είναι
|
||
συμβατός με το <application>LPD</application>, τότε ο
|
||
<emphasis>ο υπολογιστής εκτύπωσης (printer host)</emphasis> είναι ο
|
||
εν λόγω εκτυπωτής, και το <emphasis>όνομα του εκτυπωτή</emphasis>
|
||
είναι το όνομα που έχετε ορίσει για τον εκτυπωτή. Δείτε την
|
||
τεκμηρίωση που συνοδεύει τον εκτυπωτή σας και/ή την κάρτα δικτύου
|
||
του.</para>
|
||
|
||
<tip>
|
||
<para>Αν χρησιμοποιείτε Hewlett Packard Laserjet με όνομα εκτυπωτή
|
||
<literal>text</literal> θα γίνονται αυτόματα οι μετατροπές από
|
||
LF σε CRLF, επομένως δεν χρειάζεται να τρέξετε το script
|
||
<filename>hpif</filename>.</para>
|
||
</tip>
|
||
|
||
<para>Επομένως, στους υπόλοιπους υπολογιστές όπου επιθυμείτε να έχετε
|
||
πρόσβαση στον εκτυπωτή, απλά κάντε μια καταχώριση στο αρχείο
|
||
<filename>/etc/printcap</filename> με τα ακόλουθα στοιχεία:</para>
|
||
|
||
<orderedlist>
|
||
<listitem>
|
||
<para>Ονομάστε την καταχώριση όπως επιθυμείτε: Για δική σας
|
||
ευκολία πιθανώς να θέλετε να χρησιμοποιήσετε το ίδιο όνομα και
|
||
τα ίδια παρωνύμια με αυτά του υπολογιστή εκτύπωσης.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Αφήστε την ικανότητα <literal>lp</literal> κενή, για την
|
||
ακρίβεια (<literal>:lp=:</literal>).</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Δημιουργήστε ένα κατάλογο spooling και προσδιορίστε την
|
||
τοποθεσία του με την ικανότητα <literal>sd</literal>. Το
|
||
<application>LPD</application> θα αποθηκεύει εδώ τις εργασίες
|
||
πριν την αποστολή τους στον υπολογιστή εκτύπωσης.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Τοποθετήστε το όνομα του υπολογιστή εκτύπωσης στην ικανότητα
|
||
<literal>rm</literal>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Τοποθετήστε το όνομα του εκτυπωτή στην ικανότητα
|
||
<literal>rp</literal>, στον
|
||
<emphasis>υπολογιστή εκτύπωσης</emphasis>.</para>
|
||
</listitem>
|
||
</orderedlist>
|
||
|
||
<para>Αυτό είναι όλο. Δεν χρειάζεται να δημιουργήσετε λίστα φίλτρων
|
||
μετατροπής, διαστάσεις σελίδας, ή οτιδήποτε άλλο στο
|
||
αρχείο<filename>/etc/printcap</filename>.</para>
|
||
|
||
<para>Εδώ είναι ένα παράδειγμα. Ο υπολογιστής <hostid>rose</hostid>
|
||
έχει δύο εκτυπωτές, τον <literal>bamboo</literal> και τον
|
||
<literal>rattan</literal>. Θέλουμε να ενεργοποιήσουμε τις
|
||
εκτυπώσεις σε αυτούς τους εκτυπωτές για τους χρήστες του
|
||
απομακρυσμένου υπολογιστή <hostid>orchid</hostid>. Εδώ είναι το
|
||
αρχείο <filename>/etc/printcap</filename> του υπολογιστή
|
||
<hostid>orchid</hostid> (δείτε πιο πίσω στην ενότητα <link
|
||
linkend="printing-advanced-header-pages-enabling">Ενεργοποίηση
|
||
Σελίδων Κεφαλίδας</link>). Ήδη έχει μια καταχώριση για τον
|
||
εκτυπωτή <literal>teak</literal>. Εδώ προσθέσαμε τις απαραίτητες
|
||
καταχωρίσεις για τους δύο εκτυπωτές του υπολογιστή
|
||
<hostid>rose</hostid>:</para>
|
||
|
||
<programlisting>#
|
||
# /etc/printcap for host orchid - added (remote) printers on rose
|
||
#
|
||
|
||
#
|
||
# teak is local; it is connected directly to orchid:
|
||
#
|
||
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
|
||
:lp=<filename class="devicefile">/dev/lpt0</filename>:sd=<filename class="directory">/var/spool/lpd/teak</filename>:mx#0:\
|
||
:if=<filename>/usr/local/libexec/ifhp</filename>:\
|
||
:vf=<filename>/usr/local/libexec/vfhp</filename>:\
|
||
:of=<filename>/usr/local/libexec/ofhp</filename>:
|
||
|
||
#
|
||
# rattan is connected to rose; send jobs for rattan to rose:
|
||
#
|
||
rattan|line|diablo|lp|Diablo 630 Line Printer:\
|
||
:lp=:rm=rose:rp=rattan:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:
|
||
|
||
#
|
||
# bamboo is connected to rose as well:
|
||
#
|
||
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
|
||
:lp=:rm=rose:rp=bamboo:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:</programlisting>
|
||
|
||
<para>Το μόνο που απομένει είναι να δημιουργήσουμε τους καταλόγους
|
||
spooling στον κόμβο <hostid>orchid</hostid>:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>mkdir <option>-p</option> <filename class="directory">/var/spool/lpd/rattan</filename> <filename class="directory">/var/spool/lpd/bamboo</filename></command></userinput>
|
||
&prompt.root; <userinput><command>chmod 770 <filename class="directory">/var/spool/lpd/rattan</filename> <filename class="directory">/var/spool/lpd/bamboo</filename></command></userinput>
|
||
&prompt.root; <userinput><command>chown daemon:daemon <filename class="directory">/var/spool/lpd/rattan</filename> <filename class="directory">/var/spool/lpd/bamboo</filename></command></userinput></screen>
|
||
|
||
<para>Τώρα, οι χρήστες του <hostid>orchid</hostid> μπορούν να
|
||
εκτυπώνουν στον <literal>rattan</literal> και στον
|
||
<literal>bamboo</literal>. Αν, για παράδειγμα, ένας χρήστης του
|
||
<hostid>orchid</hostid> πληκτρολογήσει:
|
||
|
||
<screen>&prompt.user; <userinput><command>lpr <option>-P</option> bamboo <option>-d</option> <filename><replaceable>sushi-review.dvi</replaceable></filename></command></userinput></screen>
|
||
|
||
το σύστημα <application>LPD</application> στον
|
||
<hostid>orchid</hostid> θα αντιγράψει την εργασία στον κατάλογο
|
||
spooling
|
||
<filename class="directory">/var/spool/lpd/bamboo</filename> και θα
|
||
σημειώσει πως πρόκειται για εργασία DVI. Μόλις ο υπολογιστής
|
||
<hostid>rose</hostid> έχει διαθέσιμο χώρο στον κατάλογο spooling του
|
||
<literal>bamboo</literal>, τα δύο <application>LPDs</application>
|
||
θα μεταφέρουν το αρχείο στον <hostid>rose</hostid>. Το αρχείο θα
|
||
μπει σε ουρά αναμονής στον υπολογιστή <hostid>rose</hostid> έως
|
||
ότου εκτυπωθεί. Θα μετατραπεί από DVI σε &postscript; (αφού ο
|
||
<literal>bamboo</literal> είναι εκτυπωτής &postscript;) στον
|
||
υπολογιστή <hostid>rose</hostid>.</para>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-advanced-network-net-if">
|
||
<title>Εκτυπωτές με Συνδέσεις Δικτύου</title>
|
||
|
||
<para>Συχνά, όταν αγοράζετε κάρτα δικτύου για εκτυπωτή, έχετε τη
|
||
δυνατότητα επιλογής δύο εκδόσεων: η μία είναι προσομοίωση του
|
||
spooler (η πιο ακριβή έκδοση) ενώ η άλλη απλά σας επιτρέπει να
|
||
στέλνετε δεδομένα μέσω αυτής σαν να χρησιμοποιούσατε μια σειριακή
|
||
ή παράλληλη θύρα (η φτηνή έκδοση). Αυτή η ενότητα περιγράφει πως να
|
||
χρησιμοποιείτε την φτηνή έκδοση. Για την πιο ακριβή έκδοση μπορείτε
|
||
να βρείτε περισσότερες πληροφορίες στην προηγούμενη ενότητα <link
|
||
linkend="printing-advanced-network-rm">Εκτυπωτές Εγκατεστημένοι
|
||
σε Απομακρυσμένους Υπολογιστές</link>.</para>
|
||
|
||
<para>Η μορφή του αρχείου <filename>/etc/printcap</filename> σας
|
||
επιτρέπει να ορίσετε τη διασύνδεση - σειριακή ή παράλληλη - που θα
|
||
χρησιμοποιήσετε, και (αν χρησιμοποιείτε σειριακή διασύνδεση) τον
|
||
ρυθμό baud, πιθανούς ελέγχους ροής, καθυστερήσεις για tabs,
|
||
μετατροπές για χαρακτήρες νέας γραμμής, και άλλα. Αλλά δεν υπάρχει
|
||
τρόπος να ορίσετε μια σύνδεση σε εκτυπωτή που ακούει σε θύρα TCP/IP
|
||
ή άλλο τύπο δικτύου.</para>
|
||
|
||
<para>Για να στείλετε δεδομένα σε ένα δικτυακό εκτυπωτή, χρειάζεται
|
||
να αναπτύξετε προγράμματα επικοινωνίας που να καλούνται από φίλτρα
|
||
κειμένου και φίλτρα μετατροπής. Εδώ έχουμε ένα τέτοιο παράδειγμα:
|
||
το script <command>netprint</command> παίρνει όλα τα δεδομένα από
|
||
το standard input και τα στέλνει σε έναν εκτυπωτή συνδεδεμένο στο
|
||
δίκτυο. Ορίζουμε στο <command>netprint</command> το όνομα
|
||
του εκτυπωτή ως πρώτη παράμετρο, και τον αριθμό θύρας στην οποία
|
||
συνδέεται ως δεύτερη. Σημειώστε πως αυτός ο τρόπος υποστηρίζει
|
||
μόνο επικοινωνία μιας κατεύθυνσης (από το &os; στον εκτυπωτή).
|
||
Πολλοί δικτυακοί εκτυπωτές υποστηρίζουν αμφίδρομη επικοινωνία, και
|
||
είναι πολύ πιθανό να επιθυμείτε να εκμεταλλευτείτε τα προτερήματα
|
||
τους (για να ελέγχετε την κατάσταση του εκτυπωτή, για καταμέτρηση
|
||
εκτυπώσεων, κλπ.).</para>
|
||
|
||
<programlisting>#!/usr/bin/perl
|
||
#
|
||
# netprint - Text filter for printer attached to network
|
||
# Installed in /usr/local/libexec/netprint
|
||
#
|
||
$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";
|
||
|
||
$printer_host = $ARGV[0];
|
||
$printer_port = $ARGV[1];
|
||
|
||
require 'sys/socket.ph';
|
||
|
||
($ignore, $ignore, $protocol) = getprotobyname('tcp');
|
||
($ignore, $ignore, $ignore, $ignore, $address)
|
||
= gethostbyname($printer_host);
|
||
|
||
$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);
|
||
|
||
socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
|
||
|| die "Can't create TCP/IP stream socket: $!";
|
||
connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
|
||
while (<STDIN>) { print PRINTER; }
|
||
exit 0;</programlisting>
|
||
|
||
<para>Μπορείτε να χρησιμοποιήσετε αυτό το script σε διάφορα φίλτρα.
|
||
Ας υποθέσουμε πως έχουμε έναν εκτυπωτή γραμμής Diablo 750-N
|
||
συνδεδεμένο στο δίκτυο. Ο εκτυπωτής δέχεται δεδομένα προς εκτύπωση
|
||
στην θύρα 5100. Το όνομα του εκτυπωτή στο δίκτυο είναι
|
||
<hostid>scrivener</hostid>. Εδώ είναι το φίλτρο κειμένου για τον
|
||
εκτυπωτή:</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# diablo-if-net - Text filter for Diablo printer `scrivener' listening
|
||
# on port 5100. Installed in /usr/local/libexec/diablo-if-net
|
||
#
|
||
exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100</programlisting>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2 id="printing-advanced-restricting">
|
||
<title>Έλεγχος Πρόσβασης και Περιορισμοί στη Χρήση των Εκτυπωτών</title>
|
||
|
||
<indexterm>
|
||
<primary>εκτυπωτές</primary>
|
||
<secondary>έλεγχος πρόσβασης</secondary>
|
||
</indexterm>
|
||
<para>Αυτή η ενότητα δίνει πληροφορίες για τον έλεγχο πρόσβασης και τον
|
||
περιορισμό χρήσης των εκτυπωτών. Το σύστημα
|
||
<application>LPD</application> σας επιτρέπει να ελέγχετε ποιός μπορεί
|
||
να έχει πρόσβαση σε κάθε εκτυπωτή, τόσο τοπικά όσο και απομακρυσμένα,
|
||
και επίσης αν μπορούν οι χρήστες να εκτυπώνουν πολλαπλά αντίγραφα,
|
||
πόσο μεγάλες μπορούν να είναι οι εργασίες τους, και πόσο μεγάλες
|
||
μπορούν να γίνουν οι ουρές αναμονής (print queues).</para>
|
||
|
||
<sect3 id="printing-advanced-restricting-copies">
|
||
<title>Περιορισμός Εκτύπωσης Πολλαπλών Αντιγράφων</title>
|
||
|
||
<para>Το σύστημα <application>LPD</application> διευκολύνει τους
|
||
χρήστες να εκτυπώσουν πολλαπλά αντίγραφα ενός αρχείου. Οι χρήστες
|
||
μπορούν να εκτυπώνουν εργασίες με
|
||
<command>lpr <option>-#5</option></command> (για
|
||
παράδειγμα) και να παίρνουν πέντε αντίγραφα κάθε αρχείου της
|
||
εργασίας εκτύπωσης. Το αν αυτό είναι καλό, εξαρτάται από
|
||
εσάς.</para>
|
||
|
||
<para>Αν πιστεύετε πως τα πολλαπλά αντίγραφα δημιουργούν άσκοπη
|
||
καταπόνηση των εκτυπωτών σας, μπορείτε να απενεργοποιήσετε
|
||
την επιλογή <option>-#</option> στο &man.lpr.1; προσθέτοντας την
|
||
ικανότητα <literal>sc</literal> στο αρχείο
|
||
<filename>/etc/printcap</filename>. Όταν οι χρήστες αποστέλλουν
|
||
εργασίες με την επιλογή <option>-#</option>, θα βλέπουν:</para>
|
||
|
||
<screen>lpr: multiple copies are not allowed</screen>
|
||
|
||
<para>Σημειώστε πως αν έχετε ρυθμίσει πρόσβαση σε έναν εκτυπωτή
|
||
απομακρυσμένα (δείτε την ενότητα <link
|
||
linkend="printing-advanced-network-rm">Εκτυπωτές Εγκατεστημένοι σε
|
||
Απομακρυσμένους Υπολογιστές</link>), θα χρειαστεί να προσθέσετε
|
||
την ικανότητα <literal>sc</literal> σε όλα τα απομακρυσμένα αρχεία
|
||
<filename>/etc/printcap</filename>, διαφορετικά οι χρήστες θα
|
||
έχουν ακόμη την δυνατότητα να αποστέλλουν εργασίες πολλαπλών
|
||
αντιγράφων χρησιμοποιώντας διαφορετικό κόμβο.</para>
|
||
|
||
<para>Εδώ είναι ένα παράδειγμα. Αυτό είναι το αρχείο
|
||
<filename>/etc/printcap</filename> για τον κόμβο
|
||
<hostid>rose</hostid>. Ο εκτυπωτής <literal>rattan</literal>
|
||
είναι δυνατό μηχάνημα και επιτρέπει την εκτύπωση πολλαπλών
|
||
αντιγράφων, αλλά ο εκτυπωτής laser <literal>bamboo</literal> είναι
|
||
πιο ευαίσθητο, επομένως θα απενεργοποιήσουμε τη δυνατότητα
|
||
πολλαπλών αντιγράφων προσθέτοντας την ικανότητα
|
||
<literal>sc</literal>:</para>
|
||
|
||
<programlisting>#
|
||
# /etc/printcap for host rose - restrict multiple copies on bamboo
|
||
#
|
||
rattan|line|diablo|lp|Diablo 630 Line Printer:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:\
|
||
:lp=<filename class="devicefile">/dev/lpt0</filename>:\
|
||
:if=<filename>/usr/local/libexec/if-simple</filename>:
|
||
|
||
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:sc:\
|
||
:lp=<filename class="devicefile">/dev/ttyd5</filename>:ms#-parenb cs8 clocal crtscts:rw:\
|
||
:if=<filename>/usr/local/libexec/psif</filename>:\
|
||
:df=<filename>/usr/local/libexec/psdf</filename>:</programlisting>
|
||
|
||
<para>Τώρα, θα χρειαστεί να προσθέσουμε επίσης την ικανότητα
|
||
<literal>sc</literal> στο αρχείο <filename>/etc/printcap</filename>
|
||
του κόμβου <hostid>orchid</hostid> (και ενώ βρισκόμαστε σε αυτό,
|
||
επιτρέψτε μας να απενεργοποιήσουμε τα πολλαπλά αντίγραφα για τον
|
||
εκτυπωτή <literal>teak</literal>):</para>
|
||
|
||
<programlisting>#
|
||
# /etc/printcap for host orchid - no multiple copies for local
|
||
# printer teak or remote printer bamboo
|
||
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
|
||
:lp=<filename class="devicefile">/dev/lpt0</filename>:sd=<filename class="directory">/var/spool/lpd/teak</filename>:mx#0:sc:\
|
||
:if=<filename>/usr/local/libexec/ifhp</filename>:\
|
||
:vf=<filename>/usr/local/libexec/vfhp</filename>:\
|
||
:of=<filename>/usr/local/libexec/ofhp</filename>:
|
||
|
||
rattan|line|diablo|lp|Diablo 630 Line Printer:\
|
||
:lp=:rm=rose:rp=rattan:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:
|
||
|
||
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
|
||
:lp=:rm=rose:rp=bamboo:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:sc:</programlisting>
|
||
|
||
<para>Χρησιμοποιώντας την ικανότητα <literal>sc</literal>,
|
||
προλαμβάνουμε την χρήση των εντολών
|
||
<command>lpr <option>-#</option></command>,
|
||
αλλά δεν έχουμε ακόμη την δυνατότητα να παρεμποδίσουμε τους χρήστες
|
||
να τρέξουν την εντολή &man.lpr.1; πολλές φορές, ή να αποστείλουν
|
||
το ίδιο αρχείο πολλές φορές σε μία μοναδική εργασία, όπως
|
||
εδώ:</para>
|
||
|
||
<screen>&prompt.user; <userinput><command>lpr <filename><replaceable>forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign</replaceable></filename></command></userinput></screen>
|
||
|
||
<para>Υπάρχουν πολλοί τρόποι πρόληψης αυτών των ενεργειών
|
||
(συμπεριλαμβάνοντας και την περίπτωση να το αγνοήσετε) που είστε
|
||
ελεύθεροι να εξερευνήσετε.</para>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-advanced-restricting-access">
|
||
<title>Περιορίζοντας την Πρόσβαση σε Εκτυπωτές</title>
|
||
|
||
<para>Μπορείτε να ελέγχετε ποιός μπορεί να εκτυπώνει σε ποιόν
|
||
εκτυπωτή χρησιμοποιώντας τους μηχανισμούς ομάδων (groups) του &unix;
|
||
και την ικανότητα <literal>rg</literal> στο
|
||
<filename>/etc/printcap</filename>. Απλά τοποθετήστε τους χρήστες
|
||
που θέλετε να έχουν πρόσβαση σε κάποιον εκτυπωτή σε μια
|
||
συγκεκριμένη ομάδα (χρηστών), και δηλώστε αυτή την ομάδα στην
|
||
ικανότητα <literal>rg</literal>.</para>
|
||
|
||
<para>Όλοι οι χρήστες που δεν ανήκουν στην ομάδα (συμπεριλαμβανομένου
|
||
και του <username>root</username>) θα δέχονται το ακόλουθο μήνυμα:
|
||
<errorname>lpr: Not a member of the restricted group</errorname>
|
||
όταν προσπαθούν να εκτυπώσουν στον ελεγχόμενο εκτυπωτή.</para>
|
||
|
||
<para>Όπως και με την ικανότητα <literal>sc</literal>
|
||
(περιορισμού πολλαπλών αντιγράφων), θα χρειαστεί να προσδιορίσετε
|
||
την <literal>rg</literal> στους απομακρυσμένους κόμβους που θα
|
||
έχουν πρόσβαση στους εκτυπωτές σας, αν νομίζετε πως αυτό είναι
|
||
σωστό (δείτε την ενότητα <link
|
||
linkend="printing-advanced-network-rm">Εκτυπωτές Εγκατεστημένοι
|
||
σε Απομακρυσμένους Υπολογιστές</link>).</para>
|
||
|
||
<para>Για παράδειγμα, θα αφήσουμε για όλους ελεύθερη την πρόσβαση
|
||
στον εκτυπωτή <literal>rattan</literal>, αλλά μόνο οι χρήστες της
|
||
ομάδας <literal>artists</literal> θα μπορούν να χρησιμοποιήσουν τον
|
||
<literal>bamboo</literal>. Εδώ είναι το γνωστό μας
|
||
<filename>/etc/printcap</filename> για τον κόμβο
|
||
<hostid>rose</hostid>:</para>
|
||
|
||
<programlisting>#
|
||
# /etc/printcap for host rose - restricted group for bamboo
|
||
#
|
||
rattan|line|diablo|lp|Diablo 630 Line Printer:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:\
|
||
:lp=<filename class="devicefile">/dev/lpt0</filename>:\
|
||
:if=<filename>/usr/local/libexec/if-simple</filename>:
|
||
|
||
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:sc:rg=artists:\
|
||
:lp=<filename class="devicefile">/dev/ttyd5</filename>:ms#-parenb cs8 clocal crtscts:rw:\
|
||
:if=<filename>/usr/local/libexec/psif</filename>:\
|
||
:df=<filename>/usr/local/libexec/psdf</filename>:</programlisting>
|
||
|
||
<para>Επιτρέψτε μας να μην αλλάξουμε το αρχείο
|
||
<filename>/etc/printcap</filename> από το άλλο παράδειγμα
|
||
(για τον υπολογιστή <hostid>orchid</hostid>). Φυσικά, οποιοσδήποτε
|
||
χρήστης του <hostid>orchid</hostid> μπορεί να εκτυπώσει στον
|
||
<literal>bamboo</literal>. Ίσως όμως να επιτρέπουμε μόνον σε
|
||
συγκεκριμένους χρήστες την πρόσβαση στον υπολογιστή
|
||
<hostid>orchid</hostid>, και θέλουμε αυτοί οι χρήστες να έχουν
|
||
πρόσβαση στον εκτυπωτή. Ή ίσως πάλι, και όχι.</para>
|
||
|
||
<note>
|
||
<para>Επιτρέπεται μόνο μια περιορισμένη ομάδα ανά εκτυπωτή.</para>
|
||
</note>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-advanced-restricting-sizes">
|
||
<title>Έλεγχος Μεγέθους των Απεσταλμένων Εργασιών</title>
|
||
|
||
<indexterm><primary>εργασίες εκτύπωσης</primary></indexterm>
|
||
<para>Αν πολλοί χρήστες έχουν πρόσβαση στους εκτυπωτές σας, πιθανώς
|
||
να χρειάζεται να θέσετε ένα ανώτατο όριο στο επιτρεπόμενο μέγεθος
|
||
αρχείων που μπορούν να αποστείλουν οι χρήστες για εκτύπωση. Ακόμα
|
||
και αν υπάρχει αρκετός χώρος στο σύστημα αρχείων που φιλοξενεί τους
|
||
καταλόγους spool, θα πρέπει ωστόσο να βεβαιωθείτε ότι επαρκεί για
|
||
τις εργασίες όλων των χρηστών.</para>
|
||
|
||
<indexterm>
|
||
<primary>εργασίες εκτύπωσης</primary>
|
||
<secondary>έλεγχος</secondary>
|
||
</indexterm>
|
||
<para>Το <application>LPD</application> σας επιτρέπει να
|
||
οριοθετήσετε το μέγιστο αριθμό bytes που περιέχει μια εργασία, με
|
||
την ικανότητα <literal>mx</literal>. Η μονάδα μέτρησης είναι σε
|
||
<literal>BUFSIZ</literal> blocks, τα οποία είναι 1024 bytes. Αν
|
||
θέσετε μηδέν σε αυτή την ικανότητα, δεν θα υπάρχουν όρια στο
|
||
μέγεθος των αρχείων. Ωστόσο, αν δεν έχει οριστεί η ικανότητα
|
||
<literal>mx</literal>, τότε θα χρησιμοποιείται η προεπιλεγμένη τιμή
|
||
των 1000 blocks.</para>
|
||
|
||
<note>
|
||
<para>Το όριο εφαρμόζεται στα <emphasis>αρχεία</emphasis> μιας
|
||
εργασίας, και <emphasis>όχι</emphasis> στο συνολικό μέγεθος της
|
||
εργασίας.</para>
|
||
</note>
|
||
|
||
<para>Το <application>LPD</application> δεν θα απορρίψει ένα αρχείο
|
||
που ξεπερνά το όριο μεγέθους που έχετε θέσει. Αντιθέτως, θα το
|
||
τοποθετήσει στην ουρά αναμονής με μέγεθος ίσο με το μέγιστο
|
||
επιτρεπτό, το οποίο και θα εκτυπώσει τελικά. Το υπόλοιπο αρχείο
|
||
απορρίπτεται. Αν αυτός είναι σωστός ή λανθασμένος τρόπος
|
||
αντιμετώπισης για την υπέρβαση του ορίου, είναι θέμα προς
|
||
συζήτηση.</para>
|
||
|
||
<para>Ας οριοθετήσουμε στο παράδειγμα μας τους εκτυπωτές
|
||
<literal>rattan</literal> και <literal>bamboo</literal>. Επειδή
|
||
τα αρχεία &postscript; των <groupname>artists</groupname> τείνουν
|
||
προς μεγάλα μεγέθη, θα θέσουμε ένα όριο πέντε megabytes. Δεν θα
|
||
θέσουμε όρια για τον εκτυπωτή γραμμής απλού κειμένου:</para>
|
||
|
||
<programlisting>#
|
||
# /etc/printcap for host rose
|
||
#
|
||
|
||
#
|
||
# No limit on job size:
|
||
#
|
||
rattan|line|diablo|lp|Diablo 630 Line Printer:\
|
||
:sh:mx#0:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:\
|
||
:lp=<filename class="devicefile">/dev/lpt0</filename>:\
|
||
:if=<filename>/usr/local/libexec/if-simple</filename>:
|
||
|
||
#
|
||
# Limit of five megabytes:
|
||
#
|
||
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:sc:rg=artists:mx#5000:\
|
||
:lp=<filename class="devicefile">/dev/ttyd5</filename>:ms#-parenb cs8 clocal crtscts:rw:\
|
||
:if=<filename>/usr/local/libexec/psif</filename>:\
|
||
:df=<filename>/usr/local/libexec/psdf</filename>:</programlisting>
|
||
|
||
<para>Και πάλι, τα όρια εφαρμόζονται μόνο για τους τοπικούς χρήστες.
|
||
Αν έχετε ενεργοποιήσει απομακρυσμένη πρόσβαση για τους εκτυπωτές
|
||
σας, τα όρια αυτά δεν ισχύουν για τους απομακρυσμένους χρήστες. Θα
|
||
χρειαστεί να προσδιορίσετε με την ικανότητα <literal>mx</literal>
|
||
και τα απομακρυσμένα αρχεία <filename>/etc/printcap</filename>.
|
||
Δείτε την ενότητα <link
|
||
linkend="printing-advanced-network-rm">Εκτυπωτές Εγκατεστημένοι σε
|
||
Απομακρυσμένους Υπολογιστές</link> για περισσότερες πληροφορίες
|
||
σχετικά με τις εκτυπώσεις από απομακρυσμένους υπολογιστές.</para>
|
||
|
||
<para>Υπάρχει και άλλος εξειδικευμένος τρόπος περιορισμού του μεγέθους
|
||
εργασιών για απομακρυσμένους εκτυπωτές. Δείτε την ενότητα <link
|
||
linkend="printing-advanced-restricting-remote">Περιορισμός
|
||
Εργασιών από Απομακρυσμένους Υπολογιστές</link>.</para>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-advanced-restricting-remote">
|
||
<title>Περιορισμός Εργασιών από Απομακρυσμένους Υπολογιστές</title>
|
||
|
||
<para>Το σύστημα παροχέτευσης <application>LPD</application> παρέχει
|
||
διάφορους τρόπους περιορισμού των εργασιών από απομακρυσμένους
|
||
υπολογιστές:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>Παρεμπόδιση υπολογιστών</term>
|
||
|
||
<listitem>
|
||
<para>Μπορείτε να ελέγχετε από ποιους απομακρυσμένους
|
||
υπολογιστές θα δέχεται αιτήσεις εκτύπωσης το τοπικό
|
||
<application>LPD</application>, χρησιμοποιώντας τα αρχεία
|
||
<filename>/etc/hosts.equiv</filename> και
|
||
<filename>/etc/hosts.lpd</filename>. Το
|
||
<application>LPD</application> ελέγχει να δει αν η εισερχόμενη
|
||
αίτηση προέρχεται από έναν υπολογιστή που αναφέρεται σε κάποιο
|
||
από τα δύο αρχεία. Αν όχι, το <application>LPD</application>
|
||
απορρίπτει την αίτηση.</para>
|
||
|
||
<para>Η μορφή αυτών των αρχείων είναι απλή: ένα όνομα υπολογιστή
|
||
ανά γραμμή. Παρατηρήστε πως το αρχείο
|
||
<filename>/etc/hosts.equiv</filename> χρησιμοποιείται και από
|
||
το πρωτόκολλο &man.ruserok.3;, και επηρεάζει προγράμματα όπως
|
||
το &man.rsh.1; και το &man.rcp.1;, επομένως να είστε
|
||
προσεκτικοί.</para>
|
||
|
||
<para>Για παράδειγμα, εδώ είναι το αρχείο
|
||
<filename>/etc/hosts.lpd</filename> στον υπολογιστή
|
||
<hostid>rose</hostid>:</para>
|
||
|
||
<programlisting>orchid
|
||
violet
|
||
madrigal.fishbaum.de</programlisting>
|
||
|
||
<para>Αυτό σημαίνει πως ο <hostid>rose</hostid> δέχεται
|
||
αιτήσεις από τους υπολογιστές <hostid>orchid</hostid>,
|
||
<hostid>violet</hostid>, και
|
||
<hostid role="fqdn">madrigal.fishbaum.de</hostid>. Αν
|
||
κάποιος άλλος υπολογιστής προσπαθήσει να αποκτήσει πρόσβαση
|
||
στο <application>LPD</application> του <hostid>rose</hostid>,
|
||
η εργασία θα απορριφθεί.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Περιορισμοί στο Μέγεθος</term>
|
||
|
||
<listitem>
|
||
<para>Μπορείτε να ελέγχετε πόσος ελεύθερος χώρος πρέπει να
|
||
απομένει στο σύστημα αρχείων όπου βρίσκεται ο κατάλογος
|
||
spool. Δημιουργήστε ένα αρχείο με όνομα
|
||
<filename>minfree</filename> στον κατάλογο spool για τον
|
||
τοπικό εκτυπωτή. Εισάγετε σε αυτό το αρχείο έναν αριθμό που
|
||
αντιπροσωπεύει πόσα blocks δίσκου (512 bytes) ελεύθερου χώρου
|
||
πρέπει να υπάρχουν για να είναι δεκτή μια απομακρυσμένη
|
||
εργασία.</para>
|
||
|
||
<para>Αυτό σας επιτρέπει να είστε βέβαιοι πως οι απομακρυσμένοι
|
||
χρήστες δεν θα γεμίσουν το σύστημα αρχείων σας. Μπορείτε
|
||
επίσης να το χρησιμοποιήσετε για να δώσετε μερική
|
||
προτεραιότητα στους τοπικούς χρήστες: οι τοπικοί χρήστες θα
|
||
μπορούν να στέλνουν εργασίες στην ουρά αναμονής ακόμη και
|
||
όταν ο ελεύθερος χώρος του δίσκου έχει πέσει κάτω από τον
|
||
αριθμό που αναφέρεται στο αρχείο
|
||
<filename>minfree</filename>.</para>
|
||
|
||
<para>Για παράδειγμα, ας προσθέσουμε ένα αρχείο
|
||
<filename>minfree</filename> για τον εκτυπωτή
|
||
<literal>bamboo</literal>. Εξετάζουμε το
|
||
<filename>/etc/printcap</filename> για να βρούμε τον κατάλογο
|
||
spool για αυτόν τον εκτυπωτή. Εδώ είναι η καταχώριση για τον
|
||
<literal>bamboo</literal>:</para>
|
||
|
||
<programlisting>bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/bamboo</filename>:sc:rg=artists:mx#5000:\
|
||
:lp=<filename class="devicefile">/dev/ttyd5</filename>:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\
|
||
:if=<filename>/usr/local/libexec/psif</filename>:\
|
||
:df=<filename>/usr/local/libexec/psdf</filename>:</programlisting>
|
||
|
||
<para>Ο κατάλογος spool καθορίζεται στην ικανότητα
|
||
<literal>sd</literal>. Θα θέσουμε τρία megabytes (ισοδυναμεί
|
||
με 6144 disk blocks) ως το μέγεθος του ελεύθερου χώρου που
|
||
πρέπει να υπάρχει στο σύστημα αρχείων, ώστε το
|
||
<application>LPD</application> να δέχεται απομακρυσμένες
|
||
εργασίες:</para>
|
||
|
||
<screen>&prompt.root; <userinput><command>echo 6144 > <filename>/var/spool/lpd/bamboo/minfree</filename></command></userinput></screen>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Περιορισμοί χρηστών</term>
|
||
|
||
<listitem>
|
||
<para>Μπορείτε να ελέγχετε ποιός απομακρυσμένος χρήστης μπορεί
|
||
να εκτυπώνει στους τοπικούς εκτυπωτές ορίζοντας την ικανότητα
|
||
<literal>rs</literal> στο <filename>/etc/printcap</filename>.
|
||
Όταν εμφανίζεται η <literal>rs</literal> σε μια καταχώριση
|
||
κάποιου τοπικά συνδεδεμένου εκτυπωτή, το
|
||
<application>LPD</application> θα δεχθεί εργασίες από
|
||
απομακρυσμένους υπολογιστές <emphasis>αν</emphasis> ο χρήστης
|
||
που αποστέλλει την εργασία έχει λογαριασμό στον τοπικό
|
||
υπολογιστή και με το ίδιο όνομα χρήστη. Διαφορετικά, το
|
||
<application>LPD</application> θα απορρίψει την
|
||
εργασία.</para>
|
||
|
||
<para>Αυτή η ικανότητα είναι ιδιαίτερα χρήσιμη σε περιβάλλοντα
|
||
όπου υπάρχουν (για παράδειγμα) διαφορετικά επιχειρησιακά
|
||
τμήματα που μοιράζονται το δίκτυο, και κάποιοι χρήστες
|
||
πρέπει να υπερβαίνουν τα σύνορα του τμήματος. Δημιουργώντας
|
||
λογαριασμούς στα συστήματα σας, θα μπορούν να χρησιμοποιούν
|
||
τους εκτυπωτές σας από το δικό τους τμήμα της επιχείρησης.
|
||
Αν επιθυμείτε να τους επιτρέπετε να χρησιμοποιούν
|
||
<emphasis>μόνο</emphasis> τους εκτυπωτές και όχι τα
|
||
μηχανήματα σας, τότε μπορείτε να δημιουργήσετε
|
||
λογαριασμούς <quote>token</quote>, δίχως προσωπικούς
|
||
καταλόγους και με κέλυφος που δεν μπορεί να χρησιμοποιηθεί,
|
||
όπως το <filename>/usr/bin/false</filename>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2 id="printing-advanced-acct">
|
||
<title>Καταμέτρηση Χρήσης Εκτυπωτών</title>
|
||
|
||
<indexterm>
|
||
<primary>καταμέτρηση</primary>
|
||
<secondary>εκτυπωτής</secondary>
|
||
</indexterm>
|
||
<para>Αποφασίσατε ότι χρειάζεται να χρεώνετε για τις εκτυπώσεις σας.
|
||
Και γιατί όχι; Το χαρτί και το μελάνι κοστίζουν χρήματα. Και
|
||
επιπλέον υπάρχει κόστος συντήρησης — οι εκτυπωτές αποτελούνται
|
||
από κινητά μέρη και έχουν την τάση να χαλάνε. Έχετε εξετάσει τους
|
||
εκτυπωτές σας, τον τρόπο που χρησιμοποιούνται, και το κόστος
|
||
συντήρησης και έχετε υπολογίσει μια χρέωση ανά σελίδα (ή ανά μέτρο,
|
||
ανά πόδι, ή άλλη μονάδα μέτρησης). Το θέμα είναι τώρα πως μπορείτε
|
||
πραγματικά να ξεκινήσετε να καταμετράτε τις εκτυπώσεις σας.</para>
|
||
|
||
<para>Τα άσχημα νέα είναι πως το σύστημα παροχέτευσης του
|
||
<application>LPD</application> δεν παρέχει πολύ βοήθεια σε αυτόν τον
|
||
τομέα. Η καταμέτρηση εξαρτάται σε μεγάλο βαθμό από τον τύπο του
|
||
εκτυπωτή που χρησιμοποιείτε, τους τύπους αρχείων που εκτυπώνετε, και
|
||
τις <emphasis>δικές σας</emphasis> απαιτήσεις για την χρέωση των
|
||
εκτυπώσεων.</para>
|
||
|
||
<para>Για την καταμέτρηση, θα πρέπει να μετατρέψετε το φίλτρο κειμένου
|
||
(για τη χρέωση εργασιών απλού κειμένου) του εκτυπωτή και τα φίλτρα
|
||
μετατροπής (για τη χρέωση όλων των άλλων τύπων αρχείων) ώστε να
|
||
μετρούν σελίδες ή να ζητούν να μάθουν από τον εκτυπωτή τον αριθμό των
|
||
εκτυπωμένων σελίδων. Δεν θα σας βοηθήσει ιδιαίτερα η χρήση φίλτρου
|
||
εξόδου, από τη στιγμή που δεν μπορεί να κάνει καταμέτρηση. Δείτε την
|
||
ενότητα <link linkend="printing-advanced-filter-intro">Φίλτρα</link>.</para>
|
||
|
||
<para>Γενικά, υπάρχουν δύο τρόποι για να κάνετε καταμέτρηση:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Η <emphasis>Περιοδική καταμέτρηση</emphasis> είναι ο πιο
|
||
συνηθισμένος τρόπος, πιθανώς γιατί είναι ο ευκολότερος. Κάθε φορά
|
||
που κάποιος εκτυπώνει μια εργασία, το φίλτρο δημιουργεί ένα
|
||
αρχείο καταγραφής όπου αναφέρει τον χρήστη, τον υπολογιστή, και
|
||
τον αριθμό των σελίδων. Κάθε μήνα, εξάμηνο, χρόνο, ή άλλη χρονική
|
||
περίοδο της αρεσκείας σας, συλλέγετε τα αρχεία καταγραφής για τους
|
||
διάφορους εκτυπωτές, λογαριάζετε τις σελίδες που αναλογούν στους
|
||
χρήστες, και χρεώνετε αναλόγως. Έπειτα σβήνετε τα στοιχεία από τα
|
||
αρχεία καταγραφής, ξεκινώντας από καθαρή κατάσταση για την επόμενη
|
||
περίοδο.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Η <emphasis>Καταμέτρηση κατά τη χρήση</emphasis> είναι
|
||
λιγότερο γνωστή, ίσως επειδή είναι πιο δύσκολος τρόπος. Σε αυτή
|
||
τη μέθοδο τα φίλτρα χρεώνουν τους χρήστες για τις εκτυπώσεις τους
|
||
αμέσως μόλις αυτές πραγματοποιηθούν. Όπως και με την καταγραφή
|
||
χρήσης δίσκου (disk quotas), η καταμέτρηση είναι άμεση. Μπορείτε
|
||
να προλαμβάνετε την χρήση εκτυπωτών από χρήστες που έχουν χτυπήσει
|
||
κόκκινο, και μπορείτε να παρέχετε στους χρήστες ένα τρόπο για να
|
||
ελέγχουν και να ρυθμίζουν τον <quote>όγκο εκτυπώσεων (print
|
||
quotas).</quote> Αλλά αυτή η μέθοδος προϋποθέτει λίγο κώδικα
|
||
βάσεων δεδομένων για την καταγραφή χρηστών και των εν λόγω
|
||
μεγεθών.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Το σύστημα παροχέτευσης <application>LPD</application>
|
||
υποστηρίζει εύκολα και τις δύο μεθόδους: από τη στιγμή που πρέπει
|
||
εσείς να παρέχετε τα φίλτρα (τις περισσότερες φορές), θα πρέπει
|
||
επίσης να παρέχετε και τον κώδικα καταμέτρησης. Αλλά υπάρχει και ένα
|
||
καλό σε αυτή την υπόθεση: έχετε απεριόριστη ευελιξία στις μεθόδους
|
||
καταμέτρησης. Για παράδειγμα, μπορείτε να επιλέξετε περιοδική ή κατά
|
||
τη χρήση καταμέτρηση. Μπορείτε να επιλέξετε τις πληροφορίες που θα
|
||
καταγράφονται: ονόματα χρηστών, ονόματα υπολογιστών, τύπους εργασιών,
|
||
τυπωμένες σελίδες, τετραγωνικά μέτρα χαρτιού που χρησιμοποιήθηκε,
|
||
πόσος χρόνος χρειάστηκε για να γίνει η εκτύπωση, και πολλά ακόμα. Και
|
||
όλα αυτά γίνονται μετατρέποντας τα φίλτρα για να αποθηκεύουν αυτές τις
|
||
πληροφορίες.</para>
|
||
|
||
<sect3>
|
||
<title>Γρήγορη και Πρόχειρη Καταμέτρηση Εκτυπώσεων</title>
|
||
|
||
<para>Το &os; διατίθεται με δύο προγράμματα που μπορούν να παρέχουν
|
||
άμεσα απλή περιοδική καταμέτρηση. Είναι το φίλτρο κειμένου
|
||
<command>lpf</command>, που περιγράφεται στην ενότητα <link
|
||
linkend="printing-advanced-lpf">lpf: ένα Φίλτρο Κειμένου</link>,
|
||
και το &man.pac.8;, ένα πρόγραμμα που συλλέγει και αθροίζει
|
||
καταχωρίσεις από αρχεία καταμετρήσεων.</para>
|
||
|
||
<para>Όπως αναφέραμε στην ενότητα των φίλτρων (<link
|
||
linkend="printing-advanced-filters">Φίλτρα</link>), το
|
||
<application>LPD</application> ξεκινά τα φίλτρα κειμένου και
|
||
μετατροπής περνώντας στην γραμμή εντολών του φίλτρου και το όνομα
|
||
του αρχείου καταγραφής. Τα φίλτρα μπορούν να χρησιμοποιήσουν αυτή
|
||
την παράμετρο για να ξέρουν που να γράφουν τις καταχωρίσεις
|
||
καταμέτρησης. Το όνομα του αρχείου καταμέτρησης φαίνεται στην
|
||
ικανότητα <literal>af</literal> στο
|
||
<filename>/etc/printcap</filename>, και αν δεν ορίζεται η πλήρης
|
||
διαδρομή του, χρησιμοποιείται η σχετική διαδρομή ως προς τον
|
||
κατάλογο spool.</para>
|
||
|
||
<para>Το <application>LPD</application> ξεκινά το
|
||
<command>lpf</command> με παραμέτρους πλάτους και μήκους σελίδας
|
||
(από τις ικανότητες <literal>pw</literal> και
|
||
<literal>pl</literal>). Το <command>lpf</command> χρησιμοποιεί
|
||
αυτές τις παραμέτρους για να προσδιορίσει την ποσότητα χαρτιού που
|
||
χρησιμοποιήθηκε. Μετά την αποστολή του αρχείου στον εκτυπωτή,
|
||
γράφει μια καταχώριση καταμέτρησης στο αρχείο καταγραφής. Οι
|
||
καταχωρίσεις μοιάζουν με τις παρακάτω:</para>
|
||
|
||
<programlisting>2.00 rose:andy
|
||
3.00 rose:kelly
|
||
3.00 orchid:mary
|
||
5.00 orchid:mary
|
||
2.00 orchid:zhang</programlisting>
|
||
|
||
<para>Θα πρέπει να χρησιμοποιείτε ξεχωριστό αρχείο καταγραφής για
|
||
κάθε εκτυπωτή, αφού το <command>lpf</command> δεν έχει ενσωματωμένη
|
||
δυνατότητα κλειδώματος αρχείου (file locking), και δύο
|
||
<command>lpf</command> μπορούν να καταστρέψουν το ένα την
|
||
καταχώριση του άλλου αν πρόκειται να γράψουν ταυτόχρονα στο ίδιο
|
||
αρχείο. Ένας εύκολος τρόπος για να βεβαιώσετε την μοναδικότητα
|
||
αρχείου καταγραφής ανά εκτυπωτή είναι να χρησιμοποιήσετε την
|
||
ικανότητα <literal>af=acct</literal> στο
|
||
<filename>/etc/printcap</filename>. Έτσι, κάθε αρχείο καταγραφής
|
||
θα βρίσκεται στον κατάλογο spool του αντίστοιχου εκτυπωτή, σε ένα
|
||
αρχείο με όνομα <filename>acct</filename>.</para>
|
||
|
||
<para>Όταν είστε έτοιμοι να χρεώσετε τους χρήστες για τις εκτυπώσεις,
|
||
εκτελέστε το πρόγραμμα &man.pac.8;. Απλά μεταβείτε στον κατάλογο
|
||
spool για τον εκτυπωτή που κάνετε καταμέτρηση και πληκτρολογήστε
|
||
<literal>pac</literal>. Θα εμφανιστεί ένας απολογισμός με χρεώσεις
|
||
σε δολάρια, όπως βλέπετε στη συνέχεια:</para>
|
||
|
||
<screen> Login pages/feet runs price
|
||
orchid:kelly 5.00 1 $ 0.10
|
||
orchid:mary 31.00 3 $ 0.62
|
||
orchid:zhang 9.00 1 $ 0.18
|
||
rose:andy 2.00 1 $ 0.04
|
||
rose:kelly 177.00 104 $ 3.54
|
||
rose:mary 87.00 32 $ 1.74
|
||
rose:root 26.00 12 $ 0.52
|
||
|
||
total 337.00 154 $ 6.74</screen>
|
||
|
||
<para>Παρακάτω είναι οι παράμετροι που δέχεται το &man.pac.8;:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>-P<replaceable>printer</replaceable></option></term>
|
||
|
||
<listitem>
|
||
<para>Για ποιό <replaceable>printer</replaceable> να
|
||
κάνει απολογισμό. Αυτή η επιλογή δουλεύει μόνο αν υπάρχει η
|
||
πλήρης διαδρομή στην ικανότητα <literal>af</literal> στο
|
||
<filename>/etc/printcap</filename>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-c</option></term>
|
||
|
||
<listitem>
|
||
<para>Ταξινομεί το αποτέλεσμα ανά κόστος αντί της αλφαβητικής
|
||
ταξινόμησης των χρηστών.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-m</option></term>
|
||
|
||
<listitem>
|
||
<para>Αγνοεί το όνομα του υπολογιστή στα αρχεία καταγραφής. Με
|
||
αυτή την επιλογή, ο χρήστης <username>smith</username> στον
|
||
υπολογιστή <hostid>alpha</hostid> είναι ο ίδιος χρήστης με τον
|
||
<username>smith</username> στον υπολογιστή
|
||
<hostid>gamma</hostid>. Χωρίς την επιλογή αυτή, είναι
|
||
διαφορετικοί χρήστες.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-p<replaceable>price</replaceable></option></term>
|
||
|
||
<listitem>
|
||
<para>Υπολογίζει τις χρεώσεις με
|
||
<replaceable>price</replaceable> (τιμή) σε δολάρια ανά σελίδα
|
||
ή ανά πόδι αντί για την τιμή από την ικανότητα
|
||
<literal>pc</literal> στο <filename>/etc/printcap</filename>,
|
||
ή αλλιώς δύο σεντς (από προεπιλογή). Μπορείτε να ορίσετε
|
||
ως <replaceable>price</replaceable> μια τιμή με δεκαδικά
|
||
ψηφία (floating point).</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-r</option></term>
|
||
|
||
<listitem>
|
||
<para>Αντιστρέφει την σειρά ταξινόμησης.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-s</option></term>
|
||
|
||
<listitem>
|
||
<para>Δημιουργεί ένα αρχείο απολογισμού των καταμετρήσεων και
|
||
καθαρίζει τα περιεχόμενα των αρχείων καταγραφής.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><replaceable>name</replaceable>
|
||
<replaceable>…</replaceable></term>
|
||
|
||
<listitem>
|
||
<para>Τυπώνει πληροφορίες αναφοράς μόνο για τα συγκεκριμένα
|
||
<replaceable>name</replaceable> (ονόματα) χρηστών.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<para>Στον προεπιλεγμένο απολογισμό που παράγει το &man.pac.8;,
|
||
βλέπετε των αριθμό των τυπωμένων σελίδων ανά χρήστη από τους
|
||
διάφορους υπολογιστές. Αν, στο χώρο σας, ο υπολογιστής δεν έχει
|
||
σημασία (γιατί οι χρήστες μπορούν να χρησιμοποιήσουν οποιονδήποτε
|
||
θέλουν), εκτελέστε την εντολή
|
||
<command>pac <option>-m</option></command>, για να
|
||
δημιουργήσετε τον ακόλουθο απολογισμό:</para>
|
||
|
||
<screen> Login pages/feet runs price
|
||
andy 2.00 1 $ 0.04
|
||
kelly 182.00 105 $ 3.64
|
||
mary 118.00 35 $ 2.36
|
||
root 26.00 12 $ 0.52
|
||
zhang 9.00 1 $ 0.18
|
||
|
||
total 337.00 154 $ 6.74</screen>
|
||
|
||
|
||
<para>Για τον ορισμό ποσοστού χρέωσης σε δολάρια, το &man.pac.8;
|
||
χρησιμοποιεί την ικανότητα <literal>pc</literal> στο αρχείο
|
||
<filename>/etc/printcap</filename> (προεπιλεγμένη τιμή 200, ή 2
|
||
σεντς ανά σελίδα). Προσδιορίστε σε αυτήν την ικανότητα, σε
|
||
εκατοστά του σεντ, την τιμή ανά σελίδα ή ανά πόδι που θέλετε να
|
||
χρεώνετε για τις εκτυπώσεις. Μπορείτε να προσπεράσετε αυτή την
|
||
τιμή όταν τρέχετε το &man.pac.8; με την επιλογή
|
||
<option>-p</option>. H μονάδα μέτρησης για την επιλογή
|
||
<option>-p</option> είναι σε δολάρια, όχι σε εκατοστά του σεντ.
|
||
Για παράδειγμα,
|
||
|
||
<screen>&prompt.root; <userinput><command>pac <option>-p1.50</option></command></userinput></screen>
|
||
|
||
ορίζει κόστος κάθε σελίδας ένα δολάριο και πενήντα σεντς.
|
||
Μπορείτε πραγματικά να έχετε πολλά έσοδα χρησιμοποιώντας αυτές τις
|
||
χρεώσεις.</para>
|
||
|
||
<para>Τέλος, εκτελώντας <command>pac <option>-s</option></command> θα
|
||
αποθηκεύσετε τις πληροφορίες του απολογισμού σε ένα αρχείο
|
||
καταγραφής απολογισμού, που θα έχει το ίδιο όνομα με το αρχείο
|
||
καταγραφής του εκτυπωτή, αλλά με κατάληξη <literal>_sum</literal>.
|
||
Έπειτα καθαρίζεται το αρχείο καταγραφής. Όταν εκτελέσετε πάλι το
|
||
&man.pac.8;, θα ξαναδιαβάσει το αρχείο απολογισμού, για να πάρει τα
|
||
αρχικά σύνολα, και θα προσθέσει τις πληροφορίες από το κανονικό
|
||
αρχείο καταγραφής.</para>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Πως Μπορείτε να Μετρήσετε τις Τυπωμένες Σελίδες;</title>
|
||
|
||
<para>Για να μετρήσετε τις τυπωμένες σελίδες με έστω στοιχειώδη
|
||
λεπτομέρεια, θα πρέπει να προσδιορίσετε πόσο χαρτί χρειάζεται μια
|
||
εργασία. Αυτό είναι το ουσιαστικότερο πρόβλημα στην καταμέτρηση
|
||
εκτυπώσεων.</para>
|
||
|
||
<para>Για εργασίες απλού κειμένου, το πρόβλημα δεν είναι δύσκολο να
|
||
λυθεί: Μετράτε πόσες γραμμές υπάρχουν σε μια εργασία και τις
|
||
συγκρίνετε με πόσες γραμμές μπορεί να τυπώσει ο εκτυπωτής σας σε
|
||
μια σελίδα. Μην ξεχάσετε να συμπεριλάβετε τα backspaces που
|
||
προκαλούν υπερτύπωση, ή επιμήκης λογικές γραμμές που αναδιπλώνονται
|
||
σε περισσότερες από μία φυσικές γραμμές.</para>
|
||
|
||
<para>Το φίλτρο κειμένου <command>lpf</command> (που παρουσιάσαμε στο
|
||
<link linkend="printing-advanced-lpf">lpf: ένα Φίλτρο
|
||
Κειμένου</link>) λαμβάνει υπόψιν του αυτά τα στοιχεία όταν κάνει
|
||
καταμέτρηση. Αν γράφετε κάποιο φίλτρο κειμένου που χρειάζεται να
|
||
κάνει καταμέτρηση, ίσως να θέλετε να ελέγξετε τον πηγαίο κώδικα
|
||
του <command>lpf</command>.</para>
|
||
|
||
<para>Πως χειρίζεστε όμως τους υπόλοιπους τύπους αρχείων;</para>
|
||
|
||
<para>Για τις μετατροπές από DVI-σε-LaserJet ή από
|
||
DVI-σε-&postscript;, μπορείτε να κάνετε το φίλτρο σας να αναλύει
|
||
την έξοδο του <command>dvilj</command> ή του
|
||
<command>dvips</command> και να ελέγχει πόσες σελίδες
|
||
δημιουργήθηκαν από τη μετατροπή. Ίσως μπορέσετε να κάνετε κάτι
|
||
παρόμοιο και με διαφορετικούς τύπους αρχείων και προγράμματα
|
||
μετατροπής</para>
|
||
|
||
<para>Ωστόσο, όλες αυτές οι μέθοδοι έχουν το μειονέκτημα πως ο
|
||
εκτυπωτής πιθανώς στην πραγματικότητα να μην εκτυπώσει όλες τις
|
||
σελίδες. Για παράδειγμα, θα μπορούσε να μπλοκαριστεί το χαρτί, ή να
|
||
τελειώσει το τόνερ, ή ακόμη να συμβεί και έκρηξη —ενώ ο
|
||
χρήστης θα συνεχίσει να χρεώνεται.</para>
|
||
|
||
<para>Τι θα μπορούσατε να κάνετε;</para>
|
||
|
||
<para>Υπάρχει μόνο ένας <emphasis>σίγουρος</emphasis> τρόπος για να
|
||
κάνετε καταμέτρηση <emphasis>ακριβείας</emphasis>. Να πάρετε έναν
|
||
εκτυπωτή που να μπορεί να σας πει πόσο χαρτί χρησιμοποιεί, και να
|
||
τον συνδέσετε μέσω σειριακής θύρας ή μέσω δικτύου. Σχεδόν
|
||
όλοι οι εκτυπωτές &postscript; υποστηρίζουν αυτή την δυνατότητα. Θα
|
||
βρείτε και άλλους τύπους και κατασκευαστές που κάνουν επίσης το ίδιο
|
||
(για παράδειγμα, οι laser εκτυπωτές δικτύου της Imagen).
|
||
Μετατρέψτε τα φίλτρα για αυτούς τους εκτυπωτές ώστε να καταγράφουν
|
||
τις τυπωμένες σελίδες μετά την ολοκλήρωση της εκάστοτε εργασίας
|
||
εκτύπωσης, και ρυθμίστε τους να κρατούν αρχεία καταγραφής με
|
||
<emphasis>μόνο</emphasis> αυτή την πληροφορία. Δεν χρειάζεται
|
||
καταμέτρηση γραμμών ούτε αναφορά σφαλμάτων.</para>
|
||
|
||
<para>Φυσικά, πάντα έχετε τη δυνατότητα να φανείτε γενναιόδωρος και να
|
||
παρέχετε τις εκτυπώσεις σας δωρεάν.</para>
|
||
</sect3>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="printing-using">
|
||
<title>Χρήση Εκτυπωτών</title>
|
||
|
||
<indexterm>
|
||
<primary>printers</primary>
|
||
<secondary>usage</secondary>
|
||
</indexterm>
|
||
<para>Αυτή η ενότητα περιγράφει πως να χρησιμοποιείτε τους εκτυπωτές που
|
||
έχετε εγκαταστήσει στο &os;. Οι βασικές εντολές για τον τελικό χρήστη
|
||
είναι οι ακόλουθες:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>&man.lpr.1;</term>
|
||
|
||
<listitem>
|
||
<para>Εκτύπωση εργασιών</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>&man.lpq.1;</term>
|
||
|
||
<listitem>
|
||
<para>Έλεγχος ουράς αναμονής (print queue) του εκτυπωτή</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>&man.lprm.1;</term>
|
||
|
||
<listitem>
|
||
<para>Διαγραφή εργασιών από την ουρά αναμονής</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<para>Υπάρχει επίσης μια εντολή για τους διαχειριστές, η &man.lpc.8;,
|
||
που περιγράφεται στην ενότητα <link
|
||
linkend="printing-lpc">Διαχείριση Εκτυπωτών</link>, και
|
||
χρησιμοποιείται για να ελέγχει τους εκτυπωτές και τις ουρές
|
||
αναμονής.</para>
|
||
|
||
<para>Και οι τρεις εντολές &man.lpr.1;, &man.lprm.1;, και &man.lpq.1;
|
||
δέχονται την επιλογή
|
||
<option>-P <replaceable>printer-name</replaceable></option> με την
|
||
οποία καθορίζεται σε ποιον εκτυπωτή ή ουρά αναμονής θα ενεργήσουν, όπως
|
||
αναφέρεται στο αρχείο <filename>/etc/printcap</filename>. Αυτό σας
|
||
επιτρέπει να αποστείλετε, να διαγράψετε, και να ελέγξετε εργασίες σε
|
||
διάφορους εκτυπωτές. Αν δεν χρησιμοποιείτε την επιλογή
|
||
<option>-P</option>, τότε οι εντολές χρησιμοποιούν τον εκτυπωτή που
|
||
αναφέρεται στη μεταβλητή περιβάλλοντος <envar>PRINTER</envar>. Τέλος,
|
||
αν δεν έχετε θέσει μια μεταβλητή περιβάλλοντος <envar>PRINTER</envar>,
|
||
οι εντολές εκτελούνται με τον προεπιλεγμένο εκτυπωτή που ονομάζεται
|
||
<literal>lp</literal>.</para>
|
||
|
||
<para>Από δω και στο εξής, με την ορολογία <emphasis>προεπιλεγμένος
|
||
εκτυπωτής</emphasis> θα εννοούμε τον εκτυπωτή που αναφέρεται στην
|
||
μεταβλητή περιβάλλοντος <envar>PRINTER</envar>, ή αν δεν υπάρχει, τον
|
||
εκτυπωτή με το όνομα <literal>lp</literal>.</para>
|
||
|
||
<sect2 id="printing-lpr">
|
||
<title>Εκτύπωση Εργασιών</title>
|
||
|
||
<para>Για να εκτυπώσετε αρχεία, πληκτρολογήστε:</para>
|
||
|
||
<screen>&prompt.user; <userinput><command>lpr <filename><replaceable>filename</replaceable></filename> <replaceable>...</replaceable></command></userinput></screen>
|
||
|
||
<indexterm><primary>printing</primary></indexterm>
|
||
<para>Θα εκτυπωθούν όλα τα αναφερόμενα αρχεία στον προεπιλεγμένο
|
||
εκτυπωτή. Αν δεν αναφέρετε αρχεία, το &man.lpr.1; διαβάζει
|
||
δεδομένα από το standard input. Για παράδειγμα, αυτή η εντολή
|
||
θα εκτυπώσει μερικά σημαντικά αρχεία του συστήματος:</para>
|
||
|
||
<screen>&prompt.user; <userinput><command>lpr <filename>/etc/host.conf</filename> <filename>/etc/hosts.equiv</filename></command></userinput></screen>
|
||
|
||
<para>Για να επιλέξετε ένα συγκεκριμένο εκτυπωτή, πληκτρολογήστε:</para>
|
||
|
||
<screen>&prompt.user; <userinput><command>lpr <option>-P</option> <replaceable>printer-name</replaceable> <filename><replaceable>filename</replaceable></filename> <replaceable>...</replaceable></command></userinput></screen>
|
||
|
||
<para>Στο παράδειγμα μας θα εκτυπωθεί μια μεγάλη λίστα αρχείων του
|
||
τρέχοντος καταλόγου στον εκτυπωτή που ονομάζεται
|
||
<literal>rattan</literal>:</para>
|
||
|
||
<screen>&prompt.user; <userinput><command>ls <option>-l</option> | lpr <option>-P</option> rattan</command></userinput></screen>
|
||
|
||
<para>Αφού δεν αναφέρονται ονόματα αρχείων στην εντολή &man.lpr.1;,
|
||
το <command>lpr</command> διαβάζει τα δεδομένα που θα εκτυπώσει από
|
||
το standard input, τα οποία είναι η έξοδος της εντολής
|
||
<command>ls <option>-l</option></command>.</para>
|
||
|
||
<para>Η εντολή &man.lpr.1; μπορεί να δεχθεί ένα μεγάλο αριθμό επιλογών
|
||
για να ελέγχει την μορφοποίηση, να μετατρέπει αρχεία, να δημιουργεί
|
||
πολλαπλά αντίγραφα, κ.λ.π. Για περισσότερες πληροφορίες, δείτε την
|
||
ενότητα <link
|
||
linkend="printing-lpr-options">Επιλογές Εκτύπωσης</link>.</para>
|
||
</sect2>
|
||
|
||
<sect2 id="printing-lpq">
|
||
<title>Έλεγχος Εργασιών</title>
|
||
|
||
<indexterm><primary>εκτύπωση εργασιών</primary></indexterm>
|
||
<para>Όταν εκτυπώνετε με το &man.lpr.1;, τα δεδομένα που θέλετε να
|
||
εκτυπώσετε τοποθετούνται σε ένα πακέτο (package) που ονομάζεται
|
||
<quote>εργασία εκτύπωσης (print job)</quote>, η οποία αποστέλλεται
|
||
στο σύστημα παροχέτευσης <application>LPD</application>. Κάθε
|
||
εκτυπωτής έχει μια ουρά αναμονής εργασιών, και η εργασία σας
|
||
αναμένει μαζί με άλλες δικές σας και άλλων χρηστών. Ο εκτυπωτής τις
|
||
εκτυπώνει με την σειρά άφιξης στην ουρά αναμονής.</para>
|
||
|
||
<para>Για να εμφανίσετε την ουρά αναμονής για τον προεπιλεγμένο
|
||
εκτυπωτή, πληκτρολογήστε &man.lpq.1;. Για κάποιον συγκεκριμένο
|
||
εκτυπωτή, χρησιμοποιήστε την επιλογή <option>-P</option>. Για
|
||
παράδειγμα, η εντολή:
|
||
|
||
<screen>&prompt.user; <userinput><command>lpq <option>-P</option> bamboo</command></userinput></screen>
|
||
|
||
εμφανίζει την ουρά αναμονής για τον εκτυπωτή με το όνομα
|
||
<literal>bamboo</literal>. Ακολουθεί ένα παράδειγμα εξόδου της
|
||
εντολής <command>lpq</command>:</para>
|
||
|
||
<screen>bamboo is ready and printing
|
||
Rank Owner Job Files Total Size
|
||
active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes
|
||
2nd kelly 10 (standard input) 1635 bytes
|
||
3rd mary 11 ... 78519 bytes</screen>
|
||
|
||
<para>Εμφανίζονται τρεις εργασίες στη λίστα αναμονής για τον
|
||
<literal>bamboo</literal>. Στην πρώτη εργασία, που έχει σταλεί από
|
||
τον χρήστη kelly, έχει αποδοθεί ο
|
||
<quote>αριθμός εργασίας (job number)</quote> 9. Κάθε εργασία ενός
|
||
εκτυπωτή χαρακτηρίζεται από ένα μοναδικό τέτοιο αριθμό. Τις
|
||
περισσότερες φορές μπορείτε να τον αγνοήσετε, αλλά θα τον χρειαστείτε
|
||
αν θέλετε να διαγράψετε κάποια εργασία. Δείτε την ενότητα <link
|
||
linkend="printing-lprm">Διαγραφή Εργασιών</link> για
|
||
περισσότερες πληροφορίες.</para>
|
||
|
||
<para>Η εργασία με το νούμερο εννέα αποτελείται από δύο αρχεία. Τα
|
||
πολλαπλά αρχεία που δόθηκαν στη γραμμή εντολών του &man.lpr.1;
|
||
θεωρούνται μέρος μίας μόνο εργασίας. Αυτή είναι και η τρέχουσα ενεργή
|
||
εργασία (παρατηρήστε τη λέξη <literal>active</literal> της στήλης
|
||
<quote>Rank</quote>), που σημαίνει πως η εργασία εκτυπώνεται αυτή τη
|
||
στιγμή. Η δεύτερη εργασία αποτελείται από δεδομένα που έχουν περάσει
|
||
στην standard input της εντολής &man.lpr.1;. Η τρίτη εργασία
|
||
προέρχεται από τον χρήστη <username>mary</username>, και πρόκειται
|
||
για μια πολύ ογκώδη εργασία. Το όνομα διαδρομής του αρχείου που
|
||
πρόκειται να εκτυπωθεί είναι πολύ μεγάλο για να χωρέσει στη στήλη,
|
||
και για αυτό η εντολή &man.lpq.1; απλά το συμβολίζει με τρεις
|
||
τελείες.</para>
|
||
|
||
<para>Η πρώτη γραμμή της εξόδου από την &man.lpq.1; είναι επίσης πολύ
|
||
χρήσιμη: μας ενημερώνει για το τι κάνει την παρούσα στιγμή ο
|
||
εκτυπωτής (ή τουλάχιστον για το τι πιστεύει το
|
||
<application>LPD</application> πως κάνει ο εκτυπωτής αυτή τη
|
||
στιγμή).</para>
|
||
|
||
<para>Η εντολή &man.lpq.1; επίσης υποστηρίζει την επιλογή
|
||
<option>-l</option> για να δημιουργήσει μια μεγάλη, λεπτομερή λίστα.
|
||
Ακολουθεί ένα παράδειγμα του
|
||
<command>lpq <option>-l</option></command>:</para>
|
||
|
||
<screen>waiting for bamboo to become ready (offline ?)
|
||
kelly: 1st [job 009rose]
|
||
/etc/host.conf 73 bytes
|
||
/etc/hosts.equiv 15 bytes
|
||
|
||
kelly: 2nd [job 010rose]
|
||
(standard input) 1635 bytes
|
||
|
||
mary: 3rd [job 011rose]
|
||
/home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes</screen>
|
||
</sect2>
|
||
|
||
<sect2 id="printing-lprm">
|
||
<title>Αφαίρεση Εργασιών</title>
|
||
|
||
<para>Αν αλλάξετε γνώμη για μια εργασία που είχατε αποστείλει προς
|
||
εκτύπωση, μπορείτε να την αφαιρέσετε από την λίστα αναμονής με την
|
||
εντολή &man.lprm.1;. Μπορείτε ακόμη να χρησιμοποιήσετε την
|
||
&man.lprm.1; για να αφαιρέσετε μια ενεργή εργασία, αλλά πιθανόν
|
||
κάποιο μέρος της να εκτυπωθεί έτσι και αλλιώς.</para>
|
||
|
||
<para>Για να αφαιρέσετε μια εργασία από τον προεπιλεγμένο εκτυπωτή,
|
||
χρησιμοποιήστε πρώτα την &man.lpq.1; για να βρείτε τον αριθμό της.
|
||
Έπειτα πληκτρολογήστε:</para>
|
||
|
||
<screen>&prompt.user; <userinput><command>lprm <replaceable>job-number</replaceable></command></userinput></screen>
|
||
|
||
<para>Για να αφαιρέσετε μια εργασία από κάποιον συγκεκριμένο εκτυπωτή,
|
||
προσθέστε την επιλογή <option>-P</option>. Η ακόλουθη εντολή αφαιρεί
|
||
την εργασία με αριθμό 10 από την ουρά αναμονής για τον εκτυπωτή
|
||
<literal>bamboo</literal>:</para>
|
||
|
||
<screen>&prompt.user; <userinput><command>lprm <option>-P</option> bamboo 10</command></userinput></screen>
|
||
|
||
<para>Η εντολή &man.lprm.1; έχει μερικές συντομεύσεις:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>lprm -</term>
|
||
|
||
<listitem>
|
||
<para>Αφαιρεί όλες τις εργασίες (για τον προεπιλεγμένο εκτυπωτή)
|
||
που ανήκουν σε εσάς.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>lprm <replaceable>user</replaceable></term>
|
||
|
||
<listitem>
|
||
<para>Αφαιρεί όλες τις εργασίες (για τον προεπιλεγμένο εκτυπωτή)
|
||
που ανήκουν στον <replaceable>χρήστη (user)</replaceable>.
|
||
Ο υπερχρήστης (superuser) μπορεί να αφαιρέσει εργασίες άλλων
|
||
χρηστών, εσείς μπορείτε να αφαιρέσετε μόνο τις δικές σας.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>lprm</term>
|
||
|
||
<listitem>
|
||
<para>Η εντολή &man.lprm.1; χωρίς αριθμό εργασίας, όνομα χρήστη,
|
||
ή <option>-</option> που εμφανίζεται στην γραμμή εντολών,
|
||
αφαιρεί την τρέχουσα ενεργή εργασία στον προεπιλεγμένο
|
||
εκτυπωτή, αν ανήκει σε σάς. Ο υπερχρήστης (superuser) μπορεί
|
||
να αφαιρέσει οποιαδήποτε ενεργή εργασία.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<para>Για να δουλέψετε σε κάποιον συγκεκριμένο εκτυπωτή αντί του
|
||
προεπιλεγμένου, απλά χρησιμοποιήστε την επιλογή <option>-P</option>
|
||
με τις παραπάνω συντομεύσεις. Για παράδειγμα, η ακόλουθη εντολή
|
||
αφαιρεί όλες τις εργασίες του τρέχοντος χρήστη από την ουρά αναμονής
|
||
του εκτυπωτή <literal>rattan</literal>:</para>
|
||
|
||
<screen>&prompt.user; <userinput><command>lprm <option>-P</option> rattan -</command></userinput></screen>
|
||
|
||
<note>
|
||
<para>Αν εργάζεστε σε περιβάλλον δικτύου, η &man.lprm.1; θα σας
|
||
επιτρέψει να αφαιρέσετε εργασίες μόνο από τον υπολογιστή που
|
||
τις έχετε στείλει, ανεξάρτητα αν ο εκτυπωτής είναι προσβάσιμος και
|
||
από άλλους υπολογιστές. Η ακόλουθη εντολή επιδεικνύει ακριβώς αυτό
|
||
το χαρακτηριστικό:</para>
|
||
|
||
<screen>&prompt.user; <userinput><command>lpr <option>-P</option> rattan <filename><replaceable>myfile</replaceable></filename></command></userinput>
|
||
&prompt.user; <userinput><command>rlogin orchid</command></userinput>
|
||
&prompt.user; <userinput><command>lpq <option>-P</option> rattan</command></userinput>
|
||
Rank Owner Job Files Total Size
|
||
active seeyan 12 ... 49123 bytes
|
||
2nd kelly 13 myfile 12 bytes
|
||
&prompt.user; <userinput><command>lprm <option>-P</option> rattan 13</command></userinput>
|
||
rose: Permission denied
|
||
&prompt.user; <userinput><command>logout</command></userinput>
|
||
&prompt.user; <userinput><command>lprm <option>-P</option> rattan 13</command></userinput>
|
||
dfA013rose dequeued
|
||
cfA013rose dequeued
|
||
</screen>
|
||
</note>
|
||
</sect2>
|
||
|
||
<sect2 id="printing-lpr-options">
|
||
<title>Πέρα από το Απλό Κείμενο: Περισσότερες Επιλογές Εκτύπωσης</title>
|
||
|
||
<para>Η εντολή &man.lpr.1; υποστηρίζει μια γκάμα επιλογών για τον έλεγχο
|
||
μορφοποίησης κειμένου, μετατροπής γραφικών και άλλων μορφών αρχείων,
|
||
παραγωγής πολλαπλών αντιγράφων, χειρισμού εργασιών, και άλλα. Οι
|
||
επιλογές αυτές περιγράφονται στην παρούσα ενότητα.</para>
|
||
|
||
<sect3 id="printing-lpr-options-format">
|
||
<title>Επιλογές Μορφοποίησης και Μετατροπής</title>
|
||
|
||
<para>Οι ακόλουθες επιλογές της &man.lpr.1; ελέγχουν την μορφοποίηση
|
||
των αρχείων της εργασίας εκτύπωσης. Χρησιμοποιήστε τις αν η εργασία
|
||
σας δεν περιέχει απλό κείμενο ή αν επιθυμείτε να μορφοποιήσετε απλό
|
||
κείμενο διαμέσου του εργαλείου &man.pr.1;.</para>
|
||
|
||
<indexterm><primary>&tex;</primary></indexterm>
|
||
<para>Για παράδειγμα, η ακόλουθη εντολή τυπώνει ένα αρχείο DVI (από το
|
||
σύστημα στοιχειοθεσίας &tex;) με όνομα
|
||
<filename><replaceable>fish-report.dvi</replaceable></filename>
|
||
στον εκτυπωτή με όνομα <literal>bamboo</literal>:</para>
|
||
|
||
<screen>&prompt.user; <userinput><command>lpr <option>-P</option> bamboo <option>-d</option> <filename><replaceable>fish-report.dvi</replaceable></filename></command></userinput></screen>
|
||
|
||
<para>Αυτές οι επιλογές εφαρμόζονται σε κάθε αρχείο της εργασίας, και
|
||
έτσι δεν μπορείτε να αναμίξετε (ας πούμε) αρχεία DVI και ditroff
|
||
μαζί στην ίδια εργασία. Απλώς στείλτε τα αρχεία σαν διαφορετικές
|
||
εργασίες, χρησιμοποιώντας διαφορετικές επιλογές μετατροπής για κάθε
|
||
εργασία.</para>
|
||
|
||
<note>
|
||
<para>Όλες αυτές οι επιλογές εκτός της <option>-p</option> και της
|
||
<option>-T</option> απαιτούν εγκατεστημένα φίλτρα μετατροπής για
|
||
τον εκτυπωτή προορισμού. Για παράδειγμα, η επιλογή
|
||
<option>-d</option> απαιτεί το φίλτρο μετατροπής DVI. Η ενότητα
|
||
<link linkend="printing-advanced-convfilters">Φίλτρα
|
||
Μετατροπής</link> δίνει περισσότερες λεπτομέρειες.</para>
|
||
</note>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>-c</option></term>
|
||
|
||
<listitem>
|
||
<para>Εκτυπώνει αρχεία cifplot.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-d</option></term>
|
||
|
||
<listitem>
|
||
<para>Εκτυπώνει αρχεία DVI.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-f</option></term>
|
||
|
||
<listitem>
|
||
<para>Εκτυπώνει αρχεία κειμένου FORTRAN.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-g</option></term>
|
||
|
||
<listitem>
|
||
<para>Εκτυπώνει δεδομένα σχεδίασης (plot).</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-i <replaceable>number</replaceable></option>
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>Εκτυπώνει την έξοδο με εσοχή
|
||
<replaceable>number</replaceable> στηλών. Αν παραλείψετε
|
||
το <replaceable>number</replaceable>, η εσοχή θα είναι
|
||
8 στήλες. Αυτή η επιλογή δουλεύει μόνο με ορισμένα φίλτρα
|
||
μετατροπής.</para>
|
||
|
||
<note>
|
||
<para>Μην τοποθετείτε κενό διάστημα μεταξύ του
|
||
<option>-i</option> και του αριθμού.</para>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-l</option></term>
|
||
|
||
<listitem>
|
||
<para>Εκτυπώνει δεδομένα κειμένου κατά γράμμα (literal),
|
||
συμπεριλαμβάνοντας και τους χαρακτήρες ελέγχου.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-n</option></term>
|
||
|
||
<listitem>
|
||
<para>Εκτυπώνει δεδομένα ditroff (δεδομένα troff ανεξάρτητα από
|
||
τη συσκευή).</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>-p</term>
|
||
|
||
<listitem>
|
||
<para>Μορφοποιεί το απλό κείμενο με την &man.pr.1; πριν να το
|
||
εκτυπώσει. Δείτε την &man.pr.1; για περισσότερες
|
||
πληροφορίες.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-T <replaceable>title</replaceable></option></term>
|
||
|
||
<listitem>
|
||
<para>Χρησιμοποιεί το <replaceable>title</replaceable> στην
|
||
κεφαλίδα του &man.pr.1; αντί για το όνομα αρχείου. Αυτή η
|
||
επιλογή επιδρά μόνο όταν χρησιμοποιείται με την επιλογή
|
||
<option>-p</option></para></listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-t</option></term>
|
||
|
||
<listitem>
|
||
<para>Εκτυπώνει δεδομένα troff.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-v</option></term>
|
||
|
||
<listitem>
|
||
<para>Εκτυπώνει δεδομένα ράστερ.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<para>Εδώ είναι ένα παράδειγμα: αυτή η εντολή εκτυπώνει μια κομψά
|
||
μορφοποιημένη έκδοση της σελίδας βοηθείας &man.ls.1; στον
|
||
προεπιλεγμένο εκτυπωτή:</para>
|
||
|
||
<screen>&prompt.user; <userinput><command>zcat <filename>/usr/share/man/man1/ls.1.gz</filename> | troff <option>-t</option> -man | lpr <option>-t</option></command></userinput></screen>
|
||
|
||
<para>Η εντολή &man.zcat.1; αποσυμπιέζει τον πηγαίο κώδικα της
|
||
σελίδας βοηθείας &man.ls.1; και τον περνάει στην εντολή
|
||
&man.troff.1;, η οποία τον μορφοποιεί και δημιουργεί στην έξοδο της
|
||
δεδομένα GNU troff, τα αποστέλλει στην &man.lpr.1;, η οποία με
|
||
τη σειρά της αποστέλλει την εργασία στο
|
||
<application>LPD</application>. Επειδή χρησιμοποιήσαμε την επιλογή
|
||
<option>-t</option> στο &man.lpr.1;, ο spooler, κατά τη διάρκεια της
|
||
εκτύπωσης, θα μετατρέψει την έξοδο GNU troff σε ένα τύπο δεδομένων
|
||
κατανοητό από τον προεπιλεγμένο εκτυπωτή.</para>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-lpr-options-job-handling">
|
||
<title>Επιλογές Χειρισμού Εργασιών</title>
|
||
|
||
<para>Οι ακόλουθες επιλογές του &man.lpr.1; οδηγούν το
|
||
<application>LPD</application> να χειριστεί τις εργασίες με ειδικό
|
||
τρόπο:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>-# <replaceable>copies</replaceable></term>
|
||
|
||
<listitem>
|
||
<para>Δημιουργεί έναν αριθμό <replaceable>copies</replaceable>
|
||
(αντιγράφων) για κάθε αρχείο της εργασίας αντί για ένα μόνο
|
||
αντίγραφο. Ο διαχειριστής μπορεί να απενεργοποιήσει αυτή την
|
||
επιλογή για να μειώσει την καταπόνηση των εκτυπωτών και να
|
||
ενθαρρύνει την χρήση φωτοτυπικών μηχανημάτων. Δείτε την
|
||
ενότητα <link
|
||
linkend="printing-advanced-restricting-copies">Περιορισμός
|
||
Εκτύπωσης Πολλαπλών Αντιγράφων</link>.</para>
|
||
|
||
<para>Σε αυτό το παράδειγμα, εκτυπώνουμε στον προεπιλεγμένο
|
||
εκτυπωτή τρία αντίγραφα του
|
||
<filename><replaceable>parser.c</replaceable></filename>
|
||
και τρία αντίγραφα του
|
||
<filename><replaceable>parser.h</replaceable></filename>:</para>
|
||
|
||
<screen>&prompt.user; <userinput><command>lpr <option>-#3</option> <filename><replaceable>parser.c parser.h</replaceable></filename></command></userinput></screen>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>-m</term>
|
||
|
||
<listitem>
|
||
<para>Αποστολή mail μετά την ολοκλήρωση εκτύπωσης της εργασίας.
|
||
Με αυτή την επιλογή, το σύστημα
|
||
<application>LPD</application> στέλνει mail στο λογαριασμό
|
||
σας μόλις ολοκληρωθεί ο χειρισμός εκτύπωσης της εργασίας
|
||
σας. Στο μήνυμα του, θα σας ενημερώσει αν η εργασία
|
||
ολοκληρώθηκε επιτυχώς ή αν παρουσιάστηκε σφάλμα και (συχνά)
|
||
ποιό ήταν το σφάλμα.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>-s</term>
|
||
|
||
<listitem>
|
||
<para>Δεν αντιγράφει τα αρχεία στον κατάλογο spool, αλλά
|
||
αντί για αυτό, δημιουργεί συμβολικές συντομεύσεις (symbolic
|
||
links) προς αυτά.</para>
|
||
|
||
<para>Αν εκτυπώνετε μια μεγάλη εργασία, ίσως θέλετε να
|
||
χρησιμοποιήσετε αυτή την επιλογή. Θα σας γλυτώσει χώρο στον
|
||
κατάλογο spool (ίσως η εργασία σας να υπερβαίνει τον ελεύθερο
|
||
χώρο του συστήματος αρχείων που περιέχει τον κατάλογο
|
||
spool). Επίσης θα κερδίσετε χρόνο αφού το
|
||
<application>LPD</application> δεν θα χρειαστεί να αντιγράψει
|
||
όλη την εργασία σας στον κατάλογο spool.</para>
|
||
|
||
<para>Αυτό, ωστόσο, έχει και ένα μειονέκτημα: από τη στιγμή που
|
||
το <application>LPD</application> θα κάνει αναφορά κατευθείαν
|
||
στο πρωτότυπο αρχείο, δεν θα έχετε δυνατότητα να μετατρέψετε
|
||
ή να διαγράψετε το αρχείο έως ότου εκτυπωθεί.</para>
|
||
|
||
<note>
|
||
<para>Αν εκτυπώνετε σε ένα απομακρυσμένο εκτυπωτή, το
|
||
<application>LPD</application> πιθανώς θα χρειαστεί τελικά
|
||
να αντιγράψει τα αρχεία από τον τοπικό υπολογιστή στον
|
||
απομακρυσμένο, επομένως η επιλογή <option>-s</option> σε
|
||
αυτή την περίπτωση εξοικονομεί χώρο στον τοπικό κατάλογο
|
||
spool, αλλά όχι στον απομακρυσμένο. Εξακολουθεί ωστόσο να
|
||
είναι ιδιαίτερα χρήσιμη.</para>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>-r</term>
|
||
|
||
<listitem>
|
||
<para>Απομακρύνει τα αρχεία της εργασίας μετά την αντιγραφή
|
||
τους στον κατάλογο spool, ή μετά την εκτύπωση τους με την
|
||
επιλογή <option>-s</option>. Να είστε προσεκτικοί με αυτή
|
||
την επιλογή!</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</sect3>
|
||
|
||
<sect3 id="printing-lpr-options-misc">
|
||
<title>Επιλογές Σελίδων Κεφαλίδας</title>
|
||
|
||
<para>Αυτές οι επιλογές του &man.lpr.1; ρυθμίζουν το κείμενο που
|
||
κανονικά εμφανίζεται στην σελίδα κεφαλίδας της εργασίας. Αν οι
|
||
σελίδες κεφαλίδας παρεμποδίζονται για τον συγκεκριμένο εκτυπωτή,
|
||
αυτές οι επιλογές δεν έχουν καμία επίδραση. Δείτε την ενότητα
|
||
<link linkend="printing-advanced-header-pages">Σελίδες
|
||
Κεφαλίδας</link> για πληροφορίες σχετικά με τις ρυθμίσεις των
|
||
σελίδων κεφαλίδας.</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>-C <replaceable>text</replaceable></term>
|
||
|
||
<listitem>
|
||
<para>Αντικαθιστά το όνομα υπολογιστή στη σελίδα κεφαλίδας με
|
||
<replaceable>text</replaceable>. Το όνομα υπολογιστή που
|
||
εμφανίζεται είναι, από προεπιλογή, το όνομα του υπολογιστή
|
||
από τον οποίο έγινε η αποστολή της εργασίας.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>-J <replaceable>text</replaceable></term>
|
||
|
||
<listitem>
|
||
<para>Αντικαθιστά το όνομα εργασίας στη σελίδα κεφαλίδας με
|
||
<replaceable>text</replaceable>. Το όνομα εργασίας που
|
||
εμφανίζεται από προεπιλογή, είναι το όνομα του πρώτου αρχείου
|
||
της εργασίας, ή <filename>stdin</filename> αν η εκτύπωση
|
||
γίνεται από το standard input.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>-h</term>
|
||
|
||
<listitem>
|
||
<para>Δεν εκτυπώνει σελίδα κεφαλίδας.</para>
|
||
|
||
<note>
|
||
<para>Ανάλογα με τις ρυθμίσεις, αυτή η επιλογή ίσως να μην
|
||
έχει επίδραση λόγω του τρόπου με τον οποίο δημιουργούνται οι
|
||
σελίδες κεφαλίδας. Για περισσότερες λεπτομέρειες, δείτε την
|
||
ενότητα <link
|
||
linkend="printing-advanced-header-pages">Σελίδες
|
||
Κεφαλίδας</link>.</para>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2 id="printing-lpc">
|
||
<title>Διαχείριση Εκτυπωτών</title>
|
||
|
||
<para>Ως διαχειριστής, χρειάστηκε να εγκαταστήσετε, να ρυθμίσετε και να
|
||
δοκιμάσετε τους εκτυπωτές σας. Χρησιμοποιώντας την εντολή
|
||
&man.lpc.8;, μπορείτε να επικοινωνήσετε με τους εκτυπωτές σας με ακόμη
|
||
περισσότερους τρόπους. Με την &man.lpc.8;, μπορείτε:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Να εκκινείτε και να σταματάτε τους εκτυπωτές</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Να ενεργοποιείτε και να απενεργοποιείτε τις ουρές
|
||
αναμονής</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Να ανακατατάσσετε την σειρά εργασιών σε κάθε ουρά
|
||
αναμονής.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Καταρχήν, μία σημείωση σχετικά με την ορολογία: αν ένας
|
||
εκτυπωτής είναι <emphasis>σταματημένος (stopped)</emphasis>, δεν θα
|
||
εκτυπώσει τίποτε από την ουρά αναμονής εργασιών. Οι χρήστες μπορούν
|
||
ακόμη να στέλνουν εργασίες, οι οποίες μπαίνουν στην ουρά αναμονής έως
|
||
ότου ο εκτυπωτής <emphasis>ξεκινήσει</emphasis> ή καθαριστεί η ουρά
|
||
αναμονής.</para>
|
||
|
||
<para>Αν έχει <emphasis>απενεργοποιηθεί</emphasis> η ουρά αναμονής,
|
||
κανείς χρήστης (εκτός του <username>root</username>) δεν μπορεί να
|
||
αποστείλει εργασίες στον εκτυπωτή. Μια <emphasis>ενεργή</emphasis>
|
||
ουρά αναμονής επιτρέπει να αποσταλούν εργασίες στον εκτυπωτή. Ένας
|
||
εκτυπωτής μπορεί να <emphasis>ξεκινήσει</emphasis> με ουρά
|
||
αναμονής απενεργοποιημένη, και σε αυτή την περίπτωση θα συνεχίσει να
|
||
εκτυπώνει τις εργασίες της ουράς έως ότου αυτή αδειάσει.</para>
|
||
|
||
<para>Γενικά, πρέπει να έχετε προνόμια <username>root</username> για να
|
||
χρησιμοποιήσετε την εντολή &man.lpc.8;. Οι κανονικοί χρήστες
|
||
μπορούν να χρησιμοποιούν την εντολή &man.lpc.8; μόνο για να βλέπουν
|
||
την κατάσταση του εκτυπωτή και να επανεκκινούν τον εκτυπωτή σε
|
||
περίπτωση μπλοκαρίσματος.</para>
|
||
|
||
<para>Παρακάτω θα βρείτε μια λίστα εντολών του &man.lpc.8;. Οι
|
||
περισσότερες από τις εντολές παίρνουν ως παράμετρο το
|
||
<replaceable>printer-name</replaceable> για τη ρύθμιση του
|
||
συγκεκριμένου εκτυπωτή. Μπορείτε να χρησιμοποιείτε
|
||
<literal>all</literal> στη θέση του
|
||
<replaceable>printer-name</replaceable> για να αναφερθείτε σε όλους
|
||
τους εκτυπωτές που είναι καταχωρισμένοι στο
|
||
<filename>/etc/printcap</filename>.</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><command>abort <replaceable>printer-name</replaceable></command></term>
|
||
|
||
<listitem>
|
||
<para>Διαγράφει την τρέχουσα εργασία και σταματάει τον εκτυπωτή.
|
||
Οι χρήστες μπορούν ακόμη να αποστείλουν εργασίες αν η ουρά
|
||
αναμονής είναι ακόμη ενεργή.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>clean <replaceable>printer-name</replaceable></command></term>
|
||
|
||
<listitem>
|
||
<para>Διαγράφει τα παλιά αρχεία από τον κατάλογο spool του
|
||
εκτυπωτή. Σε κάποιες περιπτώσεις, τα αρχεία από τα οποία
|
||
αποτελείται κάποια εργασία δεν αφαιρούνται κανονικά από το
|
||
<application>LPD</application>, ειδικά αν υπήρξαν σφάλματα κατά
|
||
την εκτύπωση ή κάποιες ενέργειες από τον διαχειριστή. Αυτή η
|
||
εντολή βρίσκει αρχεία που δεν ανήκουν στον κατάλογο spool και
|
||
τα αφαιρεί.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>disable <replaceable>printer-name</replaceable></command></term>
|
||
|
||
<listitem>
|
||
<para>Απενεργοποιεί την ουρά αναμονής για νέες εργασίες. Αν ο
|
||
εκτυπωτής δουλεύει, θα συνεχίσει να εκτυπώνει τις
|
||
εναπομείναντες εργασίες στην ουρά αναμονής. Ο superuser
|
||
(<username>root</username>) μπορεί πάντα να στέλνει εργασίες,
|
||
ακόμη και σε απενεργοποιημένη σειρά αναμονής.</para>
|
||
|
||
<para>Αυτή η εντολή είναι χρήσιμη, όταν ελέγχετε ένα νέο εκτυπωτή
|
||
ή όταν εγκαθιστάτε ένα φίλτρο: απενεργοποιήστε την ουρά
|
||
αναμονής και στείλτε εργασίες σαν <username>root</username>.
|
||
Οι υπόλοιποι χρήστες δεν θα έχουν δυνατότητα να αποστείλουν
|
||
εργασίες έως ότου ολοκληρώσετε τους ελέγχους σας και
|
||
επανενεργοποιήσετε την ουρά αναμονής με την εντολή
|
||
<command>enable</command>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>down <replaceable>printer-name</replaceable>
|
||
<replaceable>message</replaceable></command></term>
|
||
|
||
<listitem>
|
||
<para>Οδηγεί τον εκτυπωτή σε "κατέβασμα" (down). Είναι ισοδύναμο
|
||
με το <command>disable</command> ακολουθούμενο από ένα
|
||
<command>stop</command>. Το <replaceable>message</replaceable>
|
||
(μήνυμα) εμφανίζεται όταν κάποιος χρήστης ελέγχει την σειρά
|
||
αναμονής με &man.lpq.1; ή την κατάσταση του εκτυπωτή με
|
||
<command>lpc status</command>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>enable
|
||
<replaceable>printer-name</replaceable></command></term>
|
||
|
||
<listitem>
|
||
<para>Ενεργοποίηση της ουράς αναμονής του εκτυπωτή. Οι χρήστες
|
||
μπορούν να αποστείλουν εργασίες αλλά ο εκτυπωτής δεν θα τυπώσει
|
||
έως ότου ξεκινήσει.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>help
|
||
<replaceable>command-name</replaceable></command></term>
|
||
|
||
<listitem>
|
||
<para>Τυπώνει σελίδες βοηθείας για την εντολή
|
||
<replaceable>command-name</replaceable>. Δίχως το
|
||
<replaceable>command-name</replaceable>, εκτυπώνει μια περίληψη
|
||
όλων των διαθέσιμων εντολών.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>restart <replaceable>printer-name</replaceable></command></term>
|
||
|
||
<listitem>
|
||
<para>Ξεκινά τον εκτυπωτή. Οι κανονικοί χρήστες μπορούν να
|
||
χρησιμοποιήσουν αυτή την εντολή μόνο σε κάποια ειδική
|
||
περίπτωση που το <application>LPD</application> δεν αποκρίνεται,
|
||
αλλά δεν μπορούν να ξεκινήσουν ένα εκτυπωτή που έχει σταματήσει
|
||
εξαιτίας των εντολών <command>stop</command> ή
|
||
<command>down</command>. Η εντολή <command>restart</command>
|
||
είναι ισοδύναμη με την <command>abort</command> ακολουθούμενη
|
||
από τη <command>start</command>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>start <replaceable>printer-name</replaceable></command></term>
|
||
|
||
<listitem>
|
||
<para>Ξεκινά τον εκτυπωτή. Ο εκτυπωτής θα τυπώσει εργασίες από
|
||
την ουρά αναμονής του.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>stop
|
||
<replaceable>printer-name</replaceable></command></term>
|
||
|
||
<listitem>
|
||
<para>Σταματάει τον εκτυπωτή. Ο εκτυπωτής θα ολοκληρώσει την
|
||
τρέχουσα εργασία του και δεν θα τυπώσει καμία άλλη εργασία από
|
||
την ουρά αναμονής του. Ακόμη και αν ο εκτυπωτής είναι
|
||
σταματημένος, οι χρήστες μπορούν ακόμη να στέλνουν εργασίες αν
|
||
είναι ενεργοποιημένη η ουρά αναμονής.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>topq <replaceable>printer-name</replaceable>
|
||
<replaceable>job-or-username</replaceable></command></term>
|
||
|
||
<listitem>
|
||
<para>Ανακατάταξη της ουράς αναμονής για τον
|
||
<replaceable>printer-name</replaceable>. Τοποθετούνται πρώτες
|
||
οι εργασίες με αριθμό αναφοράς <replaceable>job</replaceable> ή
|
||
αυτές που ανήκουν στο χρήστη
|
||
<replaceable>username</replaceable>. Για αυτή την εντολή, δεν
|
||
μπορείτε να χρησιμοποιήσετε <literal>all</literal> στην θέση του
|
||
<replaceable>printer-name</replaceable>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>up <replaceable>printer-name</replaceable></command></term>
|
||
|
||
<listitem>
|
||
<para>Οδηγεί τον εκτυπωτή σε "ανέβασμα" (up). Το αντίθετο της
|
||
εντολής <command>down</command>. Ισοδυναμεί με την
|
||
<command>start</command> ακολουθούμενη από την εντολή
|
||
<command>enable</command>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<para>Το &man.lpc.8; δέχεται τις παραπάνω εντολές στην γραμμή εντολών.
|
||
Αν δεν εισάγετε καμία εντολή, το &man.lpc.8; μπαίνει σε κατάσταση
|
||
αλληλεπίδρασης (interactive), όπου μπορείτε να πληκτρολογείτε εντολές
|
||
μέχρι να δώσετε <command>exit</command>,
|
||
<command>quit</command>, ή end-of-file.</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="printing-lpd-alternatives">
|
||
<title>Εναλλακτικές Λύσεις για τον Στάνταρ Spooler</title>
|
||
|
||
<para>Αν έχετε μελετήσει πιστά όλο το κεφάλαιο μέχρι εδώ, θα έχετε μάθει
|
||
σχεδόν τα πάντα σχετικά με το σύστημα παροχέτευσης
|
||
<application>LPD</application> που διατίθεται με το &os;. Θα έχετε
|
||
κατανοήσει και πολλές από τις ελλείψεις του, που φυσικά γεννούν το
|
||
ερώτημα: <quote>Ποια άλλα συστήματα παροχέτευσης (που να λειτουργούν
|
||
στο &os;) υπάρχουν διαθέσιμα;</quote></para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>LPRng</term>
|
||
|
||
<indexterm><primary>LPRng</primary></indexterm>
|
||
<listitem>
|
||
<para>Το <application>LPRng</application>, το οποίο σκόπιμα
|
||
σημαίνει <quote>LPR: the Next Generation (η Επόμενη
|
||
Γενιά)</quote> είναι μια από την αρχή υλοποίηση του PLP.
|
||
Ο Patrick Powell και ο Justin Mason (κύριος συντηρητής του PLP)
|
||
συνεργάστηκαν για να φτιάξουν το
|
||
<application>LPRng</application>. Η κύρια τοποθεσία του
|
||
<application>LPRng</application> είναι η <ulink
|
||
url="http://www.lprng.org/"></ulink>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>CUPS</term>
|
||
|
||
<indexterm><primary>CUPS</primary></indexterm>
|
||
<listitem>
|
||
<para>Το <application>CUPS</application>, ή αλλιώς Common UNIX
|
||
Printing System, παρέχει μια φορητή πλατφόρμα εκτυπώσεων για
|
||
λειτουργικά συστήματα βασισμένα στο &unix;. Αναπτύχθηκε από την
|
||
Easy Software Products για να προωθήσει μια στάνταρ λύση
|
||
εκτυπώσεων για όλους τους χρήστες και κατασκευαστές
|
||
&unix;.</para>
|
||
|
||
<para>Το <application>CUPS</application> χρησιμοποιεί το πρωτόκολλο
|
||
Internet Printing Protocol (<acronym>IPP</acronym>) ως βάση του
|
||
για τη διαχείριση εργασιών εκτύπωσης και ουρών αναμονής.
|
||
Υποστηρίζονται επίσης, αλλά με μειωμένη λειτουργικότητα, τα
|
||
πρωτόκολλα Line Printer Daemon (<acronym>LPD</acronym>), Server
|
||
Message Block (<acronym>SMB</acronym>), και AppSocket (γνωστό ως
|
||
JetDirect). Το CUPS προσθέτει δυνατότητες ανίχνευσης δικτυακών
|
||
εκτυπωτών, ενώ μέσω των επιλογών PostScript Printer Description
|
||
(<acronym>PPD</acronym>) γίνεται εφικτή η υποστήριξη
|
||
σύγχρονων εκτυπωτών στον κόσμο του &unix;.</para>
|
||
|
||
<para>Η κύρια τοποθεσία του <application>CUPS</application> είναι η
|
||
<ulink url="http://www.cups.org/"></ulink>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</sect1>
|
||
|
||
<sect1 id="printing-troubleshooting">
|
||
<title>Εντοπισμός Βλαβών</title>
|
||
|
||
<para>Μετά την εκτέλεση του απλού τεστ με το &man.lptest.1;, αντί της
|
||
κανονικής εκτύπωσης, μπορεί να έχετε λάβει ως αποτέλεσμα μία από τις
|
||
ακόλουθες καταστάσεις:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>Ο εκτυπωτής καθυστέρησε να ξεκινήσει ή δεν εκτύπωσε ολόκληρη τη
|
||
σελίδα.</term>
|
||
|
||
<listitem>
|
||
<para>Ο εκτυπωτής τύπωσε το τεστ, αλλά δεν ξεκίνησε αμέσως. Ίσως
|
||
χρειάστηκε να πιέσετε το πλήκτρο PRINT REMAINING ή το FORM FEED
|
||
του εκτυπωτή σας για να εμφανιστεί το επιθυμητό αποτέλεσμα.</para>
|
||
|
||
<para>Εάν είναι όντως αυτή η περίπτωση σας, ο εκτυπωτής πιθανώς
|
||
να ήταν σε αναμονή για να εξακριβώσει αν υπήρχαν πρόσθετα δεδομένα
|
||
στην εργασία εκτύπωσης πριν ξεκινήσει να εκτυπώνει οτιδήποτε. Για
|
||
να διορθώσετε το πρόβλημα, μπορείτε να θέσετε το φίλτρο κειμένου
|
||
να στέλνει ένα χαρακτήρα FORM FEED (ή άλλο κατάλληλο) στον
|
||
εκτυπωτή. Αυτό συνήθως είναι αρκετό για να μπορείτε να εκτυπώνετε
|
||
κατευθείαν οποιοδήποτε κείμενο απομένει σε αναμονή στην εσωτερική
|
||
μνήμη (buffer) του εκτυπωτή. Είναι επίσης χρήσιμο να ρυθμίζετε
|
||
τις εκτυπώσεις σας ώστε να τελειώνουν με γεμάτη την τελευταία
|
||
σελίδα, ώστε η επόμενη εργασία να μην αρχίζει από τα μισά του
|
||
προηγούμενου φύλλου.</para>
|
||
|
||
<para>Η ακόλουθη τροποποίηση στο shell script
|
||
<filename>/usr/local/libexec/if-simple</filename> εκτυπώνει ένα
|
||
form feed μετά την αποστολή της εργασίας στον εκτυπωτή:</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# if-simple - Simple text input filter for lpd
|
||
# Installed in /usr/local/libexec/if-simple
|
||
#
|
||
# Simply copies stdin to stdout. Ignores all filter arguments.
|
||
# Writes a form feed character (\f) after printing job.
|
||
|
||
/bin/cat && printf "\f" && exit 0
|
||
exit 2</programlisting>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Η εκτύπωση παρουσιάζει <quote>φαινόμενο σκάλας (staircase
|
||
effect).</quote></term>
|
||
|
||
<listitem>
|
||
<para>Στην εκτύπωση σας φαίνεται το ακόλουθο:</para>
|
||
|
||
<screen>!"#$%&'()*+,-./01234
|
||
"#$%&'()*+,-./012345
|
||
#$%&'()*+,-./0123456</screen>
|
||
|
||
<indexterm><primary>MS-DOS</primary></indexterm>
|
||
<indexterm><primary>OS/2</primary></indexterm>
|
||
<indexterm><primary>ASCII</primary></indexterm>
|
||
<para>Γίνατε ένα ακόμα θύμα του
|
||
<emphasis>φαινομένου σκάλας</emphasis>, που προκλήθηκε από
|
||
αντιφατικές ερμηνείες των χαρακτήρων με τους οποίους δηλώνεται η
|
||
τροφοδοσία νέας γραμμής. Τα λειτουργικά συστήματα τύπου &unix;
|
||
χρησιμοποιούν έναν μόνο χαρακτήρα ASCII με κωδικό 10, τον line
|
||
feed (τροφοδοσία γραμμής, LF). Το &ms-dos;, το &os2;, και διάφορα
|
||
άλλα, χρησιμοποιούν ένα ζεύγος χαρακτήρων ASCII κωδικού 10
|
||
<emphasis>και</emphasis> ASCII κωδικού 13 (τον carriage return ή
|
||
αλλιώς CR). Πολλοί εκτυπωτές χρησιμοποιούν την σύμβαση του
|
||
&ms-dos; για την αλλαγή γραμμής.</para>
|
||
|
||
<para>Όταν εκτυπώνετε με το &os;, το κείμενο σας απλά χρησιμοποιεί
|
||
τον χαρακτήρα τροφοδοσίας γραμμής (line feed). Ο εκτυπωτής, μόλις
|
||
αντιληφθεί τον χαρακτήρα line feed, προωθεί το χαρτί κατά μία
|
||
γραμμή, αλλά κρατάει την ίδια θέση οριζόντια καθώς καλείται να
|
||
εκτυπώσει τον επόμενο χαρακτήρα. Σε αυτό το σημείο
|
||
χρησιμοποιείται το CR (carriage return): μετακινεί δηλαδή την
|
||
θέση εργασίας για τον επόμενο χαρακτήρα που πρόκειται να
|
||
εκτυπωθεί στο αριστερό άκρο του χαρτιού.</para>
|
||
|
||
<para>Το &os; επιθυμεί ο εκτυπωτής να μπορεί να ενεργεί ως
|
||
εξής:</para>
|
||
|
||
<informaltable frame="none" pgwide="1">
|
||
<tgroup cols="2">
|
||
<tbody>
|
||
<row>
|
||
<entry>Όταν ο εκτυπωτής λαμβάνει CR</entry>
|
||
<entry>Να εκτυπώνει CR</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>Όταν ο εκτυπωτής λαμβάνει LF</entry>
|
||
<entry>Να εκτυπώνει CR + LF</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
|
||
<para>Υπάρχουν διάφοροι τρόποι για να επιτευχθεί αυτό:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Χρησιμοποιήστε τα πλήκτρα ρύθμισης του εκτυπωτή ή
|
||
τον πίνακα ελέγχου για να αλλάξετε τον τρόπο με τον οποίο
|
||
ερμηνεύει αυτούς τους χαρακτήρες ο εκτυπωτής σας.
|
||
Συμβουλευτείτε το εγχειρίδιο χρήσης του για να δείτε πως
|
||
μπορεί να γίνει αυτό.</para>
|
||
|
||
<note>
|
||
<para>Αν έχετε και άλλα λειτουργικά στο σύστημα σας εκτός από
|
||
το &os;, πιθανόν να χρειαστεί, όταν τα χρησιμοποιείτε, να
|
||
<emphasis>επαναρυθμίσετε</emphasis> τον εκτυπωτή σας ώστε
|
||
να ερμηνεύει διαφορετικά τους χαρακτήρες CR και LF.
|
||
Στην περίπτωση αυτή, ίσως είναι καλύτερο να προτιμήσετε
|
||
κάποια από τις λύσεις που ακολουθούν.</para>
|
||
</note>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Ο οδηγός (driver) της σειριακής γραμμής του &os; μπορεί να
|
||
μετατρέπει αυτόματα από LF σε CR+LF. Φυσικά, αυτό δουλεύει
|
||
<emphasis>μόνο</emphasis> σε σειριακές θύρες.
|
||
Για να ενεργοποιήσετε αυτή την λειτουργία, χρησιμοποιήστε την
|
||
ικανότητα <literal>ms#</literal> και ορίστε την κατάσταση
|
||
λειτουργίας <literal>onlcr</literal> στο αρχείο
|
||
<filename>/etc/printcap</filename> για τον εκτυπωτή.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Στείλτε ένα
|
||
<emphasis>κωδικό διαφυγής (escape code)</emphasis> στον
|
||
εκτυπωτή ώστε να χειρίζεται προσωρινά τους χαρακτήρες LF με
|
||
διαφορετικό τρόπο. Συμβουλευτείτε το εγχειρίδιο χρήσης του
|
||
εκτυπωτή σας για τους κώδικες διαφυγής που υποστηρίζονται.
|
||
Όταν ανακαλύψετε τον κατάλληλο, μετατρέψτε το φίλτρο κειμένου
|
||
ώστε να στέλνει πρώτα τον κωδικό, και έπειτα την εργασία στον
|
||
εκτυπωτή.</para>
|
||
|
||
<indexterm><primary>PCL</primary></indexterm>
|
||
<para>Εδώ είναι ένα παράδειγμα φίλτρου κειμένου για εκτυπωτές
|
||
που καταλαβαίνουν τους κωδικούς διαφυγής PCL της
|
||
Hewlett-Packard. Αυτό το φίλτρο κάνει τον εκτυπωτή να
|
||
χειρίζεται τους χαρακτήρες LF ως LF και CR. Έπειτα αποστέλλει
|
||
την εργασία, στέλνοντας στο τέλος της ένα χαρακτήρα αλλαγής
|
||
σελίδας (form feed) ώστε να γίνει σωστή εξαγωγή της τελευταίας
|
||
σελίδας. Το φίλτρο αυτό θα πρέπει να δουλεύει με σχεδόν
|
||
όλους τους εκτυπωτές της Hewlett Packard.</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# hpif - Simple text input filter for lpd for HP-PCL based printers
|
||
# Installed in /usr/local/libexec/hpif
|
||
#
|
||
# Simply copies stdin to stdout. Ignores all filter arguments.
|
||
# Tells printer to treat LF as CR+LF. Ejects the page when done.
|
||
|
||
printf "\033&k2G" && cat && printf "\033&l0H" && exit 0
|
||
exit 2</programlisting>
|
||
|
||
<para>Εδώ είναι ένα παράδειγμα για το
|
||
<filename>/etc/printcap</filename> ενός υπολογιστή με όνομα
|
||
<hostid>orchid</hostid>. Έχει ένα μόνο εκτυπωτή στην πρώτη
|
||
παράλληλη θύρα του, ένα Hewlett Packard LaserJet 3Si με όνομα
|
||
<literal>teak</literal>. Χρησιμοποιεί το παραπάνω script ως
|
||
φίλτρο κειμένου:</para>
|
||
|
||
<programlisting>#
|
||
# /etc/printcap for host orchid
|
||
#
|
||
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
|
||
:lp=<filename class="devicefile">/dev/lpt0</filename>:sh:sd=<filename class="directory">/var/spool/lpd/teak</filename>:mx#0:\
|
||
:if=<filename>/usr/local/libexec/hpif</filename>:</programlisting>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Εκτυπώνεται η μία γραμμή πάνω στην άλλη.</term>
|
||
|
||
<listitem>
|
||
<para>Ο εκτυπωτής δεν προωθεί καθόλου το χαρτί και όλες οι γραμμές
|
||
κειμένου τυπώνονται η μία πάνω από την άλλη, σε μία γραμμή.</para>
|
||
|
||
<para>Αυτό το πρόβλημα είναι το <quote>αντίστροφο</quote> του
|
||
φαινόμενου σκάλας, που περιγράψαμε προηγουμένως, και είναι πολύ
|
||
σπάνιο. Σε κάποιο σημείο, οι χαρακτήρες LF που χρησιμοποιεί το
|
||
&os; για να τερματίσει την γραμμή, ερμηνεύονται ως χαρακτήρες CR
|
||
οι οποίοι επιστρέφουν την κεφαλή στο αριστερό άκρο του χαρτιού,
|
||
αλλά δίχως να προωθήσουν το χαρτί μία γραμμή προς τα κάτω.</para>
|
||
|
||
<para>Χρησιμοποιήστε τους διακόπτες ρυθμίσεων του εκτυπωτή ή τον
|
||
πίνακα ελέγχου για να θέσετε τις ακόλουθες επιλογές για τα LF και
|
||
CR characters:</para>
|
||
|
||
<informaltable frame="none" pgwide="1">
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>Ο εκτυπωτής λαμβάνει</entry>
|
||
<entry>Ο εκτυπωτής τυπώνει</entry>
|
||
</row>
|
||
</thead>
|
||
|
||
<tbody>
|
||
<row>
|
||
<entry>CR</entry>
|
||
<entry>CR</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>LF</entry>
|
||
<entry>CR + LF</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Ο εκτυπωτής δεν εκτυπώνει (χάνει) κάποιους χαρακτήρες.</term>
|
||
|
||
<listitem>
|
||
<para>Ο εκτυπωτής, ενώ είναι σε λειτουργία εκτύπωσης, δεν εκτυπώνει
|
||
κάποιους χαρακτήρες σε όλες τις γραμμές. Το πρόβλημα πιθανώς να
|
||
γίνεται εντονότερο καθώς η εκτύπωση εξελίσσεται, χάνοντας ακόμη
|
||
περισσότερους χαρακτήρες.</para>
|
||
|
||
<para>Το πρόβλημα είναι πως ο εκτυπωτής, καθώς εκτυπώνει, δεν
|
||
προλαβαίνει να ακολουθήσει την ταχύτητα με την οποία ο
|
||
υπολογιστής στέλνει δεδομένα μέσω της σειριακής διασύνδεσης (αυτό
|
||
το πρόβλημα δεν πρέπει κανονικά να συμβαίνει σε εκτυπωτές
|
||
συνδεμένους σε παράλληλες θύρες). Υπάρχουν δύο τρόποι για να
|
||
ξεπεραστεί αυτό το πρόβλημα:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Εάν ο εκτυπωτής υποστηρίζει έλεγχο ροής XON/XOFF, ρυθμίστε
|
||
το &os; να τον χρησιμοποιήσει ορίζοντας την κατάσταση
|
||
λειτουργίας <literal>ixon</literal> με την ικανότητα
|
||
<literal>ms#</literal>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Εάν ο εκτυπωτής υποστηρίζει έλεγχο ροής τύπου Request to
|
||
Send / Clear to Send (hardware handshake, γνωστό και με την
|
||
ονομασία <literal>RTS/CTS</literal>), πρέπει να οριστεί η
|
||
κατάσταση λειτουργίας <literal>crtscts</literal> στην
|
||
ικανότητα <literal>ms#</literal>. Βεβαιωθείτε πως το καλώδιο
|
||
που συνδέει τον εκτυπωτή με τον υπολογιστή είναι σωστά
|
||
φτιαγμένο για χρήση αυτού του ελέγχου ροής.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Ο εκτυπωτής τυπώνει σκουπίδια.</term>
|
||
|
||
<listitem>
|
||
<para>Ο εκτυπωτής τύπωσε κάτι που αποκαλούμε τυχαία σκουπίδια,
|
||
εννοώντας οτιδήποτε εκτός του επιθυμητού κειμένου.</para>
|
||
|
||
<para>Αυτό είναι συνήθως ένα ακόμα σύμπτωμα λανθασμένων παραμέτρων
|
||
σειριακής επικοινωνίας με τον εκτυπωτή. Ελέγξτε ξανά την τιμή bps
|
||
rate στην ικανότητα <literal>br</literal>, και την ρύθμιση parity
|
||
στην ικανότητα <literal>ms#</literal>. Βεβαιωθείτε πως ο
|
||
εκτυπωτής χρησιμοποιεί τις ίδιες ρυθμίσεις που έχουν καθοριστεί
|
||
στο αρχείο <filename>/etc/printcap</filename>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Δεν συνέβη τίποτε, ο εκτυπωτής δεν ξεκίνησε καν.</term>
|
||
|
||
<listitem>
|
||
<para>Αν δεν συνέβη τίποτε, το πρόβλημα πιθανόν να οφείλεται
|
||
στο &os; και όχι στο hardware. Προσθέστε την ικανότητα αρχείου
|
||
καταγραφής (log file, <literal>lf</literal>) στο αρχείο
|
||
<filename>/etc/printcap</filename>, στην καταχώριση του εκτυπωτή
|
||
που έχει το πρόβλημα. Για παράδειγμα, εδώ είναι η καταχώριση για
|
||
τον <literal>rattan</literal>, με την ικανότητα
|
||
<literal>lf</literal>:</para>
|
||
|
||
<programlisting>rattan|line|diablo|lp|Diablo 630 Line Printer:\
|
||
:sh:sd=<filename class="directory">/var/spool/lpd/rattan</filename>:\
|
||
:lp=<filename class="devicefile">/dev/lpt0</filename>:\
|
||
:if=<filename>/usr/local/libexec/if-simple</filename>:\
|
||
:lf=<filename>/var/log/rattan.log</filename></programlisting>
|
||
|
||
<para>Έπειτα, προσπαθήστε να ξαναεκτυπώσετε. Ελέγξτε το αρχείο
|
||
καταγραφής (log) (στο παράδειγμα μας,
|
||
<filename>/var/log/rattan.log</filename>) για να βρείτε πιθανές
|
||
αναφορές σφαλμάτων. Με βάση τα μηνύματα που βλέπετε, προσπαθήστε
|
||
να διορθώσετε το πρόβλημα.</para>
|
||
|
||
<para>Αν δεν καθορίσετε την ικανότητα <literal>lf</literal>, το
|
||
<application>LPD</application> χρησιμοποιεί από προεπιλογή το
|
||
<filename class="devicefile">/dev/console</filename>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</sect1>
|
||
</chapter>
|
||
|
||
<!--
|
||
Local Variables:
|
||
mode: sgml
|
||
coding: iso-8859-7
|
||
sgml-declaration: "../chapter.decl"
|
||
sgml-indent-data: t
|
||
sgml-omittag: nil
|
||
sgml-always-quote-attributes: t
|
||
sgml-parent-document: ("../book.sgml" "part" "chapter")
|
||
End:
|
||
-->
|