PDFdocument mit mehreren Seiten ?

  • Hallo,


    ich erstelle aus meinen Daten, die ich über die RecyclerView darstelle, parallel ein PDF-Dokument mit der Klasse "PDFdocument". Alles klappt wunderbar.

    Leider überschreitet jetzt die Datenmenge eine PDF-Seite. Mein Wunsch ist klar. Wie kann ich die Seite erweitern ? Natürlich kann ich nachdem ich die erste Seite beendet habe vom Prinzip her eine zweite Seite bilden und die mit Daten füllen.

    Mein Problem ist aber, daß ich den Seitenüberlauf erst in einer Schleife feststelle, in der ich die erste Seite gefüllt habe. Ich zeige Euch folgend meinen Code und lasse gewisse Anweisungen weg, die die variable Arbeit bei der Pixeldarstellung realisieren.

    Es werden die Daten der RecyclerView in einer Schleife an den ViewAdapter übergeben. Parallel werden sie in das PDF-Dokument gespeichert. Der PDF-Aufbau wird über Canvas für jede Zeile realisert.

    Innerhalb der Schleife stelle ich fest, dass eine PDF-Seite nicht ausreicht. Wie kann ich jetzt eine zweite Seite aktivieren ? Android Studio sagt mir, bevor ich eine neue Seite aufbaue, muss die erste beendet werden. Wie Ihr in der Befehlfolge sehen könnt, habe ich versucht je nach Zeilenanzahl in canvas oder canvas2 zu speichern. Aber canvas2 wird in der Schleife noch nicht erkannt. Wenn ich canvas2 vor der Schleife definiere muss ich vorher die erste "volle" Seite benden (finish).


    Hat jemand einen Vorschlag , kann man das anders lösen ?


    Die Idee, den zweiten Teil ( ab 35 Zeilen) irgendwie zwischen zu speichern, gefällt mir erst mal nicht, würde aber wahrscheinlich gehen !
    Im Anhang ist die erste PDF Seite.

  • Die Lösung war wie so oft einfach.

    Globale Definitionen und beim Aufbau der zweiten Seite diese verwenden.

    Code
    // global definiert
    Canvas canvas2;
    PdfDocument.Page mypage2;
    
    // später dann
    PdfDocument.PageInfo mypageInfo2 = new PdfDocument.PageInfo.Builder(1080,2340,1).create();
                    mypage2 = document.startPage(mypageInfo2);
                    canvas2 = mypage2.getCanvas();

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!