Durchsuchbare Dokumentation aufrufen

Zurück zur Dokumentationsübersicht

agorum core compare document per JavaScript anpassen

Hinweis: Diese Dokumentation bezieht sich auf die aktuellste Version des Plug-ins. Aktualisieren Sie das hier beschriebene Plug-in, um die Dokumentation verwenden zu können.

Diese Dokumentation beschreibt, wie Sie als Entwickler etwa weitere Programme zum Vergleichen von Dokumenten per JavaScript konfigurieren.

Aufbau des JavaScripts (Script)


Das Skript, auf das Sie im Property-Entry Script verweisen, hat folgenden Aufbau:

/* global sc */

let compdocUtils = require('/agorum/roi/customers/accompdoc/js/compdoc-utils');

//
// Zwei <extension>-Dateien werden miteinander durch das Programm <Programmname> verglichen
// object1 : Die erste  <extension>-Datei
// object2 : die zweite <extension>-Datei
// callback: eine Callback-Methode kann hier übergeben werden
// 
function compare(object1, object2, callbackUrl) {

  var wscriptFile = compdocUtils.getWScriptFile();
  var strWScript = [];

  // --------------------- start Implementation ---------------------
  
  //
  // ToDo: Hier muss ihre Implementierung rein.
  //
  
  // --------------------- end Implementation ---------------------

  compdocUtils.writeWscript(wscriptFile, strWScript, callbackUrl);
  return wscriptFile;    
}



// -- interface
module.exports = {
  compare: compare
};

Wenn Sie die Unterschiede etwa per aguila-Widget anzeigen, hat das Skript folgenden Aufbau:

/* global sc */

let aguila = require('common/aguila');

//
// Zwei <extension>-Dateien werden miteinander durch das Programm <Programmname> verglichen
// object1 : Die erste  <extension>-Datei
// object2 : die zweite <extension>-Datei
// callback: eine Callback-methode kann hier übergeben werden
// 
function compare(object1, object2, callbackUrl) {


  // --------------------- start Implementation ---------------------
  
  //
  // ToDo: Hier muss ihre Implementierung rein.
  //
  
  // --------------------- end Implementation ---------------------

  return true;  // hier muss immer true stehen. Fehler müssen in diesem Skript behandelt werden 
}



// -- interface
module.exports = {
  compare: compare
};

Beispiele für weitere Vergleiche


Mit den nachfolgenden Beispielen können Sie Programme registrieren, die das System per Aufruf startet und steuert. Sie finden diese Beispiele in der MetaDB folgendermaßen:

  1. Öffnen Sie links in der Seitenleiste Administration und dann MetaDB.
  2. Öffnen Sie den Pfad:
    MAIN_MODULE_MANAGEMENT/customers/accompdoc/control/register/[ samples customer ]
    

    Hinweis: Wollen Sie diese Beispiele verwenden, kopieren Sie sie in den Pfad MAIN_MODULE_MANAGEMENT/customers/accompdoc/control/register/. Andernfalls überschreibt das System Ihre Anpassungen an den Beispielen beim nächsten Update des Plug-ins.

txt-Dateien mit PSPad vergleichen (PSPad.txt)

Diese beispielhafte Konfiguration wird mitgeliefert und verwendet folgende Einstellungen in der MetaDB.

Einstellung Wert
Script /agorum/roi/customers/accompdoc/js/sample/comdocPSPad.js
Selector [nameextension=/(txt)/i]
SupportedNameExtensions txt


Skript

/* global sc */

let compdocUtils = require('/agorum/roi/customers/accompdoc/js/compdoc-utils');

//
// Zwei txt-Dateien werden miteinander durch das Programm "PSPad.exe" verglichen
// object1 : Die erste  Word-Datei
// object2 : die zweite Word-Datei
// callback: eine Callbak-methode kann hier übergeben werden
// 
function compare(object1, object2, callbackUrl) {

  var wscriptFile = compdocUtils.getWScriptFile();
  var strWScript = [];
  
  
  // --------------------- start Implementation ---------------------
  
  var programm  = '"PSPad.exe"';  
  //var programm  = '"C:\\\\Program Files (x86)\\\\PSPad editor\\\\PSPad.exe"';  // Der Path ist dann notwendig, 
                                                                                 // wenn das Programm nur von dort gestartet werden kann
  var parameter = ' -D "' + compdocUtils.getAttachmentsFullPath([object1])[0] + '" "' + compdocUtils.getAttachmentsFullPath([object2])[0] +'"';
  
  strWScript.push('var shell = WScript.CreateObject("WScript.shell");');
  strWScript.push('try {');
  strWScript.push('  shell.run(\'' + programm + ' ' + parameter + '\' , 1, true);'); 
  strWScript.push('} catch(ex) {');
  strWScript.push('  // Fehler abfangen, damit PSPad im Fehlerfalle nicht stehen bleibt und auf jeden Fall die Dateien schließen');
  strWScript.push('}');
  
  // --------------------- end Implementation ---------------------
  
  compdocUtils.writeWscript(wscriptFile, strWScript, callbackUrl);  
  return wscriptFile;
}



// -- interface
module.exports = {
  compare: compare
};

txt-Dateien mit notepad++ vergleichen (notepad++.txt)

Diese beispielhafte Konfiguration wird mitgeliefert und verwendet folgende Einstellungen in der MetaDB.

Einstellung Wert
Script /agorum/roi/customers/accompdoc/js/sample/comdocN++.js
Selector [nameextension=/(txt)/i]
SupportedNameExtensions txt


Skript

// callback: eine Callbak-methode kann hier übergeben werden
// 
function compare(object1, object2, callbackUrl) {

  var wscriptFile = compdocUtils.getWScriptFile();
  var strWScript = [];
  
  
  // --------------------- start Implementation ---------------------
  
  var programm  = 'notepad++.exe';
  var parameter = '"' + compdocUtils.getAttachmentsFullPath([object1])[0] + '" "' + compdocUtils.getAttachmentsFullPath([object2])[0] +'"';  
  
  strWScript.push('var shell = WScript.CreateObject("WScript.shell");');
  strWScript.push('try {');
  strWScript.push('  shell.run(\'' + programm + ' ' + parameter + '\' , 1, true);'); 
  strWScript.push('} catch(ex) {');
  strWScript.push('  // Fehler abfangen, damit das Programm im Fehlerfall nicht stehen bleibt und auf jeden Fall die Dateien schließen');
  strWScript.push('  shell.Quit();');
  strWScript.push('} finally {');
  strWScript.push('  // Hier kann noch was eingebaut werden, das auf jeden Fall gemacht wird');
  //
  // Hier muss dem Programm was gesendet werden, sobald es läuft, das wird dann im finaly gemacht
  //
  strWScript.push('  var WshShell = WScript.CreateObject("WScript.Shell");');
  strWScript.push('  for (var i = 0;i < 20;i ++) {');
  strWScript.push('    WScript.Sleep(200);');
  strWScript.push('    var found = WshShell.AppActivate(\'' + compdocUtils.getAttachmentsFullPath([object2])[0] + ' - notepad++\');');
  strWScript.push('    if (found) {');
  strWScript.push('      WScript.Sleep(200);');
  // https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/sendkeys-statement
  strWScript.push('      WshShell.SendKeys("^%c"); // Ctrl-ALT-A');
  strWScript.push('      break;');
  strWScript.push('    }');
  strWScript.push('  }  ');  
  strWScript.push('}');
  
  // --------------------- end Implementation ---------------------
  
  compdocUtils.writeWscript(wscriptFile, strWScript, callbackUrl);  
  return wscriptFile;
}



// -- interface
module.exports = {
  compare: compare
};

pdf-Dateien mit Adobe Acrobat DC (Writer) vergleichen (AdobeAcrobatDC.pdf)

Klickt ein Benutzer bei diesem Vergleich auf Vergleichen, kann er vorher die Reihenfolge der Dateien ändern. Danach klickt er nochmals auf Vergleichen, um den Vergleich zu starten.

Diese beispielhafte Konfiguration wird mitgeliefert und verwendet folgende Einstellungen in der MetaDB.

Einstellung Wert
Script /agorum/roi/customers/accompdoc/js/sample/comdocAdobeAcrobatDC.js
Selector [nameextension=/(pdf)/i]
SupportedNameExtensions pdf


Skript

/* global sc */

let compdocUtils = require('/agorum/roi/customers/accompdoc/js/compdoc-utils');

//
// Zwei txt-Dateien werden miteinander durch das Programm "notepad++.exe" verglichen
// object1 : Die erste  Word-Datei
// object2 : Die zweite Word-Datei
// callback: eine Callbak-mMthode kann hier übergeben werden
// 
function compare(object1, object2, callbackUrl) {

  var wscriptFile = compdocUtils.getWScriptFile();
  var strWScript = [];
  
  
  // --------------------- start Implementation ---------------------
  
  strWScript.push('var shell = WScript.CreateObject("WScript.shell");');
  strWScript.push('try {');
  strWScript.push('  var acroApp1 = WScript.CreateObject("AcroExch.App");');
  strWScript.push('  acroApp1.Hide();');
  strWScript.push('  var acroDoc1 = WScript.CreateObject("AcroExch.AVDoc");');
  strWScript.push('  acroDoc1.Open(\'' + compdocUtils.getAttachmentsFullPath([object1])[0]  + '\',\'' + '1-' + object2.name + '\');');
  strWScript.push('  var acroApp2 = WScript.CreateObject("AcroExch.App");');
  strWScript.push('  acroApp2.Hide();');
  strWScript.push('  var acroDoc2 = WScript.CreateObject("AcroExch.AVDoc");');
  strWScript.push('  acroDoc2.Open(\'' + compdocUtils.getAttachmentsFullPath([object2])[0]  + '\',\'' + '2-' + object1.name + '\');');
  strWScript.push('  var acroApp3 = WScript.CreateObject("AcroExch.App");');
  strWScript.push('  acroApp3.Show();');
  strWScript.push('  WScript.Sleep(300);');
  strWScript.push('  var WshShell = WScript.CreateObject("WScript.Shell");');
  strWScript.push('  acroApp3.MenuItemExecute("DIGSIG:CompareDocuments");');
  strWScript.push('  var acroDoc3 = acroApp3.GetActiveDoc();');
  strWScript.push('  acroDoc1.Close(1);');
  strWScript.push('  acroApp3.Minimize(1);');
  strWScript.push('  acroApp3.Maximize(1);');  
  strWScript.push('} catch(ex) {');
  strWScript.push('  // Fehler abfangen, damit das Programm im Fehlerfall nicht stehen bleibt und auf jeden Fall die Dateien schließen');
  strWScript.push('  shell.Quit();');
  strWScript.push('} finally {');
  strWScript.push('  // Hier kann noch was eingebaut werden, das auf jeden Fall gemacht wird');
  strWScript.push('}');
  
  // --------------------- end Implementation ---------------------
  
  compdocUtils.writeWscript(wscriptFile, strWScript, callbackUrl);  
  return wscriptFile;
}



// -- interface
module.exports = {
  compare: compare
};

Allgemeiner Vergleich nach dem Inhalt des Textindex (#generalComparisonPerHtmlTextFromTextIndex.xxx)

Bei diesem Vergleich vergleicht das System den Textindex-Inhalt von 2 Dokumenten. Den Vergleich können Sie für Dokumente verwenden, für die Sie kein Programm für den Vergleich haben, oder wenn gescannte PDFs vorliegen, in der kein Text zum Vergleichen enthalten ist.

Um diesen Vergleich zu verwenden, entfernen Sie die # vor dem Konfigurationskey.

Diese beispielhafte Konfiguration wird mitgeliefert und verwendet folgende Einstellungen in der MetaDB.

Einstellung Wert
Script /agorum/roi/customers/accompdoc/js/comdocTextIndex.js
Selector [nameextension=/(pdf|xls|xlsx|ppt|pptx)/i]
SupportedNameExtensions pdf||xls||xlsx||ppt||pptx