mobileprint / android-print-sdk

Android library that simplifies printing with custom layouts, graphical preview, and more.
215 stars 66 forks source link

Android print dialog default options #6

Open bhagat19 opened 7 years ago

bhagat19 commented 7 years ago

Hello, I have been trying to preset android print dialog options to user defined settings. But no matter what options i provide to setPrintDialogOptions, I get only ISO_A4 page size as default in dialog.

Following is the code i have been using:

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {

        PDFAsset pdfAsset = new PDFAsset(Uri.fromFile(mFile), false);

        int pageTypeValue = Integer.parseInt(mSettingsPreferences.getString(Utility.SETTINGS_PDF_SIZE_TYPE, "4"));     //User defined page size

        PrintItem printItem = new PDFPrintItem(PrintItem.ScaleType.CENTER, pdfAsset);

        PrintJobData printJobData = new PrintJobData(this, printItem);

        PrintAttributes.Builder builder = new PrintAttributes.Builder();
        builder.setMediaSize(getSelectedMediaSize(pageTypeValue));

         printJobData.setPrintDialogOptions(builder.build()); // No matter what i supply here

        printJobData.setJobName("Print");

        PrintUtil.setPrintJobData(printJobData);

        PrintUtil.print(FinalPrescriptionActivity.this);

}

where getSelectedMediaSize(int value) returns MediaSize:

public PrintAttributes.MediaSize getSelectedMediaSize(int pageType) {

    switch (pageType) {
        case (0):
            return PrintAttributes.MediaSize.ISO_A0;
        case 1:
            return PrintAttributes.MediaSize.ISO_A1;
        case 2:
            return PrintAttributes.MediaSize.ISO_A2;
        case 3:
            return PrintAttributes.MediaSize.ISO_A3;
        case 4:
            return PrintAttributes.MediaSize.ISO_A4;
        case 5:
            return PrintAttributes.MediaSize.ISO_A5;
        case 6:
            return PrintAttributes.MediaSize.ISO_A6;
        case 7:
            return PrintAttributes.MediaSize.ISO_A7;
        case 8:
            return PrintAttributes.MediaSize.ISO_A8;
        case 9:
            return PrintAttributes.MediaSize.NA_LETTER;
        case 10:
            return PrintAttributes.MediaSize.NA_INDEX_3X5;

        }
    return  null;
    }

Can someone please help me to set android print dialog options?

dennischen0 commented 7 years ago

Take a look here: https://code.google.com/p/android/issues/detail?id=180405

There was a defect in android where you could not programmatically set the default paper size. They seem to have only just fixed it in Android N.