webentwicklung-frage-antwort-db.com.de

Android Erstellen und Drucken von PDFs aus der Layoutansicht

Ich versuche, PDF -Datei aus der XML-Layoutansicht zu erstellen. Ich habe eine Listenansicht in diesem Layout, die Elemente hinzufügt und die Höhe basierend auf dem Kind festlegt. PDF erstellt, füllt jedoch nicht die gesamte Seite aus. Was ich versucht habe, ist:

 PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(2250, 1400, 1).create();

        // start a page
        PdfDocument.Page page = document.startPage(pageInfo);


        // draw something on the page
        LayoutInflater inflater = (LayoutInflater)
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View content = inflater.inflate(R.layout.pdf_layout, null);

        content.measure(2250, 1400);
        content.layout(0,0, 2250, 1400);

        tvName = (TextView)content.findViewById(R.id.tvName);
        tvDate = (TextView)content.findViewById(R.id.tvDate);
        tvAge = (TextView)content.findViewById(R.id.tvAge);
        tvGender = (TextView)content.findViewById(R.id.tvGender);
        tvPhone = (TextView)content.findViewById(R.id.tvPhone);
        lvList = (ListView)content.findViewById(R.id.lvList);
        lvList.setAdapter(adapter);
        Utils.setListViewHeight(lvList, CreatePDFDemo.this);

        tvName.setText(name);
        tvAge.setText(age + "Y");
        tvGender.setText(gender);
        tvPhone.setText(phone);

        content.draw(page.getCanvas());

        // finish the page
        document.finishPage(page);
        // add more pages
        // write the document content
        try {
            document.writeTo(output);
        } catch (IOException e) {
            e.printStackTrace();
        }

Dieses seine Ausgabe ist wie dieses Bild,

 enter image description here

Wie schreibe ich eine Layoutansicht über die gesamte Breite einer PDF-Seite?

5
Exigente05

Ändern Sie dies,

        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());

Dies wird die volle Höhe und Breite der Seite erhalten.

1
nuevo

Verwenden Sie [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);
1
harsh bangari

Versuchen Sie, Ihr Layout in ein Bild zu konvertieren, und legen Sie dieses Bild als PDF fest. Lesen Sie dies, vielleicht bekommen Sie eine Idee. Ansicht in PDF konvertieren