Formatspezifische Ausprägungen von Annotationen werden anhand von Profilen definiert. Beim Laden muss daher das entsprechende Profil gesetzt werden.
Alle jadice Annotationen eines Dokumentes sind in einem einzigen Datenobjekt (XML-Format) zusammengefasst.
Codebeispiel:
// Jadice Profil laden // Hier wird das "default" Profil verwendet final URL profileUrl = JadiceAnnotationReader.class.getResource("/default-annotation-profile.xml"); final AnnotationProfile profile = AnnotationProfile.load(profileUrl); // Vordefiniertes Profil im Document setzen <<Document-Instanz>>.getProperties().put(AnnotationProfile.class.getName(), profile); final DefaultReaderControls controls = new DefaultReaderControls(); controls.getSettings(JadiceAnnotationReaderSettings.class).setAnnotationProfile(profile); Reader reader = new Reader(); // Document-Instanz setzen reader.setDocument(<<Document-Instanz>>); reader.setReaderControls(controls); // Startseitenindex setzen reader.setTargetIndex(0); // Jadice Annotation Format setzen reader.setFormat(new JadiceAnnotationFormat()); reader.read(<<Annotation-Inputstream>>); reader.complete();
JadiceAnnotationReaderSettings
Konfiguration:
-
setEncoding(String)
(Default = "utf-8")Hier kann ein Encoding gesetzt werden.
Zu beachten: Wenn ein anderes Encoding als UTF-8 verwendet wird, muss das entsprechende Encoding beim Speichern in den
JadiceAnnotationWriterSettings
gesetzt werden. -
setIgnoreUndefinedAnnotationProperty(boolean)
(Default =false
)Bei der Einstellung
true
werden Attribute, die nicht im Annotationsprofil definiert sind, ignoriert und es wird kein Fehler ausgelöst.
Es werden alle Annotationen des Dokuments in ein Datenobjekt (XML-Format) geschrieben.
Codebeispiel:
JadiceAnnotationWriter writer = new JadiceAnnotationWriter(); DefaultWriterControls controls = new DefaultWriterControls(); writer.write(<<Document-Instanz>>, <<Outputstream>>, controls);
JadiceAnnotationWriterSettings
Konfiguration:
-
setEncoding(String)
(Default = "utf-8")Hier kann ein Encoding gesetzt werden.
Zu beachten: Wenn ein anderes Encoding als UTF-8 verwendet wird, muss das entsprechende Encoding beim Laden in den
JadiceAnnotationReaderSettings
gesetzt werden. -
setWriteXMLDeclaration(boolean)
(Default =true
)Hier kann das Schreiben der XML-Deklaration ausgeschaltet werden.
Alle CM Annotation eines Dokumentes (n-Seiten) sind immer in einem Datenobjekt (IBM MODCA-Format) zusammengefasst.
Es gibt CM 7 und CM 8 Annotationen, die CM 7 sind nach CM 8 kompatibel, aber nicht umgekehrt.
Beim Laden ist darauf zu achten den Startseitenindex auf 0 zu setzen, da die Annotation den Seitenindex selbst bestimmen.
Codebeispiel:
final DefaultReaderControls controls = new DefaultReaderControls(); // AnnotationCustomizer-Implementation, wird hier fürs setzen der // Berechtigung benutzt final AnnotationCustomizer annotationCustomizer = new AnnotationCustomizer() { @Override public void customize(Annotation a) { // Geladenen Annotation können nicht verändert werden a.getPermissions().getPermissions() .add(IndividualAnnotationPermission.DENY.CHANGE); } }; controls.getSettings(CMAnnotationReaderSettings.class) .getAnnotationCustomizers().add(annotationCustomizer); // Laden und setzen des Annotations-Profil // für CM 7 Umfeld: cm7-annotation-profile.xml verwenden // für CM 8 Umfeld: cm8-annotation-profile.xml verwenden final URL profileUrl = CMAnnotationReader.class .getResource("/cm8-annotation-profile.xml"); final AnnotationProfile profile = AnnotationProfile .load(profileUrl); controls.getSettings(CMAnnotationReaderSettings.class) .setAnnotationProfile(profile); Reader reader = new Reader(); reader.setDocument(document); // Document-Instanz setzen reader.setDocument(<<Document-Instanz>>); // Startseitenindex setzen reader.setTargetIndex(0); // ReaderControls setzen reader.setReaderControls(controls); // Spezifisches Format setzen reader.setFormat(new CMAnnotationFormat()); reader.read(<<Annotation-Inputstream>>); reader.complete();
CMAnnotationReaderSettings
Konfiguration:
-
setCM8ViewerCompatibilityModeEnabled(boolean)
(Default =false
)Diese Einstellung muss beim Parallelbetrieb jadice / IBM CM Viewer aktiviert sein. Der Standardwert ist
false
, um altes Verhalten beizubehalten.Hintergrund: Der IBM CM Viewer unterstützt erst seit Kurzem das Anbringen von CM8-Annotationen auf PDF-Dokumenten. Da die Position und Größe der CM8-Annotationen abhängig von der Auflösung sind, haben wir als Standard eine Auflösung von 7200 DPI verwendet. Der IBM CM Viewer rechnet hier mit anderen Werten. Um eine korrekt Darstellung zwischen jadice und IBM CM Viewer zu bekommen, muss dieser Parameter auf
true
gesetzt werden. Zu beachten: Beim Schreiben muss der Parameter auch in denCMAnnotationWriterSettings
gesetzt werden.Zu beachten (betrifft nur Annotationen auf PDF-Dokumenten): Bei Anwendung dieser Funktion auf früher gespeicherte Annotationen werden diese nicht mehr korrekt dargestellt. Die Positionierung und Größendarstellung ist dann falsch.
Über die folgenden Methoden kann das Input-Encoding beziehungsweise die
Codepage einer textspezifischen Annotation (Note / Stamp / Text) gesetzt werden.
Wird hier ein Encoding gesetzt, wird die Definition aus der Annotation
überschrieben. Bei null
wird das intern definierte Encoding
der Annotation verwendet.
Anwendungsfall: Manche IBM Viewer legen das verwendete Encoding in der Annotation falsch ab und verwenden ein vordefiniertes Encoding.
-
setEncodingNoteAnnotation(String)
(Default =null
)Setzt das Encoding für die Notiz- / Note-Annotation.
-
setEncodingStampAnnotation(String)
(Default =null
Setzt das Encoding für die Stempel- / Stamp-Annotation.
-
setEncodingTextAnnotation(String)
(Default =null
)Setzt das Encoding für die Text-Annotation.
Es werden alle Annotationen vom Dokument in ein Datenobjekt geschrieben.
Codebeispiel:
DefaultWriterControls controls = new DefaultWriterControls(); // Ausgabeformat: // für CM 7 Umfeld: Format.CM7 (Standard) // für CM 8 Umfeld: Format.CM8 controls.getSettings(CMAnnotationWriterSettings.class).setFormat(Format.CM8); CMAnnotationWriter writer = new CMAnnotationWriter(); writer.write(<<Document-Instanz>>, <<Outputstream>>, controls);
CMAnnotationWriterSettings
Konfiguration:
-
setFormat(Format)
(Default =Format.CM7
)Wenn Annotationen im CM8-Format gespeichert werden sollen, muss hier
Format.CM8
gesetzt werden.Zu beachten: CM8-Format Annotationen können nicht mehr im IBM CM7 Viewer angezeigt werden.
Beim Laden wird das Format automatisch erkannt.
-
setCM8ViewerCompatibilityModeEnabled(boolean)
(Default =false
)Diese Einstellung muss beim Parallelbetrieb jadice / IBM CM Viewer aktiviert sein. Der Standardwert ist
false
, um altes Verhalten beizubehalten.Hintergrund: Der IBM CM Viewer unterstützt erst seit Kurzem das Anbringen von CM8-Annotationen auf PDF-Dokumenten. Da die Position und Größe der CM8-Annotationen abhängig von der Auflösung sind, haben wir als Standard eine Auflösung von 7200 DPI verwendet. Der IBM CM Viewer rechnet hier mit anderen Werten. Um eine korrekt Darstellung zwischen jadice und IBM CM Viewer zu bekommen, muss dieser Parameter auf
true
gesetzt werden. Zu beachten: Beim Lesen muss der Parameter in denCMAnnotationReaderSettings
gesetzt werden. -
setSaveAdditionalInfo(boolean)
(Default =false
)Es werden zusätzliche Informationen pro Annotation gespeichert, die Informationen werden aus dem Annotationsobjekt ausgelesen:
-
Erstellername
Name des Erstellers der Annotation (
getCreatedBy()
). -
Benutzername
Name des Benutzers, der die Annotation zuletzt geändert hat (
getLastModifiedBy()
). -
Erstelldatum
Estelldatum der Annotation (
getCreatedAt()
). -
Änderungsdatum
Letzes Datum einer Änderung (
getLastModifiedAt()
).
Zu beachten: Die zusätzlichen Informationen werden vom IBM CM Viewer ignoriert. Bei einem Speichervorgang im IBM CM Viewer gehen die Informationen verloren.
Beim Ladevorgang werden die Informationen automatisch erkannt und im Annotationsobjekt gesetzt.
-
-
setUseImagePlusNamingScheme(boolean)
(Default =false
)Diese Einstellung sollte nur für Parallelbetrieb IBM Image-Plus Viewer (IODM-Viewer) / jadice Viewer verwendet werden.
Hintergrund: Image-Plus Annotationen (Maske- / Mask-Annotation, Notiz- / Note-Annotation, Hervorhebung- / Highlight-Annotation) haben im Vergleich zu CM-Annotationen eine andere Namenskonvention.
Über die folgende Methoden kann das Output-Encoding beziehungsweise die
Codepage einer textspezifischen Annotation (Note / Stamp / Text) gesetzt werden.
Wird hier ein Encoding gesetzt, wird die Definition in die Annotation
übernommen. Bei null
wird das vordefinierte Encoding aus
der CMAnnotationWriter
Klasse verwendet.
-
setEncodingNoteAnnotation(String)
(Default =null
)Setzt das Encoding für die Notiz- / Note-Annotation.
-
setEncodingStampAnnotation(String)
(Default =null
)Setzt das Encoding für die Stempel- / Stamp-Annotation.
-
setEncodingTextAnnotation(String)
(Default =null
)Setzt das Encoding für die Text-Annotation.
Übersicht der Encoding-Definitionen:
-
CP850
(DOS-Latin-1)IBM-Encoding für Notiz- / Note-Annotation. Der Zeichensatz ist eingeschränkt, es fehlen zum Beispiel die osteuropäischen Sonderzeichen.
Wird als Standard vom Windows IBM CM Viewer verwendet.
-
CP1252
(Western European / ANSI)IBM-Encoding für Text-Annotation und Stempel- / Stamp-Annotation. Der Zeichensatz ist eingeschränkt, es fehlen zum Beispiel die osteuropäischen Sonderzeichen.
Wird als Standard vom Windows IBM CM Viewer verwendet.
-
CP1208
(UTF-8)IBM-Encoding für Notiz- / Note-Annotation, Text-Annotation und Stempel- / Stamp-Annotation. Zeichensatz entspricht der UTF-8 Definition.
Andere IBM-Encodings können verwendet werden, die Anzeige im IBM CM Viewer ist aber nicht sichergestellt.
Alle FNIS Annotation eines Dokumentes (n-Seiten) sind immer in einem Datenobjekt (XML-Format) zusammengefasst.
Beim Ladevorgang müssen Dokumente und Annotationen mit derselben Reader
Instanz geladen werden, damit die Annotationen korrekt auf den entsprechenden
Seiten positioniert werden.
Codebeispiel:
final DefaultReaderControls controls = new DefaultReaderControls(); // AnnotationCustomizer-Implementation, wird hier fürs setzen der // Berechtigung benutzt final AnnotationCustomizer annotationCustomizer = new AnnotationCustomizer() { @Override public void customize(Annotation a) { a.getPermissions().getPermissions() .add(IndividualAnnotationPermission.DENY.CHANGE); } }; controls.getSettings(FNISAnnotationReaderSettings.class) .getAnnotationCustomizers().add(annotationCustomizer); // Für Tiff-Dokumente ohne Auflösungsdefinition muss eine Auflösung von 100 DPI // verwendet werden controls.getSettings(TIFFReaderSettings.class).setInvalidResolutionHandling(InvalidResolutionHandling.USE_DEFAULT); controls.getSettings(TIFFReaderSettings.class).setDefaultResolution(new Resolution(100)); final URL profileUrl = FNISAnnotationReader.class .getResource("/filenet-is-annotation-profile.xml"); final AnnotationProfile profile = AnnotationProfile .load(profileUrl); controls.getSettings(FNISAnnotationReaderSettings.class) .setAnnotationProfile(profile); Reader reader = new Reader(); // ReaderControls setzen reader.setReaderControls(controls); // Laden der Dokumente // Format auf <null> setzen, d.h. das Dokument-Format wird automatisch ermittelt reader.setFormat(null); for (InputStream is : <<Liste mit Dokumentdaten>>) { reader.read(is); } // FileNet IS Format setzen reader.setFormat(new FNISAnnotationFormat()); reader.read(<<Annotation-Inputstream>>); reader.complete();
FNISAnnotationReaderSettings
Konfiguration:
-
setEncoding(String)
(Default = "ISO-8859-1")Encoding der XML-Annotationsdaten. In der XML-Datei, die vom FileNet IS Archiv geliefert wird, ist als Encoding UTF-8 angegeben, die Daten sind aber in ISO-8859-1 codiert. Falls vom Archiv ein anderes Encoding verwendet wird, kann dies hier entsprechend konfiguriert werden.
Zu beachten: Beim Schreiben muss das Encoding passend gesetzt werden.
Es werden alle Annotationen vom Dokument in ein Datenobjekt geschrieben.
Formatspezifischen Daten (Benutzer, Berechtigung, usw.) können anhand der FNISAnnotationWriterSettings-Klasse gesetzt werden.
FNISAnnotationWriterSettings
Konfiguration:
-
setEncoding(String)
(Default = "ISO-8859-1")Encoding der XML-Annotationsdaten. In der XML-Datei, die vom FileNet IS Archiv geliefert wird, ist als Encoding UTF-8 angegeben, die Daten sind aber in ISO-8859-1 codiert. Falls vom Archiv ein anderes Encoding verwendet wird, kann dies hier entsprechend konfiguriert werden.
-
setClientPermission(String)
(Default = "change")Client-Berechtigung, siehe FileNet IS Dokumentation.
-
setDocId(String)
(Default = "000000")ID des FileNet IS Dokuments, zu welchem die Annotationen gespeichert werden sollen.
-
setDomain(String)
(Default = "Imaging")FileNet IS Archiv Domain-ID, siehe FileNet IS Dokumentation.
-
setLibrary(String)
(Default = "DefaultIMS")FileNet IS Archiv Library-ID, siehe FileNet IS Dokumentation.
-
setOrganisation(String)
(Default = "FileNet")FileNet IS Archiv Organisation-ID, siehe FileNet IS Dokumentation.
-
setPermissionNameAppend(String)
(Default = "(ANYONE)")Berechtigung 'Append' Benutzername, siehe FileNet IS Dokumentation.
-
setPermissionNameRead(String)
(Default = "(ANYONE)")Berechtigung 'Read' Benutzername, siehe FileNet IS Dokumentation.
-
setPermissionNameWrite(String)
(Default = "(ANYONE)")Berechtigung 'Write' Benutzername, siehe FileNet IS Dokumentation.
-
setPermissionTypeAppend(String)
(Default = "user")Typ für 'Append' Berechtigung, siehe FileNet IS Dokumentation.
-
setPermissionTypeRead(String)
(Default = "user")Typ für 'Read' Berechtigung, siehe FileNet IS Dokumentation.
-
setPermissionTypeWrite(String)
(Default = "user")Typ für 'Write' Berechtigung, siehe FileNet IS Dokumentation.
-
setUseDefaultPermission(boolean)
(Default =false
)Bei geladenen Annotationen aus den Archiv wird bei der Einstellung
true
die bereits vorhandene Berechtigungsdefinition verwendet, ansonsten wird eine neue Berechtigungsdefinition mit den Angaben aus derFNISAnnotationWriterSettings
Klasse generiert.
Codebeispiel:
FNISAnnotationWriter writer = new FNISAnnotationWriter(); DefaultWriterControls controls = new DefaultWriterControls(); controls.getSettings(FNISAnnotationWriterSettings.class) .setAnnotationProfile(profile); writer.write(<<Document-Instanz>>, <<Outputstream>>, controls);
Nach dem Speichern der Annotationen im FileNet IS Archiv sollte das Dokument mit Annotationen erneut geladen werden um den aktuellen Annotationstand aus dem Archiv zu erhalten. Damit man die Dokumentdaten nicht erneut aus dem Archiv holen muss, besteht die Möglichkeit den Datenstrom aus den entsprechenden Seiten zu holen:
final Document document = <Jadice Document-Instanz> final TreeMap<Integer, InputStream> streamMap = new TreeMap<Integer, InputStream>(); for (final Page page : document.getPages()) { final PageSegmentSource source = page.getPageSegment(DocumentLayer.DEFAULT).getSource(); // Stream-Index final int streamIndex = source.getStreamIndex(); // Document-Stream final InputStream stream = source.getStream(); streamMap.put(streamIndex, stream); } // alle Seiten entfernen document.getPages().clear(); final DefaultReaderControls controls = new DefaultReaderControls(); // Für Tiff-Dokumente ohne Auflösungsdefinition muss eine Auflösung von 100 DPI // verwendet werden controls.getSettings(TIFFReaderSettings.class).setInvalidResolutionHandling(InvalidResolutionHandling.USE_DEFAULT); controls.getSettings(TIFFReaderSettings.class).setDefaultResolution(new Resolution(100)); final URL profileUrl = FNISAnnotationReader.class .getResource("/filenet-is-annotation-profile.xml"); final AnnotationProfile profile = AnnotationProfile .load(profileUrl); controls.getSettings(FNISAnnotationReaderSettings.class) .setAnnotationProfile(profile); // Dokument neu laden final Reader reader = new Reader(); // ReaderControls setzen reader.setReaderControls(controls); reader.setDocument(document); reader.setFormat(null); // Dokumentdaten neu laden for (final Integer streamIndex : streamMap.keySet()) { final InputStream stream = streamMap.get(streamIndex); reader.read(stream); } // Annos neu laden reader.setFormat(new FNISAnnotationFormat()); final DefaultReaderControls controls = new DefaultReaderControls(); controls.getSettings(FNISAnnotationReaderSettings.class).setAnnotationProfile(AnnotationProfile.getDefaultProfile()); reader.setReaderControls(controls); reader.read(<<Anno-Daten>>); reader.complete();
FNP8AnnotationReaderSettings
Konfiguration:
-
setEncoding(String)
(Default = "UTF-8")Encoding der XML-Annotationsdaten. In der XML-Datei, die vom FileNet P8 Archiv geliefert wird, ist kein Encoding definiert. Hier kann eine entsprechendes Encoding gesetzt werden.
Zu beachten: Beim Schreiben muss das Encoding passend gesetzt werden.
-
setIgnoreMissingMultiPageAttribute(boolean)
(Default =false
)Anwendungsfall: Es kann vorkommen, dass das
F_MULTIPAGETIFFPAGENUMBER
Attribut in der XML-Datei fehlt. In diesem Fall muss die Einstellung auftrue
gesetzt werden, damit der Ladevorgang korrekt funktioniert.
FileNet P8 Annotationen werden jeweils in einem eigenen Datenobjekt (XML-Format) zusammengefasst und werden einem FileNet P8 Dokument, dass aus mehreren Dokumentdatenströmen zusammengesetzt werden kann, im Archiv zugeordnet.
Beim Ladevorgang müssen Dokumente und Annotationen mit derselben Reader
Instanz geladen werden, damit die Annotationen korrekt auf den entsprechenden
Seiten positioniert werden.
Codebeispiel:
final DefaultReaderControls controls = new DefaultReaderControls(); // AnnotationCustomizer-Implementation, wird hier fürs setzen der Berechtigung benutzt final AnnotationCustomizer annotationCustomizer = new AnnotationCustomizer() { @Override public void customize(Annotation a) { // a.getPermissions().getPermissions() // .add(IndividualAnnotationPermission.DENY.CHANGE); // a.getPermissions().getPermissions() // .add(IndividualAnnotationPermission.DENY.REMOVE); // a.getPermissions().getPermissions() // .add(IndividualAnnotationPermission.DENY.SHOW); } }; controls.getSettings(FNP8AnnotationReaderSettings.class) .getAnnotationCustomizers().add(annotationCustomizer); final URL profileUrl = FNP8AnnotationReader.class .getResource("/filenet-p8-annotation-profile.xml"); final AnnotationProfile profile = AnnotationProfile .load(profileUrl); controls.getSettings(FNP8AnnotationReaderSettings.class) .setAnnotationProfile(profile); // Für Tiff-Dokumente ohne Auflösungsdefinition muss eine Auflösung von 100 DPI // verwendet werden controls.getSettings(TIFFReaderSettings.class).setInvalidResolutionHandling(InvalidResolutionHandling.USE_DEFAULT); controls.getSettings(TIFFReaderSettings.class).setDefaultResolution(new Resolution(100)); Reader reader = new Reader(); // ReaderControls setzen reader.setReaderControls(controls); // Format auf <null> setzen, d.h. das Dokument-Format wird automatisch ermittelt reader.setFormat(null); for (InputStream is : docStreams) { reader.read(is); } // FileNet P8 Annotation-Format setzen reader.setFormat(new FNP8AnnotationFormat()); for (InputStream is : annoStreams) { reader.read(is); } reader.complete();
Die Annotationsobjekte können auch zusammengefasst werden, damit der Ladevorgang mit nur einem Read-Aufruf erfolgen kann:
Reader reader = new Reader(); FNP8AnnotationInput input = new FNP8AnnotationInput(); // Vorgang für jedes Annotationsobjekt (1-n) durchführen input.add(<<Annotation-Inputstream>>); // Alle Annotationsobjekte in ein XML-Objekt schreiben ByteArrayOutputStream os = new ByteArrayOutputStream(); input.write(os); // FileNet P8 Annotation-Format setzen reader.setFormat(new FNP8AnnotationFormat()); // Annotationen mit einem Read-Aufruf laden reader.read(new ByteArrayInputStream(os.toByteArray()));
Das Speichern der FNP8 Annotation erfolgt in mehreren Schritten:
-
Alle Annotationen vom Dokument in ein Datenobjekt schreiben (Codebsp. 1)
-
Datenobjekt erneut laden um die neu angelegten / geänderten / gelöschten Annotationen ermitteln (Codebsp. 2)
-
Neu angelegte / veränderte Annotationen ins Archiv speichern, gelöschte anhand der Annotation ID aus dem Archiv entfernen, unveränderte Annotation müssen nicht gespeichert werden (siehe FileNet P8 API).
Codebeispiel 1:
FNP8AnnotationWriter writer = new FNP8AnnotationWriter(); DefaultWriterControls controls = new DefaultWriterControls(); writer.write(<<Document-Instanz>>, <<Outputstream>>, controls);
Um an die einzelnen Annotationen zu kommen und deren Zustand zu ermitteln, muss die die FNP8AnnotationOutput-Klasse verwendet werden.
Codebeispiel 2:
FNP8AnnotationOutput output = new FNP8AnnotationOutput(<<Datenobjekt-Inputstream>>); // Unveränderte Annotationen für alle Seiten org.w3c.dom.Document[] annotationsUmodified = output.getUnmodifiedAnnotations(); //Veränderte Annotationen org.w3c.dom.Document[] annotationsModified = output.getModifiedAnnotations(); //Hinzugefügte Annotationen org.w3c.dom.Document[] annotationsAdded = output.getAddedAnnotations(); //Gelöschte Annotationen org.w3c.dom.Document[] annotationsDeleted = output.getDeletedAnnotations();
Die einzelnen Annotationsobjekte sind nun verfügbar (in DOM-Struktur), jetzt müssen je nach Änderung / Zustand noch Anpassungen an den Attribute vorgenommen werden.
-
Erstell-/ Änderungsdatum anpassen, nur bei neu angelegten und geänderten Annotationen nötig:
// Aktueller Zeitstempel holen long timestamp = System.currentTimeMillis(); //Setzen des Erstelldatums (nur für neu angelegte Anntationen nötig) FNP8AnnotationXMLUtils.setEntryDate(<<Annotation>>, timestamp); //Setzen des Modifikationsdatums FNP8AnnotationXMLUtils.setModifyDate(<<Annotation>>, timestamp);
-
Annotation-ID (F_ID und F_ANNOTATEDID Attribute) zum Speichern / Löschen ermitteln:
-
Geänderte / gelöschte Annotationen besitzen bereits eine ID, diese kann aus der DOM-Struktur ermittelt werden:
String id = FNP8AnnotationXMLUtils.getAnnotationID(<<Annotation>>);
-
Neu angelegte Annotationen besitzen noch keine ID, diese muss aus dem Archiv ermittelt und gesetzt werden:
FNP8AnnotationXMLUtils.setAnnotationID(<<Annotation>>, <<Neue ID>>);
Die oben genannten ID's dann als Referenz zum Speichern der Annotation im Archiv verwenden (siehe FileNet P8 API).
-
-
Der Seitenindex der Annotation muss in der Regel nicht angepasst werden.
Wird jedoch die Dokumentstruktur verändert und ins Archiv gespeichert, muss der Annotationsseitenindex (F_PAGENUMBER und F_MULTIPAGETIFFPAGENUMBER Attribute) entsprechend angepasst werden:
// Setzen des Seitenindex für das Attribut F_PAGENUMBER (Dokument Nummer) FNP8AnnotationXMLUtils.setPageNumber(<<Annotation>>, <<Index>>); // Setzen des Seitenindex für das Attribut F_MULTIPAGETIFFPAGENUMBER (Seitennummer innerhalb des Dokuments) FNP8AnnotationXMLUtils.setMultiPageTiffPageNumber(<<Annotation>>, <<Index>>);
Die angepasste Annotation DOM-Struktur muss jetzt noch ins XML-Format geschrieben werden und kann ins Archiv gespeichert werden.
// Annotation DOM-Struktur ins XML-Format schreiben ByteArrayOutputStream os = new ByteArrayOutputStream(); FNP8AnnotationXMLUtils.write(os, <<Annotation>>); // XML-Daten in Byte-Array, ins Archiv speichern byte[] xmlAnnoData = os.toByteArray();
FNP8AnnotationWriterSettings
Konfiguration:
-
setEncoding(String)
(Default = "UTF-8")Encoding der XML-Annotationsdaten.
-
setUseUnicodeTextEncoding(boolean)
(Default =true
)Bei der Einstellung
true
werden die Textzeichen in Unicode-Schreibweise geschrieben (zum Beispiel wird "ABC" nach "004100420043" konvertiert). Bei der Einstellungfalse
werden die Textzeichen entsprechend dem Encoding direkt geschrieben.