Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht

Navigation: Dokumentationen agorum core > agorum core für Entwickler > agorum core JavaScript-API


JavaScript-Bibliothek preview/objects

Diese Bibliothek bietet Funktionen, um:

Ein Preview-Image ist die grafische Darstellung einer Seite eines Dokuments. Ein Preview-Image wird unterschieden in:

Das Master-Image hat die Größe der Dokumentseite, die es repräsentiert.

Das Thumbnail-Image ist kleiner, damit es etwa innerhalb einer Liste schnell angezeigt werden kann. 

Ein Overlay ist ein Objekt, mit dem Sie eine Notiz oder einen Stempel (eine Grafik) als Bemerkung (Annotation) an einer bestimmten Position (Seite und x- sowie y-Koordinaten auf der Seite) auf das Master-Preview-Image setzen können. Die Position wird in Pixeln, bezogen auf das Preview-Image, angegeben.

Verwendung


Diese Bibliothek binden Sie stets am Anfang eines Skripts ein:

let previewObjects = require('preview/objects');

Funktionen


create


overlay

Legt ein neues Overlay-Objekt an und verknüpfen dieses mit dem richtigen Preview des Objekts.

Das Objekt kann eine Notiz oder eine Grafik (Stempel) sein, die auf ein Dokument gesetzt wird.

let overlay = previewObjects.create('overlay', data);


data

  data = {
    // mandatory parameters
    x: 0,                                 // x coordinate in "value parameter coordinates", 
                                          // beginning from top left
    y: 0,                                 // y coordinate in "value parameter coordinates", 
                                          // beginning from top left
    page: 1,                              // page, starting with 1
    target: 'id-or-path-to-document',     // the document, to that the overlay should be added

    text: 'Text of note',                 // text of the overlay (optional, when image is set)
    image: 'id-or-path-to-image',         // image of the overlay (optional, when text is set), could be png or jpg

    // optional parameters
    coordinates: 'px',                    // coordinates x and y
                                          // 'px' in pixel
                                          // '%'  in percent  (0 - 1) e.g: 0.22343
                                          // Default: 'px'
    width: 100,                           // optional width in pixels or percent 
                                          // (if not set, it is done automatically, depending on the text)
                                          // 0 <= width <= 1  ==> in percent
                                          // width > 1        ==> in pixel
    height: 100,                          // optional height in pixels or percent
                                          // (if not set, it is done automatically, depending on the text)
                                          // 0 <= height <= 1  ==> in percent
                                          // height > 1        ==> in pixel
    depth: 0,                             // depth, default is 0. If there are several notes overlapping.
                                          // the higher the depth, the more top is the note
    background: '#FFFF00',                // background color with HEX RGB
  }


Beispiel

Das folgende Beispiel zeigt eine Notiz, die als Annotation auf ein Dokument aufgebracht wird:

let objects = require('common/objects');
let previewObjects = require('preview/objects');

let doc = objects.find('/agorum/roi/Files/Demo/Willkommen_2025.pdf');

let overlay = previewObjects.create('overlay', {
  target: doc, // agorum core document object
  x: 220,
  y: 220,
  text: 'Hier steht meine erste Notiz,\n die per JavaScript als Annotation\ngesetzt wird',
  page: 1,
});

 

Anzeige der aufgebrachten Annotation in der Vorschau

 

Nachfolgend die RGB-Werte für die im Standard angebotene Notiz, die in 24 unterschiedlichen Hintergründen als Annotation gesetzt werden kann. Mit dem kleinen Programm im Folgenden können Sie diese auf ein Dokument setzen, sodass Sie sehen, wie diese aussehen:

let objects = require('common/objects');
let previewObjects = require('preview/objects');

let doc = objects.find('/agorum/roi/Files/Demo/OCR-Testdokument.pdf');

let std = [
  {
    background: 'p#ff0000',
    text: 'rot (1)',
  },
  {
    background: '#ff9900',
    text: 'Orange (2)',
  },
  {
    background: '#99cc00',
    text: 'gr\u00FCn (3)',
  },
  {
    background: '#339966',
    text: 'gr\u00FCn (4)',
  },
  {
    background: '#33cccc',
    text: 'Blau (5)',
  },
  {
    background: '#3366ff',
    text: 'Blau (6)',
  },
  {
    background: '#800080',
    text: 'rot (7)',
  },
  {
    background: '#969696',
    text: 'grau (8)',
  },
  {
    background: '#ff00ff',
    text: 'Lila (9)',
  },
  {
    background: '#ffcc00',
    text: 'Orange (10)',
  },
  {
    background: '#ffff00',
    text: 'Gelb (11)',
  },
  {
    background: '#00ff00',
    text: 'Gr\u00FCn (12)',
  },
  {
    background: '#00ffff',
    text: 'Balu (13)',
  },
  {
    background: '#00ccff',
    text: 'Blau (14)',
  },
  {
    background: '#993366',
    text: 'Rot (15)',
  },
  {
    background: '#c0c0c0',
    text: 'Grau (16)',
  },
  {
    background: '#ff99cc',
    text: 'Lila (17)',
  },
  {
    background: '#ffcc00',
    text: 'Orange (18)',
  },
  {
    background: '#ffff99',
    text: 'Gelb (19)',
  },
  {
    background: '#ccffcc',
    text: 'Blau (20)',
  },
  {
    background: '#99ccff',
    text: 'Blau (21)',
  },
  {
    background: '#cc99ff',
    text: 'Blau (23)',
  },
  {
    background: '#ffffff',
    text: 'Weis (24)',
  },
];

let start = 100;

std.forEach(std => {
  previewObjects.create('overlay', {
    target: doc,
    x: 20,
    y: start,
    width: 300,
    background: std.background,
    text: std.text,
    page: 1,
  });
  start += 120;
});


Ergebnis

OCR-Testdokument


Beispiel für einen Stempel

Ein Stempel ist eine Grafik als png- oder als jpg-Datei:

let objects = require('common/objects');
let previewObjects = require('preview/objects');

let doc = objects.find('/agorum/roi/Files/Demo/OCR-Testdokument.pdf');

overlay = previewObjects.create('overlay', {
  target: doc,
  x: 200,
  y: 200,
  width: 256,
  image: objects.find(
    '/agorum/roi/customers/acds/deploy/pre/fs/jboss/server/default/deploy/roi.ear/roiwebui.war/acds_module/overview2/statics/icons/app-logo-128x128.png'
  ),
  page: 1,
});


Ergebnis

Auf dem Dokument ist jetzt zusätzlich links oben nur das Logo von agorum core (ohne Schriftzug) zu sehen:

OCR-Testdokument mit zusätzlichem agorum core Logo
 

update


overlay

Ändert ein Overlay-Object.

previewObjects.update('overlay', object, data);


data

data = {
    // optional parameters
    x: 0,                                 // x coordinate in "value parameter coordinates", 
                                          // beginning from top left
    y: 0,                                 // y coordinate in "value parameter coordinates", 
                                          // beginning from top left
    coordinates: 'px'                     // coordinates x and y
                                          // 'px' in pixel
                                          // '%'  in percent (0 - 1) e.g: 0.22343
                                          // Default: 'px'
    page: 1,                              // page, starting with 1
    width: 100,                           // optional width in pixels or % 
                                          // (if not set, it is done automatically, depending on the text)
                                          // 0 <= width <= 1  ==> in percent
                                          // width > 1        ==> in pixel
    height: 100,                          // optional height in pixels or %
                                          // (if not set, it is done automatically, depending on the text)
                                          // 0 <= height <= 1  ==> in percent
                                          // height > 1        ==> in pixel
    depth: 0,                             // depth, default is 0. If there are several notes overlapping.
                                          // the higher the depth, the more top is the note
    background: '#FFFF00',                // background color with HEX RGB
    text: 'Text of note',                 // text of the note,
    image: 'id-or-path-to-image',         // image of the overlay (optional, when text is set), could be png or jpg   
  }


Beispiel

previewObjects.update('overlay', object, {
  text: 'Das ist der neue Text vom Overlay'
});

load


overlay

Holt alle Overlays, die auf einem Dokument sitzen.

let overlays = previewObjects.load('overlay', object [, filter ]);


object

object = <agorum core object> von dem Sie die Overlays holen


filter (optional)

Schränkt auf bestimmte Overlays ein.

 filter = {
    type:      // Optional 'txt' or 'jpg' or 'png'
    page:      // Optional 1 od 2 ... or n
  }


Ergebnis

Sie erhalten ein Array von Overlay-Objekten mit folgendem Aufbau:

let overlays = [
    {
      overlay: overlay                      // ID of agorum core overlay object 
      name:                                 // name of agorum core overlay object
      x: 0,                                 // x coordinate in pixels, beginning from top left
      y: 0,                                 // y coordinate in pixels, beginning from top left
      page: 1,                              // page, starting with 1
      width: 100,                           // width in pixels 
      height: 100,                          // optional height in pixels
      depth: 0,                             // depth, if there are several overlapping overlays,
                                            // depth specifies the order 
      background: '#FFFF00',                // background color with HEX RGB
      text: 'Text of note',                 // text of the note
    },
    ..
    ..
  ]


Beispiele


Alle Overlays holen

let overlays = previewObjects.load('overlay', object);


Nur die Overlays von Seite 1 holen

let overlays = previewObjects.load('overlay', object, {page: 1});


Nur txt-Overlays holen

let overlays = previewObjects.load('overlay', object, {type: 'txt'});


Nur image-png-Overlays von Seite 1 holen

let overlays = previewObjects.load('overlay', object, {page: 1, type: 'png'});


image

Holt ein Preview-Image.

Wenn das Image nicht vorhanden ist, wird es den übergebenen Parametern entsprechend erstellt.


Aufruf

let imageData = previewObjects.load('image', object, data);


object

Object ist das Dokument, von dem das Image geholt wird.


data

Mit data übergeben Sie Parameter, die definieren, welches Image Sie holen wollen.

  data = {
     width: -1,        // Width in pixels
                       //  x > 0 width in pixels, if height is set to -1, height is calculated
                       //                         If height is also set, the image can be distorted
                       // Default: -1 = is not considered
     height: -1,       // Height in pixels
                       //  x > 0 height in pixels, if width is set to -1, width is calculated
                       //                       If width is also set, the image can be distorted
                       // Default: -1 = is not considered

     size: -1,         // Specified in pixels. Refers to the longer edge, 
                       //                  the shorter edge is then calculated automatically
                       // Default: -1 = is not considered
                  
                       // Rule for width, height, size:
                       //           If width or height are set, no size may be set
                       //           If size is set, no width or height may be set
                       //
                       // MasterImage: A MasterImage is an image with the original height and width of the
                       //              document page
                       //             if width, height and size are not assigned or 
                       //             are each assigned with -1, a MasterImage is created
     page: 1           // page of the document, always start at 1
                       // Default: 1
                       // If the page does not exist an exception is thrown
     
     cached: true,     // Specifies whether the image is cached.
                       // true = is stored as object
                       // false = is not stored as object
                       // Default: true

     readOnly:true,    // Specifies whether the set expiration date is increased for each viewing
                       // This means that the image is only deleted when it is no longer viewed
                       // This only has an effect if it is entered in the MetaDb that a expiration date is set.
                       // The default value is recommended here
                       // true = ExpirationDate is NOT increased when the image is viewed.
                       // false = Expiration date is increased with each viewing.
                       // Default: true
                    
     onlyCreated: true // Here you can control that the image is only fetched if it is already is created.
                       // true = The image is only fetched if it is already created. If the image is not 
                       //        created, an exception is thrown
                       // false = The image is always fetched, if it is not available, it is created
                       // Default: false
  }


Ergebnis

imageData = {
      count: 8,             // Count, how many images are there in total
      stream: { },          // contentStream of the image
      contentSize: 127861,  // contentSize of the image in bytes
      masterWidth: 1240,    // Width of the MasterImage in pixels
      masterHeight: 1754,   // Height of the MasterImage in pixel
      width: 1240,          // Width of this image
      height: 1754          // Height of this image
    };


Beispiele


Master-Image von Seite 1 holen

let objects = require('common/objects');
let previewObjects = require('preview/objects');

let object = objects.find('/agorum/roi/Files/Demo/OCR-Testdokument.pdf');

let imageData = previewObjects.load('image', object, { page: 1 });

Wenn das Image nicht vorhanden ist, wird es erzeugt und zurückgegeben.


Thumbnail von Seite 1 holen

let objects = require('common/objects');
let previewObjects = require('preview/objects');

let object = objects.find('/agorum/roi/Files/Demo/OCR-Testdokument.pdf');

let imageData = previewObjects.load('image', object, { page: 1, size: 32, cached: false });

Die lange Seite hat 32 Pixel, das Image wird nicht gespeichert.

Wenn das Image nicht vorhanden ist, wird es erzeugt und zurückgegeben.

deleteAll

Löscht für das übergebene Objekt alle bisher erzeugten Vorschaubilder (Preview images).


Aufruf

previewObjects.deleteAll(object);

 

Beispiel

let objects = require('common/objects');
let previewObjects = require('preview/objects');

let doc = objects.find('/agorum/roi/Files/Demo/Einstieg zu agorum core 2025.docx');

previewObjects.deleteAll(doc);

delete

Prüft, ob es sich bei dem übergebenen Objekt um ein Overlay-Objekt (Notiz oder Stempel) handelt, und löscht das angegebene Overlay-Objekt.


Aufruf

previewObjects.delete(object);


Beispiel

Das folgende Skript holt alle Overlay-Objekte (Notizen und Stempel) eines angegebenen Objekts und löscht diese nacheinander.

let objects = require('common/objects');
let previewObjects = require('preview/objects');

let doc = objects.find('/agorum/roi/Files/Demo/OCR-Testdokument.pdf');

let overlays = previewObjects.load('overlay', doc);

overlays.forEach(overlay => {
  previewObjects.delete(overlay.overlay);
});

pageCount

Gibt die Gesamtanzahl der Preview-Seiten für ein gegebenes Objekt zurück.

Diese Funktion stellt sicher, dass Preview-Images für das Dokument erstellt werden, falls sie noch nicht existieren.

 

Aufruf

let count = previewobjects.pageCount(object);

 

object

Das agorum core Objekt, für das die Anzahl der Preview-Seiten ermittelt werden soll.

 

Rückgabewert

Anzahl der Vorschaubilder, die für das Objekt nun vorliegen, was effektiv der Seitenzahl entspricht.

 

Beispiel

let objects = require('common/objects');
let previewObjects = require('preview/objects');

let doc = objects.find('/agorum/roi/Files/Demo/Einstieg zu agorum core 2025.docx');
let pageCount = previewObjects.pageCount(doc);

console.log('Das Dokument hat ' + pageCount + ' Seite(n)');

images

Ruft alle Preview-Images für ein gegebenes Objekt ab und erstellt sie, falls sie fehlen.

Die Funktion gibt nur Master-Images zurück (keine Thumbnails) und sortiert diese nach Seitenzahl.

 

Aufruf

let imageObjects = previewobjects.images(object);

 

object

Das agorum core Objekt, für das die Preview-Images abgerufen werden sollen.

 

Rückgabewert

Ein Array von agorum core Preview-Image-Objekten, sortiert nach Seitennummer.

 

Beispiel

let objects = require('common/objects');
let previewObjects = require('preview/objects');

let doc = objects.find('/agorum/roi/Files/Demo/Einstieg zu agorum core 2025.docx');

let images = previewObjects.images(doc);

console.log('Anzahl der Master-Images: ' + images.length);

images.forEach((img, index) => {
  console.log('Seite ' + (index + 1) + ': ' + img.name);
});

Dieses Beispiel liefert folgendes Ergebnis:

Anzahl der Master-Images: 6 
Seite 1: PREVIEWIMAGE_1488274 
Seite 2: PREVIEWIMAGE_1488262 
Seite 3: PREVIEWIMAGE_1488268 
Seite 4: PREVIEWIMAGE_1488280 
Seite 5: PREVIEWIMAGE_1488292 
Seite 6: PREVIEWIMAGE_1488286