Android PdfDocument is not printing whole content from recyclerView

162 Views Asked by At

I am trying to create PDF file using android API PdfDocument.

If the contents are less (within visible view of the screen) - my code works fine.

If recyclerView contains more items (more than screen height) - all content do not get printed in PDF.

Here is my code:


 public void exportDataPDF(View view) {
        PrintAttributes printAttrs = new PrintAttributes.Builder().
                setColorMode(PrintAttributes.COLOR_MODE_COLOR).
                setMediaSize(PrintAttributes.MediaSize.ISO_A2).
                setResolution(new PrintAttributes.Resolution("MyPrinterId", PRINT_SERVICE, 50, 50)).
                setMinMargins(new PrintAttributes.Margins(5,5,5,5)). //PrintAttributes.Margins.NO_MARGINS
                build();

        PdfDocument pdfDocument = new PrintedPdfDocument(this, printAttrs);

        int pageNumber = 1;
        
        //Get Content View.
        View contentView = findViewById(R.id.recyclerView);

        // crate a page description
        PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(contentView.getWidth(), contentView.getHeight(), pageNumber).create();

        // create a new page from the PageInfo
        PdfDocument.Page page = pdfDocument.startPage(pageInfo);

        // draw view on the page
        Canvas pageCanvas = page.getCanvas();
        pageCanvas.scale(1f, 1f);
        int pageWidth = pageCanvas.getWidth();
        int pageHeight = pageCanvas.getHeight();
        int measureWidth = View.MeasureSpec.makeMeasureSpec(pageWidth, View.MeasureSpec.EXACTLY);
        int measuredHeight = View.MeasureSpec.makeMeasureSpec(pageHeight, View.MeasureSpec.EXACTLY);
        contentView.measure(measureWidth, measuredHeight);
        contentView.layout(0, 0, pageWidth, pageHeight);
        contentView.draw(pageCanvas);

        // do final processing of the page
        pdfDocument.finishPage(page);

        try {
            FileOutputStream fileOutputStream = openFileOutput(exportFileName, MODE_PRIVATE);
            pdfDocument.writeTo(fileOutputStream);
            fileOutputStream.close();

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

Could someone please help me to print all content of recyclerView items in PDF. I don't want to use external library like iText or others.

0

There are 0 best solutions below