Εκτύπωση

Οι περισσότερες εφαρμογές χρειάζονται υποστήριξη εκτύπωσης, καθώς οι χρήστες αναμένουν ότι θα μπορούν να εκτυπώσουν αυτό που βλέπουν στην οθόνη τους. Η πλατφόρμα GNOME παρέχει βιβλιοθήκες που επιτρέπουν στην εφαρμογή σας να υποστηρίζει εκτυπώσεις υψηλής ποιότητας.

3.7.1. GNOME Print

Σημειώστε ότι αυτή η ενότητα δεν είναι ενημερωμένη και ότι το libgnomeprint και το libgnomeprintui είναι πια πεπαλαιωμένα προς όφελος του GtkPrint. Η εκτυπώσεις έχουν ενσωματωθεί κατ' ευθείαν μέσα στο GTK+ 2.10 και τις επόμενες εκδόσεις του, παρέχοντας ένα διαπλατφορμικό API εκτυπώσεων που μπορούν να χρησιμοποιούν όλες οι εφαρμογές. Η σταθερότητα των API και ABI εγγυάται ότι το Gnomeprint θα εξακολουθήσει να λειτουργεί και να υποστηρίζεται καθ' όλη τη διάρκεια ζωής του GNOME 2.

Το πλαίσιο GNOME Print περιλαμβάνει δύο βιβλιοθήκες που επιτρέπουν στην εφαρμογή σας να παρέχει εκτύπωση υψηλής ποιότητας μέσω μιας ενιαίας διεπαφής. Η βάση του πλαισίου είναι η libgnomeprint, η βιβλιοθήκη που δημιουργεί την έξοδο PostScript που αποστέλλεται στον εκτυπωτή. Από πάνω βρίσκεται η libgnomeprintui, που παρέχει τους κλασικούς ελέγχους εκτύπωσης για τη διεπαφή χρήστη σας.

Η βιβλιοθήκη libgnomeprint υλοποιεί το μοντέλο απεικόνισης PostScript, που χρησιμοποιείται από τους περισσότερους εκτυπωτές. Για τους εκτυπωτές που δεν υποστηρίζουν PostScript, μπορεί να παρασχεθεί υποστήριξη μέσω CUPS (περιγράφεται παρακάτω). Πέρα από την κλασική απεικόνιση PostScript, η libgnomeprint υποστηρίζει επίσης κανάλια άλφα και αντιταύτιση (anti-aliasing).

Η βιβλιοθήκη libgnomeprintui παρέχει το συνήθη διάλογο εκτύπωσης, ένα διάλογο προεπισκόπησης εκτύπωσης, καθώς και διάφορους άλλους ελέγχους και λειτουργίες που απαιτούνται για την ενσωμάτωση της εκτύπωσης σε μία εύληπτη διεπαφή χρήστη. Το πλαίσιο εκτύπωσης του GNOME αναλαμβάνει τις λεπτομέρειες του εντοπισμού εκτυπωτών και της ανάθεσης (spooling) των εκτυπώσεων, ενώ επίσης προσφέρει εξαγωγή σε PostScript ή PDF απευθείας από το διάλογο εκτύπωσης.

Χρησιμοποιήστε τη libgnomeprint για να μετατρέψετε σε PostScript περιεχόμενο προς εκτύπωση. Χρησιμοποιήστε τη libgnomeprintui για να δημιουργήσετε διεπαφή χρήστη για την εκτύπωση, ακόμη και αν η έξοδος προέρχεται από διαφορετική πηγή. Η χρήση του πλαισίου εκτύπωσης του GNOME παρέχει στους χρήστες σας μια ενιαία διεπαφή χρήστη, με όλες τις αναμενόμενες λειτουργίες μιας εφαρμογής εκτύπωσης.

3.7.2. CUPS

Στα περισσότερα συστήματα GNOME το CUPS (Common UNIX Printing System) λειτουργεί ως σύστημα εκτύπωσης χαμηλού επιπέδου. Το CUPS παρέχει μία σύγχρονη, πλούσια σε δυνατότητες, αρχιτεκτονική για τον εντοπισμό εκτυπωτών, την πρόσβαση στις επιλογές εκτύπωσης και την ανάθεση των εργασιών εκτύπωσης σε διάφορους τύπους εκτυπωτών.

Το CUPS παρέχει μια σειρά από βοηθήματα για την αυτόματη ανακάλυψη τοπικών και δικτυακών εκτυπωτών. Έτσι, επιτρέπει στους χρήστες να βλέπουν όλους τους διαθέσιμους εκτυπωτές, αλλά και να χρησιμοποιούν διάφορους τύπους εκτυπωτών χωρίς να απαιτούνται χειροκίνητες ρυθμίσεις.

Το CUPS παρέχει μια ενιαία διεπαφή εκτύπωσης, ανεξάρτητα από την τοποθεσία ή τον τύπο του εκτυπωτή. Το CUPS χειρίζεται άψογα διάφορα πρωτόκολλα εκτύπωσης, εφαρμόζοντας αυτόματα φίλτρα στο περιεχόμενο που αποστέλλεται στον εκτυπωτή. Αρκεί οι εφαρμογές να παρέχουν έξοδο PostScript και το CUPS θα κάνει αυτόματα τη μετατροπή όταν ο εκτυπωτής δεν υποστηρίζει εγγενώς PostScript.

Το CUPS παρέχει επίσης επιλογές ρυθμίσεων για τους εκτυπωτές, με τη μορφή αρχείων PPD (PostScript Printer Description). Οι ρυθμίσεις PPD επιτρέπουν στις εφαρμογές να εμφανίζουν στο χρήστη όλες τις δυνατότητες κάθε μεμονωμένου εκτυπωτή μέσω μιας ενιαίας διεπαφής χρήστη. Για παράδειγμα, το PPD σας επιτρέπει να διαπιστώνετε αν ο εκτυπωτής υποστηρίζει την ταξινόμηση και συρραφή των εκτυπώσεων, ώστε να παρέχετε τη σχετική επιλογή στη διεπαφή χρήστη.

Στις περισσότερες περιπτώσεις, οι εφαρμογές σας δεν χρειάζεται να αλληλεπιδρούν απευθείας με το CUPS. Χρησιμοποιώντας το πλαίσιο εκτύπωσης GNOME, έχουν αυτόματη πρόσβαση στην ισχύ και την ευελιξία του CUPS. Έτσι, η ύπαρξη του CUPS στο χαμηλό επίπεδο βελτιώνει την εμπειρία του χρήστη, μειώνοντας παράλληλα τον απαιτούμενο προγραμματισμό.