Anbringen einer Image-Annotation via API
Beispiel zum Anbringen einer Image-Annotation, hierfür muss zuerst eine passende Image-Annotationsdefinition im Annotationsprofil angelegt werden:
Definition einer Image-Annotation im Annotationsprofil
<annotation-type name="Image" class="com.levigo.jadice.annotation.ImageAnnotation"> <renderer class="com.levigo.jadice.annotation.internal.renderer.ImageAnnotationRenderer" /> <wrangler class="com.levigo.jadice.swing.internal.annotation.wranglers.RectangleAnnotationWrangler" /> <labels> <label locale="en">Image</label> <label locale="de">Bild</label> </labels> </annotation-type>
Anbringen einer Image-Annotation
final Document document = <Jadice-Document Instanz> // Seitenindex (0-basierend) final int pageIndex = 0; // PageSegment mit Dokumentinhalt holen auf die die Image-Anno aufgebracht werden soll final AbstractPageSegment ps = (AbstractPageSegment) document.getPage(pageIndex).getPageSegment(DocumentLayer.DEFAULT); // AnnotationPagesegment holen (wird neu erstellt, falls noch nicht vorhanden) final AnnotationPageSegment aps = Annotations.getAnnotationPageSegment(document.getPage(pageIndex), true); // Annotationsprofil laden (hier: Jadice-Annotationsformat) final URL profileUrl = JadiceAnnotationReader.class.getResource("/default-annotation-profile.xml"); final AnnotationProfile annotationProfile = AnnotationProfile.load(profileUrl); // Annotation anlegen final ImageAnnotation a = new ImageAnnotation(); // Annotation einem Basistyp zuordnen (siehe default-annotation-profile.xml Datei) a.setType(annotationProfile.getType("Image")); try { // Bild via Reader-Klasse laden final Reader reader = new Reader(); reader.read(<Bilddatenstrom>); // Seite holen und der Annotation setzen final Page page = reader.getDocument().getPage(0); a.setPage(page); // Originale Bildgrösse setzen final float w = (float) page.getSize().getWidth(); final float h = (float) page.getSize().getHeight(); a.setSize(w, h); // Grösse kann nicht verändert werden a.setAllowResize(false); } catch (final Exception e) { // Fehler beim Bild laden e.printStackTrace(); throw new IllegalStateException("Ladefehler"); } // Postion final float x = <x-Position in Pixel> * (Document.BASE_RESOLUTION / ps.getResolution().getX()); final float y = <y-Position in Pixel> * (Document.BASE_RESOLUTION / ps.getResolution().getX()); a.setLocation(x, y); // Inhalt füllen -> damit der das Bild mit der Maus bewegt werden kann a.setFilled(true); // Optional: schwarzer Rand setzen //a.setStrokeColor(Color.BLACK); //a.setLineWidth(3); //a.setLinePainted(true); // Anno der Seite hinzufügen aps.addAnnotation(a);