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