jadice Dokumente können jeweils einem physikalischen Dokument direkt entsprechen. Darüber hinaus können sie zusätzlich aus beliebig vielen anderen Dokumentquellen aggregiert werden und stellen in diesem Sinne virtuelle Dokumente dar. Einem virtuellen Dokument können durch weitere Aufrufe der Methode read(InputStream is) zusätzliche Seiten angefügt werden. Dies ist der Standardfall:

Reader reader = new Reader();
reader.read(getSomeInputStream());  // Dokument mit 2 Seiten
reader.read(getAnotherInputStream()); // Dokument mit 3 Seiten
Document doc = reader.getDocument(); // Resultat: jadice Dokument mit 5 Seiten

Die Seiten finden sich deshalb am Ende des Dokuments wieder, weil ein interner Zähler automatisch inkrementiert wird – bei Bedarf kann ein InputStream an jede beliebige Seitenposition geladen werden. Die Position des internen Zählers kann durch einen Aufruf der Methode setTargetIndex(int index) beeinflusst werden. Zu beachten ist, dass die Seitennummerierung mit 0 beginnt. Das obige Beispiel würde dann folgendermaßen aussehen:

Reader reader = new Reader();
reader.setTargetIndex(0); // (unnötig, da initialer Index = 0)
reader.read(getSomeInputStream());  // Dokument mit 2 Seiten
reader.setTargetIndex(2); //  (unnötig, da interner Index = 2)
reader.read(getAnotherInputStream()); // Dokument mit 3 Seiten
Document doc = reader.getDocument(); // Resultat: jadice Dokument mit 5 Seiten

Auch ein Seitenindex, der die aktuelle Seitenanzahl übersteigt, ist möglich. Dabei entstehende »Seitenlücken« werden mit leeren Seitenhülsen ohne grafische Inhalte aufgefüllt. Diese Seitenhülsen können dann zu einem späteren Zeitpunkt mit Dokumentdaten befüllt werden. Seitenhülsen ohne Inhalt führen zu einer leeren Anzeige. Im folgenden Beispiel werden drei Streams geladen und mittels setTargetIndex(int index) verschiedenen Seitenpositionen zugewiesen.

Reader reader = new Reader();
reader.setTargetIndex(0); // (unnötig, da initialer Index = 0)
reader.read(getSomeInputStream());  // Dokument mit 2 Seiten
reader.setTargetIndex(4); //  damit entsteht eine Lücke von 2 leeren Seitenhülsen
reader.read(getAnotherInputStream()); // Dokument mit 3 Seiten
Document doc = reader.getDocument(); // Resultat: jadice Dokument mit 7 Seiten, 
                                     // wobei die Seiten mit Index 2 und 3 leere 
                                     // Seitenhülsen sind

Ein späteres Befüllen der Seitenhülsen könnte dann wie folgt aussehen:

Reader reader = new Reader();
reader.setDocument(doc); // doc aus obigem Beispiel
reader.setTargetIndex(2); // Index, der bis jetzt eine leere 
                          // Seitenhülse enthält
reader.read(getSomeInputStream());  // Dokument mit 2 Seiten
// Resultat: doc ist jetzt ein jadice Dokument mit 7 Seiten, 
// wobei die Seiten mit Index 2 und 3 nun befüllt sind
[jadice® document platform 5 Dokumentation. Erstellungsdatum: 2011-08-12]
loading table of contents...