Προγραμματισμός

Εκτύπωση σε Java, Μέρος 1

Προηγούμενη 1 2 Σελίδα 2 Σελίδα 2 από 2

Μοντέλα απόδοσης

Υπάρχουν δύο μοντέλα εκτύπωσης στην Java: Εκτυπώσιμος θέσεις εργασίας και Σελίδα θέσεις εργασίας.

Εκτυπώσιμα

Εκτυπώσιμος Οι εργασίες είναι οι απλούστερες από τα δύο μοντέλα εκτύπωσης. Αυτό το μοντέλο χρησιμοποιεί μόνο ένα PagePainter για ολόκληρο το έγγραφο. Οι σελίδες αποδίδονται διαδοχικά, ξεκινώντας από τη σελίδα μηδέν. Όταν εκτυπώνεται η τελευταία σελίδα, το δικό σας PagePainter πρέπει να επιστρέψει το ΟΧΙ_SUCH_PAGE αξία. Το υποσύστημα εκτύπωσης θα ζητά πάντα από την εφαρμογή να αποδίδει τις σελίδες στη σειρά. Για παράδειγμα, εάν ζητηθεί από την εφαρμογή σας να αποδώσει σελίδες πέντε έως επτά, το υποσύστημα εκτύπωσης θα ζητήσει όλες τις σελίδες έως την έβδομη σελίδα, αλλά θα εκτυπώσει μόνο τις σελίδες πέντε, έξι και επτά. Εάν η εφαρμογή σας εμφανίσει ένα παράθυρο διαλόγου εκτύπωσης, ο συνολικός αριθμός των σελίδων που θα εκτυπωθούν δεν θα εμφανίζεται, καθώς είναι αδύνατο να γνωρίζετε εκ των προτέρων τον αριθμό των σελίδων στο έγγραφο χρησιμοποιώντας αυτό το μοντέλο.

Σελίδες

Σελίδα οι θέσεις εργασίας προσφέρουν περισσότερη ευελιξία από ό, τι Εκτυπώσιμος εργασίες, όπως κάθε σελίδα σε ένα Σελίδα η εργασία μπορεί να διαθέτει διαφορετική διάταξη. Σελίδα Οι εργασίες χρησιμοποιούνται συχνότερα με Βιβλίοs, μια συλλογή σελίδων που μπορούν να έχουν διαφορετικές μορφές. Θα εξηγήσω το Βιβλίο τάξη σε μια στιγμή.

ΕΝΑ Σελίδα η εργασία έχει τα ακόλουθα χαρακτηριστικά:

  • Κάθε σελίδα μπορεί να έχει τον δικό της ζωγράφο. Για παράδειγμα, θα μπορούσατε να εφαρμόσετε έναν ζωγράφο για να εκτυπώσετε το εξώφυλλο, έναν άλλο ζωγράφο για να εκτυπώσετε τον πίνακα περιεχομένων και ένα τρίτο για να εκτυπώσετε ολόκληρο το έγγραφο.
  • Μπορείτε να ορίσετε μια διαφορετική μορφή σελίδας για κάθε σελίδα στο βιβλίο. Σε ένα Σελίδα δουλειά, μπορείτε να συνδυάσετε κατακόρυφες και οριζόντιες σελίδες.
  • Το υποσύστημα εκτύπωσης ενδέχεται να ζητήσει από την εφαρμογή σας να εκτυπώσει σελίδες εκτός σειράς και ορισμένες σελίδες ενδέχεται να παραλειφθούν εάν είναι απαραίτητο. Και πάλι, δεν χρειάζεται να ανησυχείτε για αυτό, αρκεί να μπορείτε να παρέχετε οποιαδήποτε σελίδα στο έγγραφό σας κατ 'απαίτηση.
  • ο Σελίδα Η εργασία δεν χρειάζεται να γνωρίζει πόσες σελίδες υπάρχουν στο έγγραφο.

Βιβλία

Επίσης νέο καθώς η έκδοση 1.2 είναι η Βιβλίο τάξη. Αυτή η τάξη σάς επιτρέπει να δημιουργήσετε έγγραφα πολλών σελίδων. Κάθε σελίδα μπορεί να έχει τη δική της μορφή και τον δικό της ζωγράφο, δίνοντάς σας την ευελιξία να δημιουργείτε εξελιγμένα έγγραφα. Από το Βιβλίο τάξη εφαρμόζει το Σελίδα διεπαφή, θα μπορούσατε να εφαρμόσετε τη δική σας Βιβλίο τάξη όταν παρέχονται Βιβλίο Η τάξη δεν διαθέτει τις δυνατότητες που χρειάζεστε.

ΕΝΑ Βιβλίο Το μάθημα αντιπροσωπεύει μια συλλογή σελίδων. Όταν δημιουργήθηκε για πρώτη φορά, το Βιβλίο το αντικείμενο είναι άδειο. Για να προσθέσετε σελίδες, απλώς χρησιμοποιείτε ένα από τα δύο προσαρτώ() μεθόδους (δείτε την εξήγησή μου για αυτήν την τάξη στην ενότητα API για περισσότερες λεπτομέρειες). Οι παράμετροι αυτής της μεθόδου είναι οι ΣελίδαFormat αντικείμενο, το οποίο καθορίζει τα φυσικά χαρακτηριστικά της σελίδας, και a PagePainter αντικείμενο, το οποίο εφαρμόζει το Εκτυπώσιμος διεπαφή. Εάν δεν γνωρίζετε τον αριθμό των σελίδων στο έγγραφό σας, απλώς περάστε το UNKNOWN_NUMBER_OF_PAGES τιμή στο προσαρτώ() μέθοδος. Το σύστημα του εκτυπωτή θα εντοπίσει αυτόματα τον αριθμό των σελίδων καλώντας όλους τους ζωγράφους σελίδων στο βιβλίο μέχρι να λάβει ένα ΟΧΙ_SUCH_PAGE αξία.

Ορισμός API

Η θεωρία και η πρακτική θα συναντηθούν σε αυτήν την ενότητα. Στις προηγούμενες ενότητες, μάθαμε για τη δομή της σελίδας, τις μονάδες μέτρησης και τα μοντέλα απόδοσης. Σε αυτήν την ενότητα, θα εξετάσουμε το API εκτύπωσης Java.

Όλες οι τάξεις που απαιτούνται για εκτύπωση βρίσκονται στο java.awt.print πακέτο, το οποίο αποτελείται από τρεις διεπαφές και τέσσερις κατηγορίες. Οι παρακάτω πίνακες καθορίζουν τις κλάσεις και τις διεπαφές του πακέτου εκτύπωσης.

ΟνομαΤύποςΠεριγραφή
ΧαρτίΤάξηΑυτή η τάξη καθορίζει τα φυσικά χαρακτηριστικά της σελίδας.
ΣελίδαFormatΤάξηΣελίδαFormat καθορίζει το μέγεθος και τον προσανατολισμό της σελίδας. Ορίζει επίσης ποια Χαρτί για χρήση κατά την απόδοση μιας σελίδας.
Εκτυπωτής ΕργασίαΤάξη

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

ΒιβλίοΤάξη

Βιβλίο αντιπροσωπεύει ένα έγγραφο. ΕΝΑ Βιβλίο το αντικείμενο ενεργεί ως συλλογή σελίδων. Σελίδες που περιλαμβάνονται στο Βιβλίο μπορεί να έχει πανομοιότυπες ή διαφορετικές μορφές και μπορεί να χρησιμοποιεί διαφορετικούς ζωγράφους.

ΣελίδαΔιεπαφήΕΝΑ Σελίδα Η υλοποίηση αντιπροσωπεύει ένα σύνολο σελίδων προς εκτύπωση. ο Σελίδα Το αντικείμενο επιστρέφει τον συνολικό αριθμό σελίδων στο σύνολο καθώς και το ΣελίδαFormat και Εκτυπώσιμος για μια καθορισμένη σελίδα. ο Βιβλίο κλάση εφαρμόζει αυτήν τη διεπαφή.
ΕκτυπώσιμοςΔιεπαφήΈνας ζωγράφος σελίδας πρέπει να εφαρμόσει το Εκτυπώσιμος διεπαφή. Υπάρχει μόνο μία μέθοδος σε αυτήν τη διεπαφή, Τυπώνω().
Εκτυπωτής ΓραφικάΔιεπαφήο Γραφικά αντικείμενο υλοποιεί αυτήν τη διεπαφή. Εκτυπωτής Γραφικά παρέχει το getPrinterJob () μέθοδος για την απόκτηση της εργασίας εκτυπωτή που παρουσίασε τη διαδικασία εκτύπωσης.

Διεπαφή σελίδας

ο Σελίδα η διεπαφή περιλαμβάνει τρεις μεθόδους:

Όνομα μεθόδουΠεριγραφή
int getNumberOfPages ()Επιστρέφει τον αριθμό των σελίδων στο έγγραφο.
PageFormat getPageFormat (int pageIndex)Επιστρέφει τη σελίδα ΣελίδαFormat όπως καθορίζεται από σελίδαIndex.
Εκτυπώσιμη getPrintable (int pageIndex)Επιστρέφει το Εκτυπώσιμος παράδειγμα υπεύθυνη για την απόδοση της σελίδας που καθορίζεται από σελίδαIndex.

Εκτυπώσιμη διεπαφή

ο Εκτυπώσιμος η διεπαφή διαθέτει μία μέθοδο και δύο τιμές:

ΟνομαΤύποςΠεριγραφή
int print (Γραφικά γραφικών, PageFormat pageFormat, int pageIndex)Μέθοδος

Ζητεί από τα γραφικά να χειριστούν χρησιμοποιώντας τη δεδομένη μορφή σελίδας να αποδώσουν την καθορισμένη σελίδα.

ΟΧΙ_SUCH_PAGEαξίαΑυτή είναι μια σταθερά. Επιστρέψτε αυτήν την τιμή για να υποδείξετε ότι δεν υπάρχουν άλλες σελίδες για εκτύπωση.
ΣΕΛΙΔΑ_ΕΞΑΡΤΕΣαξίαο Τυπώνω() επιστρέφει η μέθοδος ΣΕΛΙΔΑ_ΕΞΑΡΤΕΣ. Υποδεικνύει ότι η σελίδα πέρασε ως παράμετρος στο Τυπώνω() έχει αποδοθεί και υπάρχει.

Κάθε ζωγράφος σελίδας πρέπει να εφαρμόσει το Εκτυπώσιμος διεπαφή. Δεδομένου ότι υπάρχει μόνο μία μέθοδος εφαρμογής, η δημιουργία ζωγράφων σελίδων μπορεί να φαίνεται εύκολη. Ωστόσο, να θυμάστε ότι ο κώδικάς σας πρέπει να μπορεί να αποδίδει οποιαδήποτε σελίδα εντός ή εκτός σειράς.

Υπάρχουν τρεις παράμετροι Τυπώνω(), συμπεριλαμβανομένου Γραφικά, η οποία είναι η ίδια τάξη που χρησιμοποιείται για να σχεδιάσετε στην οθόνη. Από το Γραφικά τάξη εφαρμόζει το ΕκτυπωτήςΓραφικός διεπαφή, μπορείτε να αποκτήσετε το Εκτυπωτής Εργασία που δημιούργησε αυτήν την εργασία εκτύπωσης. Εάν η διάταξη της σελίδας σας είναι περίπλοκη και απαιτεί ορισμένες προηγμένες λειτουργίες σχεδίασης, μπορείτε να μεταδώσετε το Γραφικά παράμετρος έως a Γραφικά 2D αντικείμενο. Στη συνέχεια, θα έχετε πρόσβαση στο πλήρες API 2D Java.

Πριν ξεκινήσετε να χρησιμοποιείτε το Γραφικά αντικείμενο, σημειώστε ότι οι συντεταγμένες δεν μεταφράζονται στην επάνω αριστερή γωνία της εκτυπώσιμης περιοχής. Ανατρέξτε στο Σχήμα 3 για να βρείτε τη θέση της προεπιλεγμένης προέλευσης.

(0, 0) εμφανίζεται στην επάνω αριστερή γωνία των περιθωρίων του εκτυπωτή. Για να εκτυπώσετε ένα ορθογώνιο 1 προς 1 ίντσα, 1 ίντσα από το επάνω και το αριστερό περιθώριο, θα χρησιμοποιήσετε τον ακόλουθο κωδικό:

1: δημόσια int print (Graphics graphic, PageFormat pageFormat, int pageIndex) {2: Graphics2D graphic2D = (Graphics2D) γραφικά. 3: Rectangle2D.Double ορθογώνιο = νέο Rectangle2D.Double (); 4: rectangle.setRect (pageFormat.getImageableX () + 72, 5: pageFormat.getImageableY () + 72, 6: 72, 7: 72); 8: graphic2D.draw (ορθογώνιο) 9: επιστροφή (PAGE_EXISTS) }

Από το προηγούμενο παράδειγμα, βλέπουμε ότι πρέπει να μεταφράσουμε χειροκίνητα την προέλευση του ορθογωνίου έτσι ώστε να εκτυπώνεται στην κορυφή της εκτυπώσιμης περιοχής όπως στο Σχήμα 1. Για να απλοποιήσουμε τον κώδικα, θα μπορούσαμε να μεταφράσουμε τις συντεταγμένες μία φορά και να χρησιμοποιήσουμε (0, 0 ) ως προέλευση της εκτυπώσιμης περιοχής. Τροποποιώντας το προηγούμενο παράδειγμα, λαμβάνουμε:

1: δημόσια int print (Graphics graphic, PageFormat pageFormat, int pageIndex) {2: Graphics2D graphic2D = (Graphics2D) γραφικά. 3: graphic2D.translate (pageFormat.getImageableX (), pageFormat.getImageableY ()); 4: Rectangle2D.Double ορθογώνιο = νέο Rectangle2D.Double (); 5: ορθογώνιο.setRect (72, 72, 72, 72); 6: graphic2D.draw (ορθογώνιο) 7: επιστροφή (PAGE_EXISTS) 8:}

Χρησιμοποιώντας το μεταφράζω() μέθοδος στη γραμμή 3, μπορούμε να μεταφράσουμε τις συντεταγμένες και να ορίσουμε την προέλευσή μας (0, 0) στην κορυφή της εκτυπώσιμης περιοχής. Από εδώ και πέρα, ο κωδικός μας θα απλοποιηθεί.

Διεπαφή PrinterGraphics

ο Εκτυπωτής Γραφικά η διεπαφή αποτελείται από μία μέθοδο:

Όνομα μεθόδουΠεριγραφή
PrinterJob getPrinterJob ()Επιστρέφει το Εκτυπωτής Εργασία για αυτό το αίτημα απόδοσης και εφαρμόζεται από το Γραφικά τάξη

Κατηγορία χαρτιού

Οκτώ μέθοδοι αποτελούν το Χαρτί τάξη:

Όνομα μεθόδουΠεριγραφή
διπλό getHeight ()Αυτή η μέθοδος επιστρέφει το φυσικό ύψος της σελίδας σε σημεία (1 ίντσα = 72 βαθμοί). Για παράδειγμα, εάν εκτυπώνετε σε μια σελίδα μεγέθους γραμμάτων, η τιμή επιστροφής θα είναι 792 πόντοι ή 11 ίντσες.
διπλό getImageableHeight ()Αυτή η μέθοδος επιστρέφει το ύψος της σελίδας με δυνατότητα εικόνας. Το απεικονιζόμενο ύψος είναι το ύψος της περιοχής εκτύπωσης στην οποία μπορείτε να σχεδιάσετε. Δείτε το Σχήμα 1 για μια γραφική προβολή της περιοχής με δυνατότητα εικόνας.
διπλό getImageableWidth ()Αυτή η μέθοδος επιστρέφει το πλάτος μιας σελίδας με δυνατότητα εικόνας (το πλάτος της περιοχής εκτύπωσης στην οποία μπορείτε να σχεδιάσετε). Δείτε το Σχήμα 1 για μια γραφική προβολή της περιοχής με δυνατότητα εικόνας.
διπλό getImageableX ()Αυτή η μέθοδος επιστρέφει την προέλευση x της περιοχής με δυνατότητα εικόνας. Δεδομένου ότι δεν υπάρχει υποστήριξη για περιθώρια, η τιμή επιστροφής αντιπροσωπεύει το αριστερό περιθώριο.
διπλό getImageableY ()Αυτή η μέθοδος επιστρέφει την προέλευση της περιοχής με δυνατότητα εικόνας. Η τιμή που επιστρέφεται από αυτήν τη μέθοδο είναι ισοδύναμη με το ανώτερο περιθώριο.
διπλό getWidth ()Αυτή η μέθοδος επιστρέφει το φυσικό πλάτος της σελίδας σε σημεία. Εάν εκτυπώνετε σε χαρτί μεγέθους γραμμάτων, το πλάτος είναι 8,5 ίντσες ή 612 σημεία.
void setImageableArea (διπλό x, διπλό, διπλό πλάτος, διπλό ύψος)Αυτή η μέθοδος ορίζει την περιοχή με δυνατότητα εικόνας και καθορίζει τα περιθώρια στη σελίδα. Στην πραγματικότητα, το API δεν παρέχει καμία μέθοδο για τον καθορισμό των περιθωρίων ρητά. πρέπει να τα υπολογίσετε μόνοι σας.
void setSize (διπλό πλάτος, διπλό ύψος)Αυτή η μέθοδος καθορίζει το φυσικό μέγεθος σελίδας. Για να ορίσετε ένα φύλλο 8,5 με 11 ίντσες, θα παρέχετε 612 και 792 πόντους. Σημειώστε ότι το προεπιλεγμένο μέγεθος είναι ΓΡΑΜΜΑ.

Πριν προχωρήσουμε στην επόμενη ενότητα, θυμηθείτε ότι το Χαρτί τάξη ορίζει τα φυσικά χαρακτηριστικά της σελίδας. ο ΣελίδαFormat τάξη αντιπροσωπεύει όλα τα χαρακτηριστικά της σελίδας, όπως ο προσανατολισμός της σελίδας, το μέγεθος και ο τύπος χαρτιού. Αυτή η τάξη μεταβιβάζεται πάντα ως παράμετρος στο Εκτυπώσιμος διεπαφή Τυπώνω() μέθοδος. Χρήση Χαρτί για να αποκτήσετε την τοποθεσία, το μέγεθος και τον προσανατολισμό της σελίδας με δυνατότητα εικόνας, καθώς και έναν πίνακα μετασχηματισμού.

Κατηγορία PageFormat

ο ΣελίδαFormat αποτελείται από 12 μεθόδους:

Όνομα μεθόδουΠεριγραφή
διπλό getHeight ()Αυτή η μέθοδος επιστρέφει το φυσικό ύψος της σελίδας σε σημεία (1 ίντσα = 72 βαθμοί). Εάν η σελίδα σας έχει μέγεθος 8,5 επί 11 ίντσες, τότε η τιμή επιστροφής θα είναι 792 βαθμοί ή 11 ίντσες.
διπλό getImageableHeight ()Αυτή η μέθοδος επιστρέφει το ύψος της σελίδας με δυνατότητα εικόνας, το οποίο είναι το ύψος της περιοχής εκτύπωσης στην οποία μπορείτε να σχεδιάσετε. Δείτε το Σχήμα 1 για μια γραφική προβολή της περιοχής με δυνατότητα εικόνας.
διπλό getImageableWidth ()Αυτή η μέθοδος επιστρέφει το πλάτος της σελίδας με δυνατότητα εικόνας - το πλάτος της περιοχής εκτύπωσης στην οποία μπορείτε να σχεδιάσετε. Το Σχήμα 1 απεικονίζει μια γραφική άποψη της περιοχής με δυνατότητα εικόνας.
διπλό getImageableX ()Αυτή η μέθοδος επιστρέφει την προέλευση x της περιοχής με δυνατότητα εικόνας.
διπλό getImageableY ()Αυτή η μέθοδος επιστρέφει την προέλευση της περιοχής με δυνατότητα εικόνας.
διπλό getWidth ()Αυτή η μέθοδος επιστρέφει το φυσικό πλάτος της σελίδας σε σημεία. Εάν εκτυπώνετε σε χαρτί μεγέθους γραμμάτων, το πλάτος είναι 8,5 ίντσες ή 612 σημεία.
διπλό getHeight ()Αυτή η μέθοδος επιστρέφει το φυσικό ύψος της σελίδας σε σημεία. Για παράδειγμα, το χαρτί μεγέθους γραμμάτων έχει ύψος 11 ίντσες ή 792 σημεία.
διπλό [] getMatrix ()Αυτή η μέθοδος επιστρέφει έναν πίνακα μετασχηματισμού που μεταφράζει τον χώρο χρήστη στον προσανατολισμό της σελίδας που ζητήθηκε. Η τιμή επιστροφής είναι στη μορφή που απαιτείται από το Μετασχηματισμός Affine κατασκευαστής.
int getOrientation ()Αυτή η μέθοδος επιστρέφει τον προσανατολισμό της σελίδας ως ένα από τα δύο ΠΟΡΤΡΕΤΟ ή ΤΟΠΙΟ.
void setOrientation (ενδιάμεσος προσανατολισμός)Αυτή η μέθοδος καθορίζει τον προσανατολισμό της σελίδας, χρησιμοποιώντας τις σταθερές ΠΟΡΤΡΕΤΟ και ΤΟΠΙΟ.
Χαρτί getPaper ()Αυτή η μέθοδος επιστρέφει το Χαρτί αντικείμενο που σχετίζεται με τη μορφή σελίδας. Ανατρέξτε στην προηγούμενη ενότητα για περιγραφή του Χαρτί τάξη.
void setPaper (Χαρτί χαρτί)Αυτή η μέθοδος ορίζει το Χαρτί αντικείμενο που θα χρησιμοποιηθεί από το ΣελίδαFormat τάξη. ΣελίδαFormat πρέπει να έχει πρόσβαση στα φυσικά χαρακτηριστικά της σελίδας για να ολοκληρώσει αυτήν την εργασία.

Αυτό ολοκληρώνει την περιγραφή των κατηγοριών σελίδων. Η επόμενη τάξη που θα μελετήσουμε είναι η Εκτυπωτής Εργασία.

Κατηγορία PrinterJob

ο Εκτυπωτής Εργασία Η κλάση ελέγχει τη διαδικασία εκτύπωσης. Μπορεί να δημιουργήσει και να ελέγξει μια εργασία εκτύπωσης. Παρακάτω θα βρείτε έναν ορισμό της τάξης:

Όνομα μεθόδουΠεριγραφή
περίληψη ακύρωσης ακύρωσης ()Αυτή η μέθοδος ακυρώνει την τρέχουσα εργασία εκτύπωσης. Μπορείτε να επικυρώσετε την ακύρωση με το isCancel () μέθοδος.
αφηρημένο boolean isCancelled ()Αυτή η μέθοδος επιστρέφει αληθινή εάν η εργασία ακυρωθεί.
PageFormat defaultPage ()Αυτή η μέθοδος επιστρέφει την προεπιλεγμένη μορφή σελίδας για το Εκτυπωτής Εργασία.
περίληψη PageFormat defaultPage (σελίδα PageFormat)Αυτή η μέθοδος κλωνοποιεί το ΣελίδαFormat πέρασε σε παραμέτρους και τροποποιεί τον κλώνο για να δημιουργήσει την προεπιλογή ΣελίδαFormat.
περίληψη int getCopies ()Αυτή η μέθοδος επιστρέφει τον αριθμό των αντιγράφων που θα εκτυπώσει η εργασία εκτύπωσης.
abstract void setCopies (int αντίγραφα)Αυτή η μέθοδος καθορίζει τον αριθμό των αντιγράφων που θα εκτυπώσει η εργασία. Σημειώστε ότι εάν εμφανίσετε ένα παράθυρο διαλόγου εκτύπωσης, οι χρήστες μπορούν να αλλάξουν τον αριθμό των αντιγράφων (δείτε το σελίδαDialog μέθοδος).
Περίληψη String getJobName ()Αυτή η μέθοδος επιστρέφει το όνομα εργασίας.
στατικό PrinterJob getPrinterJob ()Αυτή η μέθοδος δημιουργεί και επιστρέφει ένα νέο Εκτυπωτής Εργασία.
Περίληψη String getUserName ()Αυτή η μέθοδος επιστρέφει το όνομα χρήστη που σχετίζεται με την εργασία εκτύπωσης.
περίληψη PageFormat pageDialog (PageFormat σελίδα)Αυτή η μέθοδος εμφανίζει ένα παράθυρο διαλόγου που επιτρέπει στο χρήστη να τροποποιήσει το ΣελίδαFormat. ο ΣελίδαFormat, πέρασε σε παραμέτρους, ορίζει τα πεδία του διαλόγου. Εάν ο χρήστης ακυρώσει το διάλογο, τότε το πρωτότυπο ΣελίδαFormat θα επιστραφεί. Αλλά εάν ο χρήστης αποδεχτεί τις παραμέτρους, τότε μια νέα ΣελίδαFormat θα δημιουργηθεί και θα επιστραφεί. Επειδή δεν θα εμφανίζει τις ίδιες παραμέτρους σε όλα τα λειτουργικά συστήματα, πρέπει να είστε προσεκτικοί όταν χρησιμοποιείτε το σελίδαDialog.
abstract void setPageable (έγγραφο με δυνατότητα σελίδας)Αυτή η μέθοδος ερωτά το έγγραφο για να αποκτήσει τον συνολικό αριθμό σελίδων. ο Σελίδα θα επιστρέψει επίσης το ΣελίδαFormat και το Εκτυπώσιμος αντικείμενο για κάθε σελίδα. Δείτε τον ορισμό του Σελίδα διεπαφή για περισσότερες πληροφορίες.
abstract void setPrintable (Εκτυπώσιμος ζωγράφος)Αυτή η μέθοδος ορίζει το Ζωγράφος αντικείμενο που θα καταστήσει τις σελίδες που θα εκτυπωθούν. ΕΝΑ Ζωγράφος αντικείμενο είναι ένα αντικείμενο που εφαρμόζει το Εκτυπώσιμος τάξη και του Τυπώνω() μέθοδος.
abstract void setPrintable (Εκτυπώσιμος ζωγράφος, μορφή PageFormat)Αυτή η μέθοδος ολοκληρώνει τις ίδιες εργασίες με abstract void setPrintable (Εκτυπώσιμος ζωγράφος), εκτός από το ότι παρέχετε το ΣελίδαFormat ότι η Ζωγράφος θα χρησιμοποιήσω. Όπως αναφέρεται στον ορισμό του Εκτυπώσιμος διεπαφή, το Τυπώνω() η μέθοδος περνά a ΣελίδαFormat αντικείμενο ως πρώτη παράμετρος.
αφηρημένη κενή εκτύπωση ()Αυτή η μέθοδος εκτυπώνει το έγγραφο. Στην πραγματικότητα καλεί το Τυπώνω() μέθοδος του Ζωγράφος είχε προηγουμένως εκχωρηθεί σε αυτήν την εργασία εκτύπωσης.
abstract void setJobName (String jobName)Αυτή η μέθοδος ορίζει το όνομα της εργασίας εκτύπωσης.
abstract boolean printDialog ()Αυτή η μέθοδος εμφανίζει ένα παράθυρο διαλόγου εκτύπωσης που επιτρέπει στο χρήστη να αλλάξει τις παραμέτρους εκτύπωσης. Λάβετε υπόψη ότι το αποτέλεσμα αυτής της αλληλεπίδρασης δεν θα επιστραφεί στο πρόγραμμά σας. Αντ 'αυτού, θα μεταφερθεί στο ομότιμο λειτουργικό σύστημα.
περίληψη PageFormat validatePage (σελίδα PageFormat)Αυτή η μέθοδος θα επικυρώσει το ΣελίδαFormat πέρασε σε παραμέτρους. Εάν ο εκτυπωτής δεν μπορεί να χρησιμοποιήσει το ΣελίδαFormat που παρείχατε, τότε θα επιστραφεί ένα νέο που συμμορφώνεται με τον εκτυπωτή.

Κατηγορία βιβλίων

Επτά μέθοδοι αποτελούν το Βιβλίο τάξη:

>

Όνομα μεθόδουΠεριγραφή
void append (Εκτυπώσιμος ζωγράφος, σελίδα PageFormat)Αυτή η μέθοδος προσθέτει μια σελίδα στο Βιβλίο. ο ζωγράφος και το ΣελίδαFormat για αυτήν τη σελίδα περνούν σε παραμέτρους.
void append (Εκτυπώσιμος ζωγράφος, σελίδα PageFormat, int numPages)Αυτή η μέθοδος ολοκληρώνει τις ίδιες εργασίες με void append (Εκτυπώσιμος ζωγράφος, σελίδα PageFormat), εκτός από το ότι καθορίζετε τον αριθμό των σελίδων.
int getNumberOfPages ()Αυτή η μέθοδος επιστρέφει τον αριθμό των σελίδων που βρίσκονται αυτήν τη στιγμή στο Βιβλίο.
PageFormat getPageFormat (int pageIndex)Αυτή η μέθοδος επιστρέφει το ΣελίδαFormat αντικείμενο για μια δεδομένη σελίδα.
Εκτυπώσιμη getPrintable (int pageIndex)Αυτή η μέθοδος επιστρέφει το ζωγράφος για μια δεδομένη σελίδα.
void setPage (int pageIndex, εκτυπώσιμος ζωγράφος, σελίδα PageFormat)Αυτή η μέθοδος ορίζει το ζωγράφος και το ΣελίδαFormat για μια δεδομένη σελίδα που υπάρχει ήδη στο βιβλίο.

Η συνταγή εκτύπωσης

Η συνταγή για εκτύπωση είναι πολύ απλή. Πρώτα, δημιουργήστε ένα Εκτυπωτής Εργασία αντικείμενο:

PrinterJob printJob = PrinterJob.getPrinterJob ();

Στη συνέχεια, χρησιμοποιώντας το setPrintable () μέθοδος του Εκτυπωτής Εργασία, εκχωρήστε το Ζωγράφος αντικείμενο στο Εκτυπωτής Εργασία. Σημειώστε ότι a Ζωγράφος αντικείμενο είναι αυτό που εφαρμόζει το Εκτυπώσιμος διεπαφή.

printJob.setPrintable (Ζωγράφος);

Ή θα μπορούσατε να ορίσετε το ΣελίδαFormat μαζί με Ζωγράφος :

printJob.setPrintable (Ζωγράφος, σελίδαFormat);

Τέλος, το Ζωγράφος αντικείμενο πρέπει να εφαρμόσει το Τυπώνω() μέθοδος:

δημόσια int εκτύπωση (Graphics g, PageFormat pageFormat, int page)

Εδώ η πρώτη παράμετρος είναι η λαβή γραφικών που θα χρησιμοποιήσετε για να αποδώσετε τη σελίδα, το σελίδαFormat είναι η μορφή που θα χρησιμοποιηθεί για την τρέχουσα σελίδα και η τελευταία παράμετρος είναι ο αριθμός σελίδας που πρέπει να αποδίδεται.

Αυτό είναι το μόνο που υπάρχει - για απλή εκτύπωση, δηλαδή.

Εισαγωγή στο πλαίσιο

Το πλαίσιο εκτύπωσης που θα δημιουργήσουμε σε αυτήν τη σειρά θα είναι εντελώς ανεξάρτητο από το Java εκτύπωσης API. Θα επιτρέψει μεγαλύτερη ευελιξία στην παραγωγή διαφορετικών εξόδων.Η δομή του θα σας επιτρέψει να δημιουργήσετε έγγραφα, σελίδες και να εκτυπώσετε αντικείμενα. Θα μπορείτε να προσθέσετε αντικείμενα εκτύπωσης σε μια σελίδα ενώ προσθέτετε σελίδες σε ένα έγγραφο. Χρησιμοποιώντας αυτήν τη δομή, θα μπορείτε να εφαρμόσετε εύκολα δυνατότητες εξαγωγής σε αρχεία PDF ή HTML ή να εκτυπώσετε απευθείας στον εκτυπωτή χρησιμοποιώντας το API εκτύπωσης. Αλλά ο κύριος στόχος του πλαισίου είναι η απλοποίηση της δημιουργίας έντυπων εγγράφων. Όταν εκτυπώνετε χρησιμοποιώντας το API εκτύπωσης, καταλήγετε μόνο με ένα γραφικό καμβά για να το σχεδιάσετε. Αποτυγχάνει να αντιμετωπίσει τις έννοιες των παραγράφων, των εικόνων, των σχεδίων, των γραφικών, των πινάκων ή των κεφαλίδων και των υποσέλιδων. Επειδή πρέπει να υπολογίσετε την προέλευση (x, y), το πλάτος και το ύψος της εκτυπώσιμης περιοχής, ο καθορισμός περιθωρίων είναι μια δουλειά. Το πλαίσιο εκτύπωσης θα αντιμετωπίσει όλες αυτές τις αδυναμίες.

συμπέρασμα

Καλύψαμε πολύ έδαφος σε αυτό το πρώτο μέρος. Εξετάσαμε τις μονάδες μέτρησης, τη δομή της σελίδας, τα δύο μοντέλα απόδοσης (Σελίδα και Εκτυπώσιμος), και Βιβλίακαι ολοκληρώσαμε με μια λεπτομερή εξήγηση του API εκτύπωσης. Τον επόμενο μήνα, θα επικεντρωθούμε κυρίως στον κώδικα, καθώς θα εφαρμόσουμε τα πάντα στην πράξη. Θα εξετάσουμε επίσης τα ζητήματα που προκύπτουν κατά την εκτύπωση σε πολλές πλατφόρμες. Κοιτώντας μπροστά στο Μέρος 3, θα εξηγήσω λεπτομερώς το σχεδιασμό και την εφαρμογή του πλαισίου.

Ο Jean-Pierre Dube είναι ανεξάρτητος σύμβουλος της Java. Ίδρυσε την Infocom το 1988. Έκτοτε, η Infocom έχει αναπτύξει προσαρμοσμένες εφαρμογές σε τομείς όπως η κατασκευή, η διαχείριση εγγράφων και η διαχείριση γραμμών ηλεκτρικής ενέργειας μεγάλης κλίμακας. Ο Jean-Pierre έχει εκτεταμένη εμπειρία προγραμματισμού σε C, Visual Basic και Java. Η τελευταία είναι τώρα η κύρια γλώσσα για όλα τα νέα έργα. Αφιερώνει αυτή τη σειρά στη μητέρα του, η οποία πέθανε ενώ έγραφε αυτό το άρθρο.

Μάθετε περισσότερα σχετικά με αυτό το θέμα

  • "Εκτύπωση στην Ιάβα", Jean-Pierre Dubé (JavaWorld)
  • Μέρος 1: Εξοικειωθείτε με το μοντέλο εκτύπωσης Java (20 Οκτωβρίου 2000)
  • Μέρος 2: Εκτυπώστε την πρώτη σας σελίδα και δώστε σύνθετα έγγραφα (1 Δεκεμβρίου 2000)
  • Μέρος 3: Ο Jean-Pierre Dubé παρουσιάζει το πλαίσιο εκτύπωσης που λειτουργεί πάνω από το Java Print API (5 Ιανουαρίου 2001)
  • Μέρος 4: Κωδικοποιήστε το πλαίσιο εκτύπωσης
  • (2 Φεβρουαρίου 2001)
  • Μέρος 5: Ανακαλύψτε τις τάξεις υποστήριξης του πλαισίου εκτύπωσης
  • (2 Μαρτίου 2001)
  • Θα βρείτε τόνους βιβλίων που καλύπτουν το Java AWT, αλλά κανένα δεν θα καλύψει αυτό το θέμα έως την έκταση αυτού του βιβλίου. Εάν γράφετε GUI, πρέπει να έχετε αυτό το βιβλίο δίπλα στον υπολογιστή σας: Graphic Java 2, Mastering The JFCAWT, τόμος 1, David M. Geary (Prentice Hall, 1998)

    //www.amazon.com/exec/obidos/ASIN/0130796662/javaworld

  • Αυτό το βιβλίο ήταν χρήσιμο όταν κυκλοφόρησε το Java 1.1 και ήταν το πρώτο που μίλησε για εκτύπωση στην Java: Μετεγκατάσταση από Java 1.0 σε Java 1.1, Daniel I. Joshi και Pavel A. Vorobiev (Ventana Communications Group, 1997)

    //www.amazon.com/exec/obidos/ASIN/1566046866/javaworld

  • Ίσως το καλύτερο βιβλίο για το Java 2D, αυτό το βιβλίο καλύπτει όλες τις πτυχές του 2D API και παρέχει επίσης ένα Γραφικά πλαίσιο για προηγμένες συνθέσεις 2D: Γραφικά Java 2D API, Vincent J. Hardy (Prentice Hall, 1999)

    //www.amazon.com/exec/obidos/ASIN/0130142662/javaworld

  • Μια εξαιρετική εισαγωγή στο Java 2D API "Ξεκινώντας με το Java 2D", Bill Day (JavaWorld, Ιούλιος 1998)

    //www.javaworld.com/javaworld/jw-07-1998/jw-07-media.html

Αυτή η ιστορία, "Εκτύπωση σε Java, Μέρος 1" δημοσιεύθηκε αρχικά από το JavaWorld.