1package org.libreoffice;
3import android.annotation.TargetApi;
4import android.content.Context;
5import android.os.Bundle;
6import android.os.CancellationSignal;
7import android.os.ParcelFileDescriptor;
8import android.print.PageRange;
9import android.print.PrintAttributes;
10import android.print.PrintDocumentAdapter;
11import android.print.PrintDocumentInfo;
14import java.io.FileInputStream;
15import java.io.FileOutputStream;
16import java.io.IOException;
17import java.io.InputStream;
18import java.io.OutputStream;
26 this.mContext = mContext;
27 this.pdfFile = pdfFile;
31 public void onLayout(PrintAttributes oldAttributes, PrintAttributes newAttributes, CancellationSignal cancellationSignal, LayoutResultCallback callback, Bundle extras) {
32 if (cancellationSignal.isCanceled()) {
33 callback.onLayoutCancelled();
37 PrintDocumentInfo.Builder builder=
38 new PrintDocumentInfo.Builder(f.getName());
39 builder.setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT)
40 .setPageCount(PrintDocumentInfo.PAGE_COUNT_UNKNOWN)
42 callback.onLayoutFinished(builder.build(),
43 !newAttributes.equals(oldAttributes));
48 public void onWrite(PageRange[] pages, ParcelFileDescriptor destination, CancellationSignal cancellationSignal, WriteResultCallback callback) {
50 OutputStream out=
null;
53 in =
new FileInputStream(file);
54 out=
new FileOutputStream(destination.getFileDescriptor());
56 byte[] buf=
new byte[
in.available()];
59 while ((
size=
in.read(buf)) >= 0
60 && !cancellationSignal.isCanceled()) {
61 out.write(buf, 0,
size);
64 if (cancellationSignal.isCanceled()) {
65 callback.onWriteCancelled();
68 callback.onWriteFinished(
new PageRange[] { PageRange.ALL_PAGES });
72 callback.onWriteFailed(e.getMessage());
80 catch (IOException e) {
void onLayout(PrintAttributes oldAttributes, PrintAttributes newAttributes, CancellationSignal cancellationSignal, LayoutResultCallback callback, Bundle extras)
PDFDocumentAdapter(Context mContext, String pdfFile)
void onWrite(PageRange[] pages, ParcelFileDescriptor destination, CancellationSignal cancellationSignal, WriteResultCallback callback)