Android create and print pdf from layout view

前端 未结 4 2007
梦毁少年i
梦毁少年i 2021-01-12 13:36

I am trying to create PDF file from xml layout view. I have a listview in that layout, adding items and setting height based on child. PDF is creating but not filling the wh

相关标签:
4条回答
  • 2021-01-12 14:15

    Use [PrintContent] (https://developer.android.com/reference/android/support/v4/print/PrintHelper.html)!

     // Get the print manager.
    PrintHelper printHelper = new PrintHelper(this);
    
    // Set the desired scale mode.
    printHelper.setScaleMode(PrintHelper.SCALE_MODE_FIT);
    
    // Get the bitmap for the ImageView's drawable.
    Bitmap bitmap = ((BitmapDrawable) mImageView.getDrawable()).getBitmap();
    
    // Print the bitmap.
    printHelper.printBitmap("Print Bitmap", bitmap);
    
    0 讨论(0)
  • 2021-01-12 14:16

    Change to this,

            int measureWidth = View.MeasureSpec.makeMeasureSpec(page.getCanvas().getWidth(), View.MeasureSpec.EXACTLY);
            int measuredHeight = View.MeasureSpec.makeMeasureSpec(page.getCanvas().getHeight(), View.MeasureSpec.EXACTLY);
    
            content.measure(measureWidth, measuredHeight);
            content.layout(0, 0, page.getCanvas().getWidth(), page.getCanvas().getHeight());
    

    This will get page full height and width.

    0 讨论(0)
  • 2021-01-12 14:21

    I made a library to achieve this objective (Getting PDF from layout view).

    The main code snippet is with the proper documentation -

     PdfGenerator.getBuilder()
                            .setContext(context)
                            .fromLayoutXMLSource()
                            .fromLayoutXML(R.layout.layout_print,R.layout.layout_print)
                /* "fromLayoutXML()" takes array of layout resources.
                 * You can also invoke "fromLayoutXMLList()" method here which takes list of layout resources instead of array. */
                            .setDefaultPageSize(PdfGenerator.PageSize.A4)
                /* It takes default page size like A4,A5. You can also set custom page size in pixel
                 * by calling ".setCustomPageSize(int widthInPX, int heightInPX)" here. */
                            .setFileName("Test-PDF")
                /* It is file name */
                            .setFolderName("FolderA/FolderB/FolderC")
                /* It is folder name. If you set the folder name like this pattern (FolderA/FolderB/FolderC), then
                 * FolderA creates first.Then FolderB inside FolderB and also FolderC inside the FolderB and finally
                 * the pdf file named "Test-PDF.pdf" will be store inside the FolderB. */
                            .openPDFafterGeneration(true)
                /* It true then the generated pdf will be shown after generated. */
                            .build(new PdfGeneratorListener() {
                                @Override
                                public void onFailure(FailureResponse failureResponse) {
                                    super.onFailure(failureResponse);
                    /* If pdf is not generated by an error then you will findout the reason behind it
                     * from this FailureResponse. */
                                }
    
                                @Override
                                public void showLog(String log) {
                                    super.showLog(log);
                    /*It shows logs of events inside the pdf generation process*/ 
                                }
    
                                @Override
                                public void onSuccess(SuccessResponse response) {
                                    super.onSuccess(response);
                    /* If PDF is generated successfully then you will find SuccessResponse 
                     * which holds the PdfDocument,File and path (where generated pdf is stored)*/
                    
                                }
                            });
    
    0 讨论(0)
  • 2021-01-12 14:34

    Try to convert your layout into image then set that image to PDF. read this, maybe you will get some idea. Convert view to PDF

    0 讨论(0)
提交回复
热议问题