526 lines
23 KiB
Java
526 lines
23 KiB
Java
package androidx.print;
|
|
|
|
import android.annotation.SuppressLint;
|
|
import android.content.Context;
|
|
import android.graphics.Bitmap;
|
|
import android.graphics.BitmapFactory;
|
|
import android.graphics.Canvas;
|
|
import android.graphics.ColorMatrix;
|
|
import android.graphics.ColorMatrixColorFilter;
|
|
import android.graphics.Matrix;
|
|
import android.graphics.Paint;
|
|
import android.graphics.RectF;
|
|
import android.graphics.pdf.PdfDocument;
|
|
import android.net.Uri;
|
|
import android.os.AsyncTask;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.os.CancellationSignal;
|
|
import android.os.ParcelFileDescriptor;
|
|
import android.print.PageRange;
|
|
import android.print.PrintAttributes;
|
|
import android.print.PrintDocumentAdapter;
|
|
import android.print.PrintDocumentInfo;
|
|
import android.print.PrintManager;
|
|
import android.print.pdf.PrintedPdfDocument;
|
|
import android.util.Log;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.annotation.RequiresApi;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.FileOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
public final class PrintHelper {
|
|
@SuppressLint({"InlinedApi"})
|
|
public static final int COLOR_MODE_COLOR = 2;
|
|
@SuppressLint({"InlinedApi"})
|
|
public static final int COLOR_MODE_MONOCHROME = 1;
|
|
public static final boolean IS_MIN_MARGINS_HANDLING_CORRECT;
|
|
private static final String LOG_TAG = "PrintHelper";
|
|
private static final int MAX_PRINT_SIZE = 3500;
|
|
public static final int ORIENTATION_LANDSCAPE = 1;
|
|
public static final int ORIENTATION_PORTRAIT = 2;
|
|
public static final boolean PRINT_ACTIVITY_RESPECTS_ORIENTATION;
|
|
public static final int SCALE_MODE_FILL = 2;
|
|
public static final int SCALE_MODE_FIT = 1;
|
|
public int mColorMode = 2;
|
|
public final Context mContext;
|
|
public BitmapFactory.Options mDecodeOptions = null;
|
|
public final Object mLock = new Object();
|
|
public int mOrientation = 1;
|
|
public int mScaleMode = 2;
|
|
|
|
/* renamed from: androidx.print.PrintHelper$1 reason: invalid class name */
|
|
public class AnonymousClass1 extends AsyncTask<Void, Void, Throwable> {
|
|
public final /* synthetic */ PrintAttributes val$attributes;
|
|
public final /* synthetic */ Bitmap val$bitmap;
|
|
public final /* synthetic */ CancellationSignal val$cancellationSignal;
|
|
public final /* synthetic */ ParcelFileDescriptor val$fileDescriptor;
|
|
public final /* synthetic */ int val$fittingMode;
|
|
public final /* synthetic */ PrintAttributes val$pdfAttributes;
|
|
public final /* synthetic */ PrintDocumentAdapter.WriteResultCallback val$writeResultCallback;
|
|
|
|
public AnonymousClass1(CancellationSignal cancellationSignal, PrintAttributes printAttributes, Bitmap bitmap, PrintAttributes printAttributes2, int i, ParcelFileDescriptor parcelFileDescriptor, PrintDocumentAdapter.WriteResultCallback writeResultCallback) {
|
|
this.val$cancellationSignal = cancellationSignal;
|
|
this.val$pdfAttributes = printAttributes;
|
|
this.val$bitmap = bitmap;
|
|
this.val$attributes = printAttributes2;
|
|
this.val$fittingMode = i;
|
|
this.val$fileDescriptor = parcelFileDescriptor;
|
|
this.val$writeResultCallback = writeResultCallback;
|
|
}
|
|
|
|
public Throwable doInBackground(Void... voidArr) {
|
|
RectF rectF;
|
|
try {
|
|
if (this.val$cancellationSignal.isCanceled()) {
|
|
return null;
|
|
}
|
|
PrintedPdfDocument printedPdfDocument = new PrintedPdfDocument(PrintHelper.this.mContext, this.val$pdfAttributes);
|
|
Bitmap convertBitmapForColorMode = PrintHelper.convertBitmapForColorMode(this.val$bitmap, this.val$pdfAttributes.getColorMode());
|
|
if (this.val$cancellationSignal.isCanceled()) {
|
|
return null;
|
|
}
|
|
try {
|
|
PdfDocument.Page startPage = printedPdfDocument.startPage(1);
|
|
boolean z2 = PrintHelper.IS_MIN_MARGINS_HANDLING_CORRECT;
|
|
if (z2) {
|
|
rectF = new RectF(startPage.getInfo().getContentRect());
|
|
} else {
|
|
PrintedPdfDocument printedPdfDocument2 = new PrintedPdfDocument(PrintHelper.this.mContext, this.val$attributes);
|
|
PdfDocument.Page startPage2 = printedPdfDocument2.startPage(1);
|
|
RectF rectF2 = new RectF(startPage2.getInfo().getContentRect());
|
|
printedPdfDocument2.finishPage(startPage2);
|
|
printedPdfDocument2.close();
|
|
rectF = rectF2;
|
|
}
|
|
Matrix matrix = PrintHelper.getMatrix(convertBitmapForColorMode.getWidth(), convertBitmapForColorMode.getHeight(), rectF, this.val$fittingMode);
|
|
if (!z2) {
|
|
matrix.postTranslate(rectF.left, rectF.top);
|
|
startPage.getCanvas().clipRect(rectF);
|
|
}
|
|
startPage.getCanvas().drawBitmap(convertBitmapForColorMode, matrix, null);
|
|
printedPdfDocument.finishPage(startPage);
|
|
if (this.val$cancellationSignal.isCanceled()) {
|
|
return null;
|
|
}
|
|
printedPdfDocument.writeTo(new FileOutputStream(this.val$fileDescriptor.getFileDescriptor()));
|
|
printedPdfDocument.close();
|
|
ParcelFileDescriptor parcelFileDescriptor = this.val$fileDescriptor;
|
|
if (parcelFileDescriptor != null) {
|
|
try {
|
|
parcelFileDescriptor.close();
|
|
} catch (IOException unused) {
|
|
}
|
|
}
|
|
if (convertBitmapForColorMode != this.val$bitmap) {
|
|
convertBitmapForColorMode.recycle();
|
|
}
|
|
return null;
|
|
} finally {
|
|
printedPdfDocument.close();
|
|
ParcelFileDescriptor parcelFileDescriptor2 = this.val$fileDescriptor;
|
|
if (parcelFileDescriptor2 != null) {
|
|
try {
|
|
parcelFileDescriptor2.close();
|
|
} catch (IOException unused2) {
|
|
}
|
|
}
|
|
if (convertBitmapForColorMode != this.val$bitmap) {
|
|
convertBitmapForColorMode.recycle();
|
|
}
|
|
}
|
|
} catch (Throwable th) {
|
|
return th;
|
|
}
|
|
}
|
|
|
|
public void onPostExecute(Throwable th) {
|
|
if (this.val$cancellationSignal.isCanceled()) {
|
|
this.val$writeResultCallback.onWriteCancelled();
|
|
} else if (th == null) {
|
|
this.val$writeResultCallback.onWriteFinished(new PageRange[]{PageRange.ALL_PAGES});
|
|
} else {
|
|
Log.e("PrintHelper", "Error writing printed content", th);
|
|
this.val$writeResultCallback.onWriteFailed(null);
|
|
}
|
|
}
|
|
}
|
|
|
|
public interface OnPrintFinishCallback {
|
|
void onFinish();
|
|
}
|
|
|
|
@RequiresApi(19)
|
|
public class PrintBitmapAdapter extends PrintDocumentAdapter {
|
|
private PrintAttributes mAttributes;
|
|
private final Bitmap mBitmap;
|
|
private final OnPrintFinishCallback mCallback;
|
|
private final int mFittingMode;
|
|
private final String mJobName;
|
|
|
|
public PrintBitmapAdapter(String str, int i, Bitmap bitmap, OnPrintFinishCallback onPrintFinishCallback) {
|
|
this.mJobName = str;
|
|
this.mFittingMode = i;
|
|
this.mBitmap = bitmap;
|
|
this.mCallback = onPrintFinishCallback;
|
|
}
|
|
|
|
@Override // android.print.PrintDocumentAdapter
|
|
public void onFinish() {
|
|
OnPrintFinishCallback onPrintFinishCallback = this.mCallback;
|
|
if (onPrintFinishCallback != null) {
|
|
onPrintFinishCallback.onFinish();
|
|
}
|
|
}
|
|
|
|
@Override // android.print.PrintDocumentAdapter
|
|
public void onLayout(PrintAttributes printAttributes, PrintAttributes printAttributes2, CancellationSignal cancellationSignal, PrintDocumentAdapter.LayoutResultCallback layoutResultCallback, Bundle bundle) {
|
|
this.mAttributes = printAttributes2;
|
|
layoutResultCallback.onLayoutFinished(new PrintDocumentInfo.Builder(this.mJobName).setContentType(1).setPageCount(1).build(), !printAttributes2.equals(printAttributes));
|
|
}
|
|
|
|
@Override // android.print.PrintDocumentAdapter
|
|
public void onWrite(PageRange[] pageRangeArr, ParcelFileDescriptor parcelFileDescriptor, CancellationSignal cancellationSignal, PrintDocumentAdapter.WriteResultCallback writeResultCallback) {
|
|
PrintHelper.this.writeBitmap(this.mAttributes, this.mFittingMode, this.mBitmap, parcelFileDescriptor, cancellationSignal, writeResultCallback);
|
|
}
|
|
}
|
|
|
|
@RequiresApi(19)
|
|
public class PrintUriAdapter extends PrintDocumentAdapter {
|
|
public PrintAttributes mAttributes;
|
|
public Bitmap mBitmap = null;
|
|
public final OnPrintFinishCallback mCallback;
|
|
public final int mFittingMode;
|
|
public final Uri mImageFile;
|
|
public final String mJobName;
|
|
public AsyncTask<Uri, Boolean, Bitmap> mLoadBitmap;
|
|
|
|
/* renamed from: androidx.print.PrintHelper$PrintUriAdapter$1 reason: invalid class name */
|
|
public class AnonymousClass1 extends AsyncTask<Uri, Boolean, Bitmap> {
|
|
public final /* synthetic */ CancellationSignal val$cancellationSignal;
|
|
public final /* synthetic */ PrintDocumentAdapter.LayoutResultCallback val$layoutResultCallback;
|
|
public final /* synthetic */ PrintAttributes val$newPrintAttributes;
|
|
public final /* synthetic */ PrintAttributes val$oldPrintAttributes;
|
|
|
|
/* renamed from: androidx.print.PrintHelper$PrintUriAdapter$1$1 reason: invalid class name */
|
|
public class AnonymousClass1 implements CancellationSignal.OnCancelListener {
|
|
public AnonymousClass1() {
|
|
}
|
|
|
|
@Override // android.os.CancellationSignal.OnCancelListener
|
|
public void onCancel() {
|
|
PrintUriAdapter.this.cancelLoad();
|
|
AnonymousClass1.this.cancel(false);
|
|
}
|
|
}
|
|
|
|
public AnonymousClass1(CancellationSignal cancellationSignal, PrintAttributes printAttributes, PrintAttributes printAttributes2, PrintDocumentAdapter.LayoutResultCallback layoutResultCallback) {
|
|
this.val$cancellationSignal = cancellationSignal;
|
|
this.val$newPrintAttributes = printAttributes;
|
|
this.val$oldPrintAttributes = printAttributes2;
|
|
this.val$layoutResultCallback = layoutResultCallback;
|
|
}
|
|
|
|
public Bitmap doInBackground(Uri... uriArr) {
|
|
try {
|
|
PrintUriAdapter printUriAdapter = PrintUriAdapter.this;
|
|
return PrintHelper.this.loadConstrainedBitmap(printUriAdapter.mImageFile);
|
|
} catch (FileNotFoundException unused) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public void onCancelled(Bitmap bitmap) {
|
|
this.val$layoutResultCallback.onLayoutCancelled();
|
|
PrintUriAdapter.this.mLoadBitmap = null;
|
|
}
|
|
|
|
public void onPostExecute(Bitmap bitmap) {
|
|
PrintAttributes.MediaSize mediaSize;
|
|
super.onPostExecute((AnonymousClass1) bitmap);
|
|
if (bitmap != null && (!PrintHelper.PRINT_ACTIVITY_RESPECTS_ORIENTATION || PrintHelper.this.mOrientation == 0)) {
|
|
synchronized (this) {
|
|
mediaSize = PrintUriAdapter.this.mAttributes.getMediaSize();
|
|
}
|
|
if (!(mediaSize == null || mediaSize.isPortrait() == PrintHelper.isPortrait(bitmap))) {
|
|
Matrix matrix = new Matrix();
|
|
matrix.postRotate(90.0f);
|
|
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
|
|
}
|
|
}
|
|
PrintUriAdapter.this.mBitmap = bitmap;
|
|
if (bitmap != null) {
|
|
this.val$layoutResultCallback.onLayoutFinished(new PrintDocumentInfo.Builder(PrintUriAdapter.this.mJobName).setContentType(1).setPageCount(1).build(), true ^ this.val$newPrintAttributes.equals(this.val$oldPrintAttributes));
|
|
} else {
|
|
this.val$layoutResultCallback.onLayoutFailed(null);
|
|
}
|
|
PrintUriAdapter.this.mLoadBitmap = null;
|
|
}
|
|
|
|
@Override // android.os.AsyncTask
|
|
public void onPreExecute() {
|
|
this.val$cancellationSignal.setOnCancelListener(new AnonymousClass1());
|
|
}
|
|
}
|
|
|
|
public PrintUriAdapter(String str, Uri uri, OnPrintFinishCallback onPrintFinishCallback, int i) {
|
|
this.mJobName = str;
|
|
this.mImageFile = uri;
|
|
this.mCallback = onPrintFinishCallback;
|
|
this.mFittingMode = i;
|
|
}
|
|
|
|
public void cancelLoad() {
|
|
synchronized (PrintHelper.this.mLock) {
|
|
BitmapFactory.Options options = PrintHelper.this.mDecodeOptions;
|
|
if (options != null) {
|
|
if (Build.VERSION.SDK_INT < 24) {
|
|
options.requestCancelDecode();
|
|
}
|
|
PrintHelper.this.mDecodeOptions = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override // android.print.PrintDocumentAdapter
|
|
public void onFinish() {
|
|
super.onFinish();
|
|
cancelLoad();
|
|
AsyncTask<Uri, Boolean, Bitmap> asyncTask = this.mLoadBitmap;
|
|
if (asyncTask != null) {
|
|
asyncTask.cancel(true);
|
|
}
|
|
OnPrintFinishCallback onPrintFinishCallback = this.mCallback;
|
|
if (onPrintFinishCallback != null) {
|
|
onPrintFinishCallback.onFinish();
|
|
}
|
|
Bitmap bitmap = this.mBitmap;
|
|
if (bitmap != null) {
|
|
bitmap.recycle();
|
|
this.mBitmap = null;
|
|
}
|
|
}
|
|
|
|
@Override // android.print.PrintDocumentAdapter
|
|
public void onLayout(PrintAttributes printAttributes, PrintAttributes printAttributes2, CancellationSignal cancellationSignal, PrintDocumentAdapter.LayoutResultCallback layoutResultCallback, Bundle bundle) {
|
|
synchronized (this) {
|
|
this.mAttributes = printAttributes2;
|
|
}
|
|
if (cancellationSignal.isCanceled()) {
|
|
layoutResultCallback.onLayoutCancelled();
|
|
} else if (this.mBitmap != null) {
|
|
layoutResultCallback.onLayoutFinished(new PrintDocumentInfo.Builder(this.mJobName).setContentType(1).setPageCount(1).build(), !printAttributes2.equals(printAttributes));
|
|
} else {
|
|
this.mLoadBitmap = new AnonymousClass1(cancellationSignal, printAttributes2, printAttributes, layoutResultCallback).execute(new Uri[0]);
|
|
}
|
|
}
|
|
|
|
@Override // android.print.PrintDocumentAdapter
|
|
public void onWrite(PageRange[] pageRangeArr, ParcelFileDescriptor parcelFileDescriptor, CancellationSignal cancellationSignal, PrintDocumentAdapter.WriteResultCallback writeResultCallback) {
|
|
PrintHelper.this.writeBitmap(this.mAttributes, this.mFittingMode, this.mBitmap, parcelFileDescriptor, cancellationSignal, writeResultCallback);
|
|
}
|
|
}
|
|
|
|
static {
|
|
int i = Build.VERSION.SDK_INT;
|
|
boolean z2 = false;
|
|
PRINT_ACTIVITY_RESPECTS_ORIENTATION = i > 23;
|
|
if (i != 23) {
|
|
z2 = true;
|
|
}
|
|
IS_MIN_MARGINS_HANDLING_CORRECT = z2;
|
|
}
|
|
|
|
public PrintHelper(@NonNull Context context) {
|
|
this.mContext = context;
|
|
}
|
|
|
|
public static Bitmap convertBitmapForColorMode(Bitmap bitmap, int i) {
|
|
if (i != 1) {
|
|
return bitmap;
|
|
}
|
|
Bitmap createBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
|
|
Canvas canvas = new Canvas(createBitmap);
|
|
Paint paint = new Paint();
|
|
ColorMatrix colorMatrix = new ColorMatrix();
|
|
colorMatrix.setSaturation(0.0f);
|
|
paint.setColorFilter(new ColorMatrixColorFilter(colorMatrix));
|
|
canvas.drawBitmap(bitmap, 0.0f, 0.0f, paint);
|
|
canvas.setBitmap(null);
|
|
return createBitmap;
|
|
}
|
|
|
|
@RequiresApi(19)
|
|
private static PrintAttributes.Builder copyAttributes(PrintAttributes printAttributes) {
|
|
PrintAttributes.Builder minMargins = new PrintAttributes.Builder().setMediaSize(printAttributes.getMediaSize()).setResolution(printAttributes.getResolution()).setMinMargins(printAttributes.getMinMargins());
|
|
if (printAttributes.getColorMode() != 0) {
|
|
minMargins.setColorMode(printAttributes.getColorMode());
|
|
}
|
|
if (Build.VERSION.SDK_INT >= 23 && printAttributes.getDuplexMode() != 0) {
|
|
minMargins.setDuplexMode(printAttributes.getDuplexMode());
|
|
}
|
|
return minMargins;
|
|
}
|
|
|
|
public static Matrix getMatrix(int i, int i2, RectF rectF, int i3) {
|
|
Matrix matrix = new Matrix();
|
|
float f = (float) i;
|
|
float width = rectF.width() / f;
|
|
float max = i3 == 2 ? Math.max(width, rectF.height() / ((float) i2)) : Math.min(width, rectF.height() / ((float) i2));
|
|
matrix.postScale(max, max);
|
|
matrix.postTranslate((rectF.width() - (f * max)) / 2.0f, (rectF.height() - (((float) i2) * max)) / 2.0f);
|
|
return matrix;
|
|
}
|
|
|
|
public static boolean isPortrait(Bitmap bitmap) {
|
|
return bitmap.getWidth() <= bitmap.getHeight();
|
|
}
|
|
|
|
/* JADX WARNING: Removed duplicated region for block: B:19:0x0028 A[SYNTHETIC, Splitter:B:19:0x0028] */
|
|
private Bitmap loadBitmap(Uri uri, BitmapFactory.Options options) throws FileNotFoundException {
|
|
Context context;
|
|
Throwable th;
|
|
if (uri == null || (context = this.mContext) == null) {
|
|
throw new IllegalArgumentException("bad argument to loadBitmap");
|
|
}
|
|
InputStream inputStream = null;
|
|
try {
|
|
InputStream openInputStream = context.getContentResolver().openInputStream(uri);
|
|
try {
|
|
Bitmap decodeStream = BitmapFactory.decodeStream(openInputStream, null, options);
|
|
if (openInputStream != null) {
|
|
try {
|
|
openInputStream.close();
|
|
} catch (IOException e) {
|
|
Log.w("PrintHelper", "close fail ", e);
|
|
}
|
|
}
|
|
return decodeStream;
|
|
} catch (Throwable th2) {
|
|
th = th2;
|
|
inputStream = openInputStream;
|
|
if (inputStream != null) {
|
|
try {
|
|
inputStream.close();
|
|
} catch (IOException e2) {
|
|
Log.w("PrintHelper", "close fail ", e2);
|
|
}
|
|
}
|
|
throw th;
|
|
}
|
|
} catch (Throwable th3) {
|
|
th = th3;
|
|
if (inputStream != null) {
|
|
}
|
|
throw th;
|
|
}
|
|
}
|
|
|
|
public static boolean systemSupportsPrint() {
|
|
return true;
|
|
}
|
|
|
|
public int getColorMode() {
|
|
return this.mColorMode;
|
|
}
|
|
|
|
public int getOrientation() {
|
|
int i = this.mOrientation;
|
|
if (i == 0) {
|
|
return 1;
|
|
}
|
|
return i;
|
|
}
|
|
|
|
public int getScaleMode() {
|
|
return this.mScaleMode;
|
|
}
|
|
|
|
public Bitmap loadConstrainedBitmap(Uri uri) throws FileNotFoundException {
|
|
BitmapFactory.Options options;
|
|
if (uri == null || this.mContext == null) {
|
|
throw new IllegalArgumentException("bad argument to getScaledBitmap");
|
|
}
|
|
BitmapFactory.Options options2 = new BitmapFactory.Options();
|
|
options2.inJustDecodeBounds = true;
|
|
loadBitmap(uri, options2);
|
|
int i = options2.outWidth;
|
|
int i2 = options2.outHeight;
|
|
if (i > 0 && i2 > 0) {
|
|
int max = Math.max(i, i2);
|
|
int i3 = 1;
|
|
while (max > 3500) {
|
|
max >>>= 1;
|
|
i3 <<= 1;
|
|
}
|
|
if (i3 > 0 && Math.min(i, i2) / i3 > 0) {
|
|
synchronized (this.mLock) {
|
|
options = new BitmapFactory.Options();
|
|
this.mDecodeOptions = options;
|
|
options.inMutable = true;
|
|
options.inSampleSize = i3;
|
|
}
|
|
try {
|
|
Bitmap loadBitmap = loadBitmap(uri, options);
|
|
synchronized (this.mLock) {
|
|
this.mDecodeOptions = null;
|
|
}
|
|
return loadBitmap;
|
|
} catch (Throwable th) {
|
|
synchronized (this.mLock) {
|
|
this.mDecodeOptions = null;
|
|
throw th;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public void printBitmap(@NonNull String str, @NonNull Bitmap bitmap) {
|
|
printBitmap(str, bitmap, (OnPrintFinishCallback) null);
|
|
}
|
|
|
|
public void printBitmap(@NonNull String str, @NonNull Bitmap bitmap, @Nullable OnPrintFinishCallback onPrintFinishCallback) {
|
|
if (bitmap != null) {
|
|
((PrintManager) this.mContext.getSystemService("print")).print(str, new PrintBitmapAdapter(str, this.mScaleMode, bitmap, onPrintFinishCallback), new PrintAttributes.Builder().setMediaSize(isPortrait(bitmap) ? PrintAttributes.MediaSize.UNKNOWN_PORTRAIT : PrintAttributes.MediaSize.UNKNOWN_LANDSCAPE).setColorMode(this.mColorMode).build());
|
|
}
|
|
}
|
|
|
|
public void printBitmap(@NonNull String str, @NonNull Uri uri) throws FileNotFoundException {
|
|
printBitmap(str, uri, (OnPrintFinishCallback) null);
|
|
}
|
|
|
|
public void printBitmap(@NonNull String str, @NonNull Uri uri, @Nullable OnPrintFinishCallback onPrintFinishCallback) throws FileNotFoundException {
|
|
PrintUriAdapter printUriAdapter = new PrintUriAdapter(str, uri, onPrintFinishCallback, this.mScaleMode);
|
|
PrintManager printManager = (PrintManager) this.mContext.getSystemService("print");
|
|
PrintAttributes.Builder builder = new PrintAttributes.Builder();
|
|
builder.setColorMode(this.mColorMode);
|
|
int i = this.mOrientation;
|
|
if (i == 1 || i == 0) {
|
|
builder.setMediaSize(PrintAttributes.MediaSize.UNKNOWN_LANDSCAPE);
|
|
} else if (i == 2) {
|
|
builder.setMediaSize(PrintAttributes.MediaSize.UNKNOWN_PORTRAIT);
|
|
}
|
|
printManager.print(str, printUriAdapter, builder.build());
|
|
}
|
|
|
|
public void setColorMode(int i) {
|
|
this.mColorMode = i;
|
|
}
|
|
|
|
public void setOrientation(int i) {
|
|
this.mOrientation = i;
|
|
}
|
|
|
|
public void setScaleMode(int i) {
|
|
this.mScaleMode = i;
|
|
}
|
|
|
|
@RequiresApi(19)
|
|
public void writeBitmap(PrintAttributes printAttributes, int i, Bitmap bitmap, ParcelFileDescriptor parcelFileDescriptor, CancellationSignal cancellationSignal, PrintDocumentAdapter.WriteResultCallback writeResultCallback) {
|
|
new AnonymousClass1(cancellationSignal, IS_MIN_MARGINS_HANDLING_CORRECT ? printAttributes : copyAttributes(printAttributes).setMinMargins(new PrintAttributes.Margins(0, 0, 0, 0)).build(), bitmap, printAttributes, i, parcelFileDescriptor, writeResultCallback).execute(new Void[0]);
|
|
}
|
|
}
|