Search in sources :

Example 21 with MediaSize

use of javax.print.attribute.standard.MediaSize in project jdk8u_jdk by JetBrains.

the class PrinterJob method getPageFormat.

/**
     * Calculates a <code>PageFormat</code> with values consistent with those
     * supported by the current <code>PrintService</code> for this job
     * (ie the value returned by <code>getPrintService()</code>) and media,
     * printable area and orientation contained in <code>attributes</code>.
     * <p>
     * Calling this method does not update the job.
     * It is useful for clients that have a set of attributes obtained from
     * <code>printDialog(PrintRequestAttributeSet attributes)</code>
     * and need a PageFormat to print a Pageable object.
     * @param attributes a set of printing attributes, for example obtained
     * from calling printDialog. If <code>attributes</code> is null a default
     * PageFormat is returned.
     * @return a <code>PageFormat</code> whose settings conform with
     * those of the current service and the specified attributes.
     * @since 1.6
     */
public PageFormat getPageFormat(PrintRequestAttributeSet attributes) {
    PrintService service = getPrintService();
    PageFormat pf = defaultPage();
    if (service == null || attributes == null) {
        return pf;
    }
    Media media = (Media) attributes.get(Media.class);
    MediaPrintableArea mpa = (MediaPrintableArea) attributes.get(MediaPrintableArea.class);
    OrientationRequested orientReq = (OrientationRequested) attributes.get(OrientationRequested.class);
    if (media == null && mpa == null && orientReq == null) {
        return pf;
    }
    Paper paper = pf.getPaper();
    /* If there's a media but no media printable area, we can try
         * to retrieve the default value for mpa and use that.
         */
    if (mpa == null && media != null && service.isAttributeCategorySupported(MediaPrintableArea.class)) {
        Object mpaVals = service.getSupportedAttributeValues(MediaPrintableArea.class, null, attributes);
        if (mpaVals instanceof MediaPrintableArea[] && ((MediaPrintableArea[]) mpaVals).length > 0) {
            mpa = ((MediaPrintableArea[]) mpaVals)[0];
        }
    }
    if (media != null && service.isAttributeValueSupported(media, null, attributes)) {
        if (media instanceof MediaSizeName) {
            MediaSizeName msn = (MediaSizeName) media;
            MediaSize msz = MediaSize.getMediaSizeForName(msn);
            if (msz != null) {
                double inch = 72.0;
                double paperWid = msz.getX(MediaSize.INCH) * inch;
                double paperHgt = msz.getY(MediaSize.INCH) * inch;
                paper.setSize(paperWid, paperHgt);
                if (mpa == null) {
                    paper.setImageableArea(inch, inch, paperWid - 2 * inch, paperHgt - 2 * inch);
                }
            }
        }
    }
    if (mpa != null && service.isAttributeValueSupported(mpa, null, attributes)) {
        float[] printableArea = mpa.getPrintableArea(MediaPrintableArea.INCH);
        for (int i = 0; i < printableArea.length; i++) {
            printableArea[i] = printableArea[i] * 72.0f;
        }
        paper.setImageableArea(printableArea[0], printableArea[1], printableArea[2], printableArea[3]);
    }
    if (orientReq != null && service.isAttributeValueSupported(orientReq, null, attributes)) {
        int orient;
        if (orientReq.equals(OrientationRequested.REVERSE_LANDSCAPE)) {
            orient = PageFormat.REVERSE_LANDSCAPE;
        } else if (orientReq.equals(OrientationRequested.LANDSCAPE)) {
            orient = PageFormat.LANDSCAPE;
        } else {
            orient = PageFormat.PORTRAIT;
        }
        pf.setOrientation(orient);
    }
    pf.setPaper(paper);
    pf = validatePage(pf);
    return pf;
}
Also used : MediaSize(javax.print.attribute.standard.MediaSize) MediaSizeName(javax.print.attribute.standard.MediaSizeName) Media(javax.print.attribute.standard.Media) OrientationRequested(javax.print.attribute.standard.OrientationRequested) PrintService(javax.print.PrintService) MediaPrintableArea(javax.print.attribute.standard.MediaPrintableArea)

Aggregations

MediaSize (javax.print.attribute.standard.MediaSize)21 MediaSizeName (javax.print.attribute.standard.MediaSizeName)16 Media (javax.print.attribute.standard.Media)10 MediaPrintableArea (javax.print.attribute.standard.MediaPrintableArea)10 OrientationRequested (javax.print.attribute.standard.OrientationRequested)8 PageFormat (java.awt.print.PageFormat)6 Paper (java.awt.print.Paper)6 PrintService (javax.print.PrintService)5 JobName (javax.print.attribute.standard.JobName)4 Attribute (javax.print.attribute.Attribute)3 Fidelity (javax.print.attribute.standard.Fidelity)3 RequestingUserName (javax.print.attribute.standard.RequestingUserName)3 SheetCollate (javax.print.attribute.standard.SheetCollate)3 File (java.io.File)2 ArrayList (java.util.ArrayList)2 StreamPrintService (javax.print.StreamPrintService)2 PrintRequestAttributeSet (javax.print.attribute.PrintRequestAttributeSet)2 PrintServiceAttribute (javax.print.attribute.PrintServiceAttribute)2 Chromaticity (javax.print.attribute.standard.Chromaticity)2 CopiesSupported (javax.print.attribute.standard.CopiesSupported)2