android.graphics.pdf.PdfRenderer Java Examples

The following examples show how to use android.graphics.pdf.PdfRenderer. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: BasePDFPagerAdapter.java    From fangzhuishushenqi with Apache License 2.0 7 votes vote down vote up
@Override
@SuppressWarnings("NewApi")
public Object instantiateItem(ViewGroup container, int position) {
    View v = inflater.inflate(R.layout.view_pdf_page, container, false);
    ImageView iv = (ImageView) v.findViewById(R.id.imageView);

    if (renderer == null || getCount() < position) {
        return v;
    }

    PdfRenderer.Page page = getPDFPage(renderer, position);

    Bitmap bitmap = bitmapContainer.get(position);
    page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
    page.close();

    iv.setImageBitmap(bitmap);
    container.addView(v, 0);

    return v;
}
 
Example #2
Source File: PdfRendererBasicFragment.java    From android-PdfRendererBasic with Apache License 2.0 6 votes vote down vote up
/**
 * Shows the specified page of PDF to the screen.
 *
 * @param index The page index.
 */
private void showPage(int index) {
    if (mPdfRenderer.getPageCount() <= index) {
        return;
    }
    // Make sure to close the current page before opening another one.
    if (null != mCurrentPage) {
        mCurrentPage.close();
    }
    // Use `openPage` to open a specific page in PDF.
    mCurrentPage = mPdfRenderer.openPage(index);
    // Important: the destination bitmap must be ARGB (not RGB).
    Bitmap bitmap = Bitmap.createBitmap(mCurrentPage.getWidth(), mCurrentPage.getHeight(),
            Bitmap.Config.ARGB_8888);
    // Here, we render the page onto the Bitmap.
    // To render a portion of the page, use the second and third parameter. Pass nulls to get
    // the default result.
    // Pass either RENDER_MODE_FOR_DISPLAY or RENDER_MODE_FOR_PRINT for the last parameter.
    mCurrentPage.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
    // We are ready to show the Bitmap to user.
    mImageView.setImageBitmap(bitmap);
    updateUi();
}
 
Example #3
Source File: PdfRendererBasicViewModel.java    From graphics-samples with Apache License 2.0 6 votes vote down vote up
@WorkerThread
private void showPage(int index) {
    // Make sure to close the current page before opening another one.
    if (null != mCurrentPage) {
        mCurrentPage.close();
    }
    // Use `openPage` to open a specific page in PDF.
    mCurrentPage = mPdfRenderer.openPage(index);
    // Important: the destination bitmap must be ARGB (not RGB).
    final Bitmap bitmap = Bitmap.createBitmap(mCurrentPage.getWidth(), mCurrentPage.getHeight(),
            Bitmap.Config.ARGB_8888);
    // Here, we render the page onto the Bitmap.
    // To render a portion of the page, use the second and third parameter. Pass nulls to get
    // the default result.
    // Pass either RENDER_MODE_FOR_DISPLAY or RENDER_MODE_FOR_PRINT for the last parameter.
    mCurrentPage.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
    mPageBitmap.postValue(bitmap);
    final int count = mPdfRenderer.getPageCount();
    mPageInfo.postValue(new PageInfo(index, count));
    mPreviousEnabled.postValue(index > 0);
    mNextEnabled.postValue(index + 1 < count);
}
 
Example #4
Source File: PdfRendererBasicFragment.java    From android-PdfRendererBasic with Apache License 2.0 6 votes vote down vote up
/**
 * Sets up a {@link android.graphics.pdf.PdfRenderer} and related resources.
 */
private void openRenderer(Context context) throws IOException {
    // In this sample, we read a PDF from the assets directory.
    File file = new File(context.getCacheDir(), FILENAME);
    if (!file.exists()) {
        // Since PdfRenderer cannot handle the compressed asset file directly, we copy it into
        // the cache directory.
        InputStream asset = context.getAssets().open(FILENAME);
        FileOutputStream output = new FileOutputStream(file);
        final byte[] buffer = new byte[1024];
        int size;
        while ((size = asset.read(buffer)) != -1) {
            output.write(buffer, 0, size);
        }
        asset.close();
        output.close();
    }
    mFileDescriptor = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
    // This is the PdfRenderer we use to render the PDF.
    if (mFileDescriptor != null) {
        mPdfRenderer = new PdfRenderer(mFileDescriptor);
    }
}
 
Example #5
Source File: FileBackend.java    From Pix-Art-Messenger with GNU General Public License v3.0 6 votes vote down vote up
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private Bitmap getPDFPreview(final File file, int size) {
    try {
        final ParcelFileDescriptor mFileDescriptor = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
        if (mFileDescriptor == null) {
            return null;
        }
        final PdfRenderer renderer = new PdfRenderer(mFileDescriptor);
        final PdfRenderer.Page page = renderer.openPage(0);
        final Dimensions dimensions = scalePdfDimensions(new Dimensions(page.getHeight(), page.getWidth()));
        final Bitmap bitmap = Bitmap.createBitmap(dimensions.width, dimensions.height, Bitmap.Config.ARGB_8888);
        bitmap.eraseColor(Color.WHITE);
        page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
        drawOverlay(bitmap, R.drawable.show_pdf, 0.75f);
        page.close();
        renderer.close();
        return bitmap;
    } catch (Exception e) {
        e.printStackTrace();
        final Bitmap placeholder = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
        placeholder.eraseColor(Color.WHITE);
        drawOverlay(placeholder, R.drawable.show_pdf, 0.75f);
        return placeholder;
    }
}
 
Example #6
Source File: BasePDFPagerAdapter.java    From BookReader with Apache License 2.0 6 votes vote down vote up
@Override
@SuppressWarnings("NewApi")
public Object instantiateItem(ViewGroup container, int position) {
    View v = inflater.inflate(R.layout.view_pdf_page, container, false);
    ImageView iv = (ImageView) v.findViewById(R.id.imageView);

    if (renderer == null || getCount() < position) {
        return v;
    }

    PdfRenderer.Page page = getPDFPage(renderer, position);

    Bitmap bitmap = bitmapContainer.get(position);
    page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
    page.close();

    iv.setImageBitmap(bitmap);
    container.addView(v, 0);

    return v;
}
 
Example #7
Source File: BasePDFPagerAdapter.java    From PdfViewPager with Apache License 2.0 6 votes vote down vote up
@Override
@SuppressWarnings("NewApi")
public Object instantiateItem(ViewGroup container, int position) {
    View v = inflater.inflate(R.layout.view_pdf_page, container, false);
    ImageView iv = (ImageView) v.findViewById(R.id.imageView);

    if (renderer == null || getCount() < position) {
        return v;
    }

    PdfRenderer.Page page = getPDFPage(renderer, position);

    Bitmap bitmap = bitmapContainer.get(position);
    page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
    page.close();

    iv.setImageBitmap(bitmap);
    container.addView(v, 0);

    return v;
}
 
Example #8
Source File: FileBackend.java    From Conversations with GNU General Public License v3.0 5 votes vote down vote up
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private Bitmap renderPdfDocument(ParcelFileDescriptor fileDescriptor, int targetSize, boolean fit) throws IOException {
    final PdfRenderer pdfRenderer = new PdfRenderer(fileDescriptor);
    final PdfRenderer.Page page = pdfRenderer.openPage(0);
    final Dimensions dimensions = scalePdfDimensions(new Dimensions(page.getHeight(), page.getWidth()), targetSize, fit);
    final Bitmap rendered = Bitmap.createBitmap(dimensions.width, dimensions.height, Bitmap.Config.ARGB_8888);
    rendered.eraseColor(0xffffffff);
    page.render(rendered, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
    page.close();
    pdfRenderer.close();
    fileDescriptor.close();
    return rendered;
}
 
Example #9
Source File: PDFUtil.java    From PDFCreatorAndroid with MIT License 5 votes vote down vote up
/**
 * Convert PDF to bitmap, only works on devices above LOLLIPOP
 *
 * @param pdfFile pdf file
 * @return list of bitmap of every page
 * @throws Exception
 */
public static ArrayList<Bitmap> pdfToBitmap(File pdfFile) throws Exception, IllegalStateException {
    if (pdfFile == null || pdfFile.exists() == false) {
        throw new IllegalStateException("");
    }

    ArrayList<Bitmap> bitmaps = new ArrayList<>();

    try {
        PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(pdfFile, ParcelFileDescriptor.MODE_READ_ONLY));

        Bitmap bitmap;
        final int pageCount = renderer.getPageCount();
        for (int i = 0; i < pageCount; i++) {
            PdfRenderer.Page page = renderer.openPage(i);

            int width = page.getWidth();
            int height = page.getHeight();

            /* FOR HIGHER QUALITY IMAGES, USE:
            int width = context.getResources().getDisplayMetrics().densityDpi / 72 * page.getWidth();
            int height = context.getResources().getDisplayMetrics().densityDpi / 72 * page.getHeight();
            */

            bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
            page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);

            bitmaps.add(bitmap);

            // close the page
            page.close();
        }
        // close the renderer
        renderer.close();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return bitmaps;
}
 
Example #10
Source File: BasePDFPagerAdapter.java    From BookReader with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings("NewApi")
private PdfRendererParams extractPdfParamsFromFirstPage(PdfRenderer renderer, float renderQuality) {
    PdfRenderer.Page samplePage = getPDFPage(renderer, FIRST_PAGE);
    PdfRendererParams params = new PdfRendererParams();

    params.setRenderQuality(renderQuality);
    params.setOffScreenSize(offScreenSize);
    params.setWidth((int) (samplePage.getWidth() * renderQuality));
    params.setHeight((int) (samplePage.getHeight() * renderQuality));

    samplePage.close();

    return params;
}
 
Example #11
Source File: BasePDFPagerAdapter.java    From BookReader with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings("NewApi")
protected void init() {
    try {
        renderer = new PdfRenderer(getSeekableFileDescriptor(pdfPath));
        inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        PdfRendererParams params = extractPdfParamsFromFirstPage(renderer, renderQuality);
        bitmapContainer = new SimpleBitmapPool(params);
    } catch (IOException e) {
        e.printStackTrace();
    }
}
 
Example #12
Source File: PDFPagerAdapter.java    From BookReader with Apache License 2.0 5 votes vote down vote up
@Override
@SuppressWarnings("NewApi")
public Object instantiateItem(ViewGroup container, int position) {
    View v = inflater.inflate(R.layout.view_pdf_page, container, false);
    ImageView iv = (ImageView) v.findViewById(R.id.imageView);

    if (renderer == null || getCount() < position) {
        return v;
    }

    PdfRenderer.Page page = getPDFPage(renderer, position);

    Bitmap bitmap = bitmapContainer.get(position);
    page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
    page.close();

    PhotoViewAttacher attacher = new PhotoViewAttacher(iv);
    attacher.setScale(scale.getScale(), scale.getCenterX(), scale.getCenterY(), true);
    attacher.setOnMatrixChangeListener(this);

    attachers.put(position, new WeakReference<PhotoViewAttacher>(attacher));

    iv.setImageBitmap(bitmap);
    attacher.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() {
        @Override
        public void onPhotoTap(View view, float x, float y) {
            if (pageClickListener != null) {
                pageClickListener.onPageTap(view, x, y);
            }
        }
    });
    attacher.update();
    container.addView(v, 0);

    return v;
}
 
Example #13
Source File: BasePDFPagerAdapter.java    From PdfViewPager with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings("NewApi")
protected PdfRendererParams extractPdfParamsFromFirstPage(PdfRenderer renderer, float renderQuality) {
    PdfRenderer.Page samplePage = getPDFPage(renderer, FIRST_PAGE);
    PdfRendererParams params = new PdfRendererParams();

    params.setRenderQuality(renderQuality);
    params.setOffScreenSize(offScreenSize);
    params.setWidth((int) (samplePage.getWidth() * renderQuality));
    params.setHeight((int) (samplePage.getHeight() * renderQuality));

    samplePage.close();

    return params;
}
 
Example #14
Source File: BasePDFPagerAdapter.java    From PdfViewPager with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings("NewApi")
protected void init() {
    try {
        renderer = new PdfRenderer(getSeekableFileDescriptor(pdfPath));
        inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        PdfRendererParams params = extractPdfParamsFromFirstPage(renderer, renderQuality);
        bitmapContainer = new SimpleBitmapPool(params);
    } catch (IOException e) {
        errorHandler.onPdfError(e);
    }
}
 
Example #15
Source File: BasePDFPagerAdapter.java    From fangzhuishushenqi with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings("NewApi")
private PdfRendererParams extractPdfParamsFromFirstPage(PdfRenderer renderer, float renderQuality) {
    PdfRenderer.Page samplePage = getPDFPage(renderer, FIRST_PAGE);
    PdfRendererParams params = new PdfRendererParams();

    params.setRenderQuality(renderQuality);
    params.setOffScreenSize(offScreenSize);
    params.setWidth((int) (samplePage.getWidth() * renderQuality));
    params.setHeight((int) (samplePage.getHeight() * renderQuality));

    samplePage.close();

    return params;
}
 
Example #16
Source File: BasePDFPagerAdapter.java    From fangzhuishushenqi with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings("NewApi")
protected void init() {
    try {
        renderer = new PdfRenderer(getSeekableFileDescriptor(pdfPath));
        inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        PdfRendererParams params = extractPdfParamsFromFirstPage(renderer, renderQuality);
        bitmapContainer = new SimpleBitmapPool(params);
    } catch (IOException e) {
        e.printStackTrace();
    }
}
 
Example #17
Source File: PDFPagerAdapter.java    From fangzhuishushenqi with Apache License 2.0 5 votes vote down vote up
@Override
@SuppressWarnings("NewApi")
public Object instantiateItem(ViewGroup container, int position) {
    View v = inflater.inflate(R.layout.view_pdf_page, container, false);
    ImageView iv = (ImageView) v.findViewById(R.id.imageView);

    if (renderer == null || getCount() < position) {
        return v;
    }

    PdfRenderer.Page page = getPDFPage(renderer, position);

    Bitmap bitmap = bitmapContainer.get(position);
    page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
    page.close();

    PhotoViewAttacher attacher = new PhotoViewAttacher(iv);
    attacher.setScale(scale.getScale(), scale.getCenterX(), scale.getCenterY(), true);
    attacher.setOnMatrixChangeListener(this);

    attachers.put(position, new WeakReference<PhotoViewAttacher>(attacher));

    iv.setImageBitmap(bitmap);
    attacher.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() {
        @Override
        public void onPhotoTap(View view, float x, float y) {
            if (pageClickListener != null) {
                pageClickListener.onPageTap(view, x, y);
            }
        }
    });
    attacher.update();
    container.addView(v, 0);

    return v;
}
 
Example #18
Source File: PdfRendererBasicViewModel.java    From graphics-samples with Apache License 2.0 5 votes vote down vote up
@WorkerThread
private void openPdfRenderer() throws IOException {
    final File file = new File(getApplication().getCacheDir(), FILENAME);
    if (!file.exists()) {
        // Since PdfRenderer cannot handle the compressed asset file directly, we copy it into
        // the cache directory.
        final InputStream asset = getApplication().getAssets().open(FILENAME);
        final FileOutputStream output = new FileOutputStream(file);
        final byte[] buffer = new byte[1024];
        int size;
        while ((size = asset.read(buffer)) != -1) {
            output.write(buffer, 0, size);
        }
        asset.close();
        output.close();
    }
    mFileDescriptor = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
    if (mFileDescriptor != null) {
        mPdfRenderer = new PdfRenderer(mFileDescriptor);
    }
}
 
Example #19
Source File: PDFUtil.java    From PDFCreatorAndroid with MIT License 5 votes vote down vote up
/**
 * Get total number of pages
 *
 * @param pdfFile pdf file to get page count of
 * @return pdf page count
 * @throws IOException
 * @throws Exception
 */
private int getTotalPages(File pdfFile) throws IOException, Exception {
    ParcelFileDescriptor parcelFileDescriptor = ParcelFileDescriptor.open(pdfFile, ParcelFileDescriptor.MODE_READ_ONLY);
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
        PdfRenderer pdfRenderer = new PdfRenderer(parcelFileDescriptor);
        return pdfRenderer.getPageCount();
    } else {
        throw new Exception("PDF cannot be processed in this device");
    }
}
 
Example #20
Source File: BasePDFPagerAdapter.java    From PdfViewPager with Apache License 2.0 4 votes vote down vote up
@SuppressWarnings("NewApi")
protected PdfRenderer.Page getPDFPage(PdfRenderer renderer, int position) {
    return renderer.openPage(position);
}
 
Example #21
Source File: BasePDFPagerAdapter.java    From fangzhuishushenqi with Apache License 2.0 4 votes vote down vote up
@SuppressWarnings("NewApi")
protected PdfRenderer.Page getPDFPage(PdfRenderer renderer, int position) {
    return renderer.openPage(position);
}
 
Example #22
Source File: BasePDFPagerAdapter.java    From BookReader with Apache License 2.0 4 votes vote down vote up
@SuppressWarnings("NewApi")
protected PdfRenderer.Page getPDFPage(PdfRenderer renderer, int position) {
    return renderer.openPage(position);
}