OBS/Makros und Scripting/Allgemeines/Klassen/PDF Verarbeitung/TOBS PDF: Unterschied zwischen den Versionen

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „Method to shift your course of events with our business unit's [http://search.un.org/search?ie=utf8&site=un_org&output=xml_no_dtd&client=UN_Website_en&num=10&l…“)
 
 
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Method to shift your course of events with our business unit's [http://search.un.org/search?ie=utf8&site=un_org&output=xml_no_dtd&client=UN_Website_en&num=10&lr=lang_en&proxystylesheet=UN_Website_en&oe=utf8&q=betting&Submit=Go betting] tips<br><br>There is really one reason why you watch this at this moment, isn't it ?!?<br>YOU WANT TO WIN SOME FORTUNE !<br>YOU STOPPED ON THE APPROPRIATE LOCATIONS .<br>We are a unit of experts who have been doing this job for extra than 10 years .<br>You may see on a few Betting Websites that they are the greatest, they learned anything about fixed matches and get manipulated predictions forever and ever, but ....<br>OUR UNIT would not SPEAK ABOUT anything, our team will DISPLAY you everything. We will display you a PROOF ! Yes,a presentation that our team are not cheaters or fraudsters that only think about your cash .<br>On this site you will see our COUPONS to present you that we are betting on the exact betting tips we sell to our customers .<br>That's why our platforms are not as of the rest .<br>- Betting is a BUSINESS, even really more than profession.<br>- Our ASSOCIATES originating from every side of the planet SEND FOR MONEY to our team the tips that we offer to our [http://Www.bing.com/search?q=clients&form=MSNNWS&mkt=en-us&pq=clients clients] !<br>- This is the way how it works .<br>Through the time our business crew work with a lot of curious people that want to know about our business unit’s tips and like to buy to start getting our predictions ! <br>Firstly, a lot of them are suspicious, concerned and not so enthusiastic, but at the end they are all glad !!!<br>Our business unit are pleased  too .<br>Please just view everything here fully and make a choice .<br>Everyone have the possibility to write our team through e-mail and ask our business unit everything else you would have a intention tobecome familiar with !<br>Our services on the place for you every time of the day and the night and our services will arrange you any fact you would like to know about soccer predictions !<br>Read on our team’s Website.<br>Let’s win with mutual help !!!<br>BEST REGARDS AND LET’S HOPE THE STARS ARE ON YOUR SIDE .<br><br>Also visit my webpage :: [http://blackmarket-matches.com/ football predictions]
{{Makros und Scripting}}
=Struktur=
==Variablen==
===oPDFDoc===
Definition:
<syntaxhighlight lang="Delphi">
oPDFDoc : TgtPDFDocument;
</syntaxhighlight>
Erklärung:<br />
das geladene Dokument.<br />
==Methoden==
===Create===
Definition:
<syntaxhighlight lang="Delphi">
constructor Create(oxDB:TxDB);
</syntaxhighlight>
Erklärung:<br />
Erstellt eine Instanz für das Objekt TOBS_PDF.<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oPDF := oPDF := TOBS_PDF.Create(oDB);
</syntaxhighlight>
 
===Destroy===
Definition:
<syntaxhighlight lang="Delphi">
destructor  Destroy();
</syntaxhighlight>
Erklärung:<br />
gibt die Instanz und alle Internen Objekte für das Objekt TOBS_PDF im Speicher wieder frei.<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oPDF.Free;
</syntaxhighlight>
 
===LoadFromFile===
Definition:
<syntaxhighlight lang="Delphi">
function  LoadFromFile(const cFileName: string; cPassword:String=''):Boolean;
</syntaxhighlight>
Erklärung:<br />
Lädt die angegeben PDF-Datei ein<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oPDF.LoadFromFile('c:\MusterEinfach.pdf');
</syntaxhighlight>
 
===SaveToFile===
Definition:
<syntaxhighlight lang="Delphi">
procedure SaveToFile(const cFileName:string; lIncremental:Boolean=False; lAutoReload:Boolean=False);
</syntaxhighlight>
Erklärung:<br />
Speichert die geladene PDF-Datei unter einen neuen Namen ab.<br />
lIncremental: Speichert nur die Teile des Dokuments, die geändert wurden.<br />
lAutoReload: Lädt das gespeicherte Dokument ein.<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oPDF.SaveToFile('c:\MusterEinfach_Neu.pdf');
</syntaxhighlight>
 
===IsLoaded===
Definition:
<syntaxhighlight lang="Delphi">
function  IsLoaded():Boolean;
</syntaxhighlight>
Erklärung:<br />
prüft ob eine Datei geladen wurde.<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
if oPDF.IsLoaded() then begin
end;
</syntaxhighlight>
 
===PageCount===
Definition:
<syntaxhighlight lang="Delphi">
function  PageCount():Integer;
</syntaxhighlight>
Erklärung:<br />
gibt die Anzahl der Seiten zurück.<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
nSeiten := oPDF.PageCount();
</syntaxhighlight>
 
===PageSizeHeight===
Definition:
<syntaxhighlight lang="Delphi">
function  PageSizeHeight(nPageNo:Integer; Const cEnum:String):Double;
</syntaxhighlight>
Erklärung:<br />
gibt die Höhe der angegebenen Seiten zurück.<br />
cEnum: Einheit der Rückgabe <br />
Mögliche Werte: muPixels, muPoints, muInches, muMM, muTwips<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
nHeight := oPDF.PageSizeHeight(1, 'muMM');
</syntaxhighlight>
 
===PageSizeWidth===
Definition:
<syntaxhighlight lang="Delphi">
function  PageSizeWidth(nPageNo:Integer; Const cEnum:String):Double;
</syntaxhighlight>
Erklärung:<br />
gibt die Breite der angegebenen Seiten zurück.<br />
cEnum: Einheit der Rückgabe <br />
Mögliche Werte: muPixels, muPoints, muInches, muMM, muTwips<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
nWidth := oPDF.PageSizeWidth(1, 'muMM');
</syntaxhighlight>
 
===SetMeasurementUnit===
Definition:
<syntaxhighlight lang="Delphi">
procedure SetMeasurementUnit(cUnit:String);
</syntaxhighlight>
Erklärung:<br />
Setzt die Maßeinheit für die Verarbeitung.<br />
Mögliche Einheiten: muPixels, muPoints, muInches, muMM, muTwips<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oPDF.SetMeasurementUnit('muInches');
</syntaxhighlight>
 
===GetMeasurementUnit===
Definition:
<syntaxhighlight lang="Delphi">
function  GetMeasurementUnit():String;
</syntaxhighlight>
Erklärung:<br />
Gibt die aktuelle Maßeinheit zurück.<br />
Mögliche Einheiten: muPixels, muPoints, muInches, muMM, muTwips<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
cUnit := oPDF.GetMeasurementUnit();
</syntaxhighlight>
 
===InsertBlankPageAt===
Definition:
<syntaxhighlight lang="Delphi">
procedure InsertBlankPageAt(nPageNumber:Integer; nPageWidth:Double; nPageHeight:Double);
</syntaxhighlight>
Erklärung:<br />
Fügt eine leere Seite mit definierter Höhe und Breite an der angegeben Seite ein<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oPDF.InsertBlankPageAt(2, oPDF.PageSizeWidth(1, oPDF.GetMeasurementUnit()), oPDF.PageSizeWidth(1, oPDF.PageSizeHeight()));
</syntaxhighlight>
 
===ExtractText===
Definition:
<syntaxhighlight lang="Delphi">
function  ExtractText(const cPageRange:String; lPageBreak:Boolean):TStringList;
</syntaxhighlight>
Erklärung:<br />
liest den Text der angegeben Seiten aus.<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oStringList := oPDF.ExtractText('1-2', True);
</syntaxhighlight>
 
 
===ExtractTextFormatted===
Definition:
<syntaxhighlight lang="Delphi">
function  ExtractTextFormatted(nPageNo:Integer):TStringList;
</syntaxhighlight>
Erklärung:<br />
liest den Formatierten Text der angegeben Seite aus.<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oStringList := oPDF.ExtractTextFormatted(1);
</syntaxhighlight>
 
===AddPDFFiles===
Definition:
<syntaxhighlight lang="Delphi">
procedure AddPDFFiles(const oList:TStringList);
</syntaxhighlight>
Erklärung:<br />
Fügt in oList definierte PDF Dateien (Pfad + Dateiname) hinzu.<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oList.Add('c:\MusterEinfach_Merge.pdf')
oPDF.AddPDFFiles(oList);
</syntaxhighlight>
 
===TextOut===
Definition:
<syntaxhighlight lang="Delphi">
procedure TextOut(const cHtmlText:String; x:integer; y:Integer);
</syntaxhighlight>
Erklärung:<br />
Schreibt HTML Formatierten Text an die definierte Stelle.<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oPDF.TextOut('<B>TEST</B>', 50, 50);
</syntaxhighlight>
 
===GetPlatzhalter===
Definition:
<syntaxhighlight lang="Delphi">
function  GetPlatzhalter() : TStringList;
</syntaxhighlight>
Erklärung:<br />
gibt alle enthaltenen Platzhalter zurück.<br />
Rückgabe Format: Name + ';' + Typ + ';' + Content<br />
Typen: ftText, ftCheckBox, ftRadio, ftButton, ftSignature, ftChoice, ftListBox, ftComboBox<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oString := oPDF.GetPlatzhalter();
</syntaxhighlight>
 
===SetPlatzhalter===
Definition:
<syntaxhighlight lang="Delphi">
procedure SetPlatzhalter(cPlatzhalter: array of String; cText: array of String);
</syntaxhighlight>
Erklärung:<br />
Setzt cPlatzhalter mit definierten cText<br />
Datei muss danach gespeichert werden<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oPDF.SetPlatzhalter([Token(oString.Strings[0], ';', 1)], [Token(oString.Strings[0], ';', 3) + 'TEST']);
</syntaxhighlight>
 
===GetAnmerkung===
Definition:
<syntaxhighlight lang="Delphi">
function  GetAnmerkung(nPage: Integer) : TStringList;
</syntaxhighlight>
Erklärung:<br />
gibt alle enthaltenen Kommentare/Anmerkungen der angebenen Seite zurück.<br />
Rückgabe Format: Name + ';' + Content<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oString := oPDF.GetAnmerkung(1);
</syntaxhighlight>
 
===SetAnmerkung===
Definition:
<syntaxhighlight lang="Delphi">
procedure SetAnmerkung(nPage: Integer; cPlatzhalter: array of String; cText: array of String);
</syntaxhighlight>
Erklärung:<br />
Setzt cPlatzhalter mit definierten cText auf der anegebenen Seite<br />
Datei muss danach gespeichert werden<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oPDF.SetAnmerkung([Token(oString.Strings[0], ';', 1)], [Token(oString.Strings[0], ';', 2) + 'TEST']);
</syntaxhighlight>
 
===SetEncryption===
Definition:
<syntaxhighlight lang="Delphi">
procedure SetEncryption(const cOwnerPass:String; const cUserPass:String; const cEncryptionLevel:String; const cPermissions:String);
</syntaxhighlight>
Erklärung:<br />
Setzt die Berechtigungen<br />
cEncryptionLevel: el40bit, el128bit<br />
cPermissions: AllowCopy, AllowModify, AllowPrint, AllowAnnotation, AllowFormFill, AllowAccessibility, AllowDocAssembly, AllowHighResPrint<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oPDF.SetEncryption('123', '123', 'el128bit', 'AllowCopy, AllowModify');
</syntaxhighlight>
 
===ShowPDF===
Definition:
<syntaxhighlight lang="Delphi">
procedure ShowPDF(const cFileName:String);
</syntaxhighlight>
Erklärung:<br />
öffnet die PDF Datei<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
ShowPDF('c:\MusterEinfach_neu.pdf');
</syntaxhighlight>
 
===WaterMarkText===
Definition:
<syntaxhighlight lang="Delphi">
procedure WaterMarkText(const cText:String; const cPageRange:String; oFont:TFont);
</syntaxhighlight>
Erklärung:<br />
Schreibt ein Wasserzeichen als Text auf die angegebenen Seiten<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oFont      := TFont.Create();       
oFont.Name  := 'Times New Roman';
oFont.Size  := 40;
 
oPDF.WaterMarkText('OBS DEMO','1-9',oFont);
</syntaxhighlight>
 
===WaterMarkBitmap===
Definition:
<syntaxhighlight lang="Delphi">
procedure WaterMarkBitmap(oBitMap:TBitmap; const cPageRange:String; oFont:TFont);
</syntaxhighlight>
Erklärung:<br />
Schreibt ein Wasserzeichen als Bild auf die angegebenen Seiten<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
oBitMap := TBitmap.Create();
oBitmap.LoadFromFile('c:\Temp.bmp');
 
oFont      := TFont.Create();       
oFont.Name  := 'Times New Roman';
oFont.Size  := 40;
 
oPDF.WaterMarkText(oBitMap ,'1-9',oFont);
</syntaxhighlight>
   
===GetPDFInfo===
Definition:
<syntaxhighlight lang="Delphi">
procedure GetPDFInfo(var cTitel        : String;
                    var cAuthor      : String;
                    var cSubject      : String;
                    var cKeywords    : String;
                    var cCreator      : String;
                    var cProducer    : String;
                    var cCreationDate : String;
                    var cModDate      : String);
</syntaxhighlight>
Erklärung:<br />
Gibt Informationen über das PDF zurück<br />
Die übergebenen Variablen beinhalten dabei die Informationen<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
procedure GetPDFInfo(cTitel,
                    cAuthor,
                    cSubject,
                    cKeywords,
                    cCreator,
                    cProducer,
                    cCreationDate,
                    cModDate);
</syntaxhighlight>       
 
===SetPDFInfo===
Definition:
<syntaxhighlight lang="Delphi">
procedure SetPDFInfo(Const cTitel        : String;
                    Const cAuthor      : String;
                    Const cSubject      : String;
                    Const cKeywords    : String;
                    Const cCreator      : String;
                    Const cCreationDate : String;
                    Const cModDate      : String);
</syntaxhighlight>
Erklärung:<br />
Setzt Informationen über das PDF neu<br />
<br />
Beispiel:
<syntaxhighlight lang="Delphi">
procedure SetPDFInfo(cTitel,
                    cAuthor,
                    cSubject,
                    cKeywords,
                    cCreator,
                    cProducer,
                    cCreationDate,
                    cModDate);
</syntaxhighlight>
 
=Beispiele=
==Setzen von Platzhaltern==
<syntaxhighlight lang="Delphi">
function StartProc():Boolean;
var oPDF    : TOBS_PDF;
    cBuffer  : String;
    i        : Integer;
    oString  : TStringList;
begin
    Result := False;
    cBuffer := 'c:\MusterEinfach.pdf';
    oPDF := TOBS_PDF.Create(oDB);
 
    if oPDF.LoadFromFile(cBuffer) then begin
 
        oString := oPDF.GetPlatzhalter();
 
        for i := 0 to oString.Count-1 do begin
            DebugLine(oString.Strings[i]);
        end;
 
        oPDF.SetPlatzhalter([Token(oString.Strings[0], ';', 1)], [Token(oString.Strings[0], ';', 3) + 'TEST']);
        oPDF.SaveToFile('c:\MusterEinfachTest.pdf', False, True);
 
        MyFreeAndNil(oString);
    end;
    MyFreeAndNil(oPDF)
end;
</syntaxhighlight>
 
==Hinzufügen von Dokumenten==
<syntaxhighlight lang="Delphi">
Const In_PDF      = 'c:\OBS\TEMP\Server.pdf';        //Reine Bitmap PDF
      Out_PDF    = 'c:\OBS\TEMP\Neu_VERTRAG.pdf';    //Text PDF
      Vertrag_PDF = 'c:\OBS\TEMP\DSGVO_VERTRAG.PDF';  //Text PDF
      Water_PDF  = 'c:\OBS\TEMP\WATER_VERTRAG.PDF';  //Text PDF
      Merge_PDF  = 'c:\OBS\TEMP\Merge.PDF';          //Gemischt
      Add_PDF    = 'c:\OBS\TEMP\Add.PDF';
 
procedure StartProc();
var oPDF  : TOBS_PDF;
    oList  : TStringList;
    oOList : TStringList;
    oFont  : TFont;
    i      : Integer;
begin
    oPDF  := TOBS_PDF.Create(oDB);
    oList  := TStringList.Create();
    oOList := TStringList.Create();
    oFont  := TFont.Create();
       
    oFont.Name  := 'Times New Roman';
    oFont.Size  := 40;
    //oFont.Style := [];
         
    FErase(Add_PDF);
    FErase(Merge_PDF);
    FErase(Out_PDF);
   
    oPDF.LoadFromFile(Vertrag_PDF,'');
                                 
    DebugLine('.................Start................................');
 
    if (oPDF.IsLoaded()) then begin
   
        DebugLine('Datei '+In_PDF+' erfolgreich geladen!');
         
        oOList :=  oPDF.ExtractText('', True);
       
        for i:=0 to Min(oOList.Count-1,10) do begin
            DebugLine(zStr(i,4)+' '+oOList.Strings[i]);
        end;
         
        oPDF.WaterMarkText('OBS DEMO','',oFont);
        oPDF.WaterMarkText('OBS DEMO','1-999',NIL);
        oPDF.WaterMarkText('OBS DEMO','1-9',oFont);
       
        oPDF.SaveToFile(Out_PDF);
       
        if (IsFile(Out_PDF)) then begin
            DebugLine('Datei '+Out_PDF+' erfolgreich gespeichert!');
        end;
       
        oList.Add(In_PDF);
        oList.Add(Vertrag_PDF);
        oPDF.MergePDFFiles(oList,Merge_PDF);
       
        if (IsFile(Merge_PDF)) then begin
            DebugLine('Datei '+Merge_PDF+' erfolgreich gespeichert!');
            MyFreeAndNil(oPDF);
            oPDF.ShowPDF(Merge_PDF);
        end;     
       
    end;                         
   
    MyFreeAndNil(oPDF);
    oList.Clear();
   
    oPDF := TOBS_PDF.Create(oDB);
    oList.Add(In_PDF);
    oList.Add(Vertrag_PDF);
    oPDF.AddPDFFiles(oList);
   
    if (oPDF.IsLoaded()) then begin
   
        oPDF.SaveToFile(Add_PDF);
       
        if (IsFile(Out_PDF)) then begin
            DebugLine('Datei '+Add_PDF+' erfolgreich gespeichert!');
        end   
    end;
         
    MyFreeAndNil(oPDF);
    oList.Clear();
 
    oPDF  := TOBS_PDF.Create(oDB);
       
    DebugLine('.................End...............................');
   
    MyFreeAndNil(oPDF);
    MyFreeAndNil(oList);
    MyFreeAndNil(oFont);
end;
</syntaxhighlight>
 
==Automatisch Mail-Zuordnung==
In diesem Beispiel als Makroaufruf in einer [[OBS/Stammdaten/E-Mail/Regeln|E-Mail-Regel]].
<syntaxhighlight lang="Delphi">
function StartProc(cMailNr: String):Boolean;
var oPDF    : TOBS_PDF;
    cAnhang  : String;
    cBuffer  : String;
    i        : Integer;
    oString  : TStringList;
    cBestNr  : String;
    cTmpPfad : String;
    lFound  : Boolean;
begin
    Result  := False;
    //Anhänge ermitteln
    //Diese werden dabei in ein Temp Verzeichnis extrahiert
    cAnhang  := ExtractAnhang(oDB, '', cMailNr);
    cTmpPfad := '';
       
    //alle Anhänge durch gehen
    for i := 1 to NumToken(CRLF, cAnhang) do begin
        cBuffer := Token(Token(cAnhang, CRLF, i), ';', 1);
        if empty(cTmpPfad) then begin
            cTmpPfad := ExtractFilePath(cBuffer);
        end;
       
        if Lower(ExtractFileExt(cBuffer)) = '.pdf' then begin
           
            //PDF Datei Laden
            oPDF := TOBS_PDF.Create(oDB);
            if oPDF.LoadFromFile(cBuffer) then begin
                //Text extrahieren
                oString := oPDF.ExtractText('1-' + aStr(oPDF.PageCount), true);
               
                //Text prüfen
                if inStr('62972455', oString.Text) then begin
                    cBestNr := AllTrim(Token(Token(oString.Text, '62972455' ,2), CRLF, 1));
                    cBestNr := RightStr(cBestNr, 17);
                    cBestNr := LeftStr (cBestNr, 7);
                    lFound := False;   
                    if (not(empty(cBestNr))) and (DB_LSeek(oDB, 'BESTELL', 'a_nr = ' + DB_SQLVal(cBestNr))) then begin
                        lFound := True;   
                    end else begin           
                        lFound := False;                     
                    end;
 
                    if lFound then begin
                        //E-Mail der Bestellung zuordnen
                        AddBrief(oDB,                          //DB
                                '4',                          //Typ (4=Email)
                                DMS_TYP_BESTELLUNG,            //DMSTYP
                                INFOTYP_ANKOMMENDE_E_MAIL,    //Info-Typ //INFOTYP_ANKOMMENDE_E_MAIL,INFOTYP_ABGEHENDE_E_MAIL
                                cBestNr,                      //Referenz
                                'Automatische Zuordnung',      //Bemerkung
                                cBestNr + ' Tekno Rechnung',  //Betreff
                                '',                            //Projektnr
                                oSystem.cSachbearbeiter,      //Sachbearbeiter
                                '',                            //DokumentenID
                                cMailNr);                      //EMailNr
                       
                        //Datei Drucken     
                        TPDFUtils_PrintPDF(oDB, cBuffer, '005');
                        Result := True;
                    end;
                end;
                MyFreeAndNil(oString);               
            end;
            MyFreeAndNil(oPDF);
        end;       
    end;
 
    //Temp Verzeichnis und Inhalt wieder löschen
    sleep(5000);
    if not(empty(cTmpPfad)) and InStr('\TEMP\', cTmpPfad) then begin
        DirRemoveExt(cTmpPfad);
    end;   
end;
</syntaxhighlight>
 
==DMS Macro Funktionen==
 
<syntaxhighlight lang="Delphi">
//------------------------------------------------------------------------------
// Unit Name: Beispiel DMS
// Author:    JB
// Date:      27-Mrz-2020
//
// cDokNr           : String;
// cGruppe          : String;
// cEAN             : String;
// cVorgNr          : String;
// cDMSTyp          : String;
// cOCRText         : String;
// cRefNr           : String;
// cTitel           : String;
// cProjNr          : String;
// cPsNr            : String;
// dADatum          : TDateTime;
// oDMSBitmap       : TBitmap;
// oListDokNr      : TStringList;
// oListDokFileName : TStringList;
// oListDokArchiv  : TStringList;
//
// function  GetDokNr(const cDokNr:String):Boolean;
// function  FindVorgang(const cxDMSTyp:String; const cxVorgNr:String):Boolean;
// function  FindVorgangLike(const cxDMSTyp:String; const cxVorgNr:String):Boolean;
// function  FindGruppe(const cxGruppe:String):Boolean;
// function  LoadPreviewBMP(const cDokNr:String):Boolean;
// function  LoadFullBMP(const cDokNr:String):Boolean;
// function  SearchDokument(const cDokArt    : String;     //Durch Komma gestennt
//                          const cProjekt   : String;     //Durch Komma gestennt
//                          const cPsNr      : String;     //Durch Komma gestennt
//                          const cSBNr      : String;     //Durch Komma gestennt
//                          const cStatus    : String;     //Durch Komma gestennt
//                          const cFullText  : String;     //Durch Komma gestennt
//                                cFullField : String;     //O=OcrText,T=Titel,B=Bemerkung,M=Man-OcrText,A=AutoText;E=EAN
//                                lAndFT     : Boolean;    //Bei True And Verknüpfung beim Volltext
//                                nOriginale : integer;    //1 Keine Originale, 2 Nur Originale, Empfholen 1)
//                                nVonDat    : TDateTime;  //0 keine Suche nVonDat
//                                nBisDat    : TDateTime   //0 keine Suche nBisDat
//                          ):Boolean;
//
//                          Achtung: oListDokNr, oListDokFileName, oListDokArchiv werden bei
//                                   GetDokNr, FindVorgang, FindGruppe neu gesetzt
//                                   Werden diese Stringlisten gebraucht muss mit einem
//                                   2. TOBS_DMS Objekt gearbeitet werden!
// FindVorgang findet nur QR-Codes in DMS Vorgängen
// FindVorgangLike findet Vorgangs-Nummern und berücksichtigt die Manuellen Verknüpfungen dabei
//------------------------------------------------------------------------------
 
</syntaxhighlight>
 
'''Beispiel Scripter'''<br/>
<syntaxhighlight lang="Delphi">
procedure StartProc();
var oDMS : TOBS_DMS;
    i    : Integer;
begin
    oDMS := TOBS_DMS.Create(oDB);
    oDMS.GetDokNr('Y008N977LX');
 
    DebugLine('-------------------------------------------------------------');  
    DebugLine(' 1 Festes Dokument                                            ');  
    DebugLine('-------------------------------------------------------------');  
       
    DebugLine('cDokNr  '+oDMS.cDokNr);
    DebugLine('cGruppe '+oDMS.cGruppe);
    DebugLine('cEAN    '+oDMS.cEAN);
    DebugLine('cVorgNr '+oDMS.cVorgNr);
    DebugLine('cDMSTyp '+oDMS.cDMSTyp);
    DebugLine('cRefNr  '+oDMS.cRefNr);
    DebugLine('cTitel  '+oDMS.cTitel);
    DebugLine('cProjNr '+oDMS.cProjNr);
    DebugLine('cPsNr   '+oDMS.cPsNr);
    DebugLine('dADatum '+DToC(oDMS.dADatum));
   
    DebugLine('......................................................');
   
    for i:=0 to oDMS.oListDokNr.Count-1 do begin  
        DebugLine('Dok-Nr     '+zStr(i,3)+' '+oDMS.oListDokNr.Strings[i]);
    end;  
   
    for i:=0 to oDMS.oListDokFileName.Count-1 do begin  
        DebugLine('DateiName  '+zStr(i,3)+' '+oDMS.oListDokFileName.Strings[i]);
    end;  
   
    for i:=0 to oDMS.oListDokArchiv.Count-1 do begin  
        DebugLine('Archiv-Nr. '+zStr(i,3)+' '+oDMS.oListDokArchiv.Strings[i]);
    end;
       
    DebugLine('-------------------------------------------------------------');  
    DebugLine(' N Dokumente über Searc                                      ');  
    DebugLine('-------------------------------------------------------------');
                     
    oDMS.SearchDokument('',                 // cDokArt    Durch Komma gestennt
                        '',                 // cProjekt   Durch Komma gestennt
                        '',                 // cPsNr      Durch Komma gestennt
                        '',                 // cSBNr      Durch Komma gestennt
                        '21,22',            // cStatus    Durch Komma gestennt
                        'Stadeum, 000492',  // cFullText  Durch Komma gestennt
                        'O',                // cFullField O=OcrText,T=Titel,B=Bemerkung,M=Man-OcrText,A=AutoText;E=EAN
                        True,               // lAndFT     Bei True And Verknüpfung beim Volltext
                        1,                  // nOriginale 1 Keine Originale, 2 Nur Originale, Empfholen 1)
                        CToD('01.01.2019'), // nVonDat    0 keine Suche nVonDat
                        CToD('01.12.2020')  // nBisDat    0 keine Suche nBisDat
                        );
                       
    DebugLine('cDokNr  '+oDMS.cDokNr);
    DebugLine('cGruppe '+oDMS.cGruppe);
    DebugLine('cEAN    '+oDMS.cEAN);
    DebugLine('cVorgNr '+oDMS.cVorgNr);
    DebugLine('cDMSTyp '+oDMS.cDMSTyp);
    DebugLine('cRefNr  '+oDMS.cRefNr);
    DebugLine('cTitel  '+oDMS.cTitel);
    DebugLine('cProjNr '+oDMS.cProjNr);
    DebugLine('cPsNr   '+oDMS.cPsNr);
    DebugLine('dADatum '+DToC(oDMS.dADatum));
   
    DebugLine('......................................................');
                           
    for i:=0 to oDMS.oListDokNr.Count-1 do begin  
        DebugLine('Dok-Nr     '+zStr(i,3)+' '+oDMS.oListDokNr.Strings[i]);
    end;  
   
    for i:=0 to oDMS.oListDokFileName.Count-1 do begin  
        DebugLine('DateiName  '+zStr(i,3)+' '+oDMS.oListDokFileName.Strings[i]);
    end;  
   
    for i:=0 to oDMS.oListDokArchiv.Count-1 do begin  
        DebugLine('Archiv-Nr. '+zStr(i,3)+' '+oDMS.oListDokArchiv.Strings[i]);
    end;
   
    DebugLine('......................................................');
    DebugLine('cOCRTex '+oDMS.cOCRText);
 
    MyFreeAndNil(oDMS);
end;
</syntaxhighlight>

Aktuelle Version vom 17. Februar 2021, 16:31 Uhr


Struktur

Variablen

oPDFDoc

Definition:

oPDFDoc : TgtPDFDocument;

Erklärung:
das geladene Dokument.

Methoden

Create

Definition:

constructor Create(oxDB:TxDB);

Erklärung:
Erstellt eine Instanz für das Objekt TOBS_PDF.

Beispiel:

oPDF := oPDF := TOBS_PDF.Create(oDB);

Destroy

Definition:

destructor  Destroy();

Erklärung:
gibt die Instanz und alle Internen Objekte für das Objekt TOBS_PDF im Speicher wieder frei.

Beispiel:

oPDF.Free;

LoadFromFile

Definition:

function  LoadFromFile(const cFileName: string; cPassword:String=''):Boolean;

Erklärung:
Lädt die angegeben PDF-Datei ein

Beispiel:

oPDF.LoadFromFile('c:\MusterEinfach.pdf');

SaveToFile

Definition:

procedure SaveToFile(const cFileName:string; lIncremental:Boolean=False; lAutoReload:Boolean=False);

Erklärung:
Speichert die geladene PDF-Datei unter einen neuen Namen ab.
lIncremental: Speichert nur die Teile des Dokuments, die geändert wurden.
lAutoReload: Lädt das gespeicherte Dokument ein.

Beispiel:

oPDF.SaveToFile('c:\MusterEinfach_Neu.pdf');

IsLoaded

Definition:

function  IsLoaded():Boolean;

Erklärung:
prüft ob eine Datei geladen wurde.

Beispiel:

if oPDF.IsLoaded() then begin
end;

PageCount

Definition:

function  PageCount():Integer;

Erklärung:
gibt die Anzahl der Seiten zurück.

Beispiel:

nSeiten := oPDF.PageCount();

PageSizeHeight

Definition:

function  PageSizeHeight(nPageNo:Integer; Const cEnum:String):Double;

Erklärung:
gibt die Höhe der angegebenen Seiten zurück.
cEnum: Einheit der Rückgabe
Mögliche Werte: muPixels, muPoints, muInches, muMM, muTwips

Beispiel:

nHeight := oPDF.PageSizeHeight(1, 'muMM');

PageSizeWidth

Definition:

function  PageSizeWidth(nPageNo:Integer; Const cEnum:String):Double;

Erklärung:
gibt die Breite der angegebenen Seiten zurück.
cEnum: Einheit der Rückgabe
Mögliche Werte: muPixels, muPoints, muInches, muMM, muTwips

Beispiel:

nWidth := oPDF.PageSizeWidth(1, 'muMM');

SetMeasurementUnit

Definition:

procedure SetMeasurementUnit(cUnit:String);

Erklärung:
Setzt die Maßeinheit für die Verarbeitung.
Mögliche Einheiten: muPixels, muPoints, muInches, muMM, muTwips

Beispiel:

oPDF.SetMeasurementUnit('muInches');

GetMeasurementUnit

Definition:

function  GetMeasurementUnit():String;

Erklärung:
Gibt die aktuelle Maßeinheit zurück.
Mögliche Einheiten: muPixels, muPoints, muInches, muMM, muTwips

Beispiel:

cUnit := oPDF.GetMeasurementUnit();

InsertBlankPageAt

Definition:

procedure InsertBlankPageAt(nPageNumber:Integer; nPageWidth:Double; nPageHeight:Double);

Erklärung:
Fügt eine leere Seite mit definierter Höhe und Breite an der angegeben Seite ein

Beispiel:

oPDF.InsertBlankPageAt(2, oPDF.PageSizeWidth(1, oPDF.GetMeasurementUnit()), oPDF.PageSizeWidth(1, oPDF.PageSizeHeight()));

ExtractText

Definition:

function  ExtractText(const cPageRange:String; lPageBreak:Boolean):TStringList;

Erklärung:
liest den Text der angegeben Seiten aus.

Beispiel:

oStringList := oPDF.ExtractText('1-2', True);


ExtractTextFormatted

Definition:

function  ExtractTextFormatted(nPageNo:Integer):TStringList;

Erklärung:
liest den Formatierten Text der angegeben Seite aus.

Beispiel:

oStringList := oPDF.ExtractTextFormatted(1);

AddPDFFiles

Definition:

procedure AddPDFFiles(const oList:TStringList);

Erklärung:
Fügt in oList definierte PDF Dateien (Pfad + Dateiname) hinzu.

Beispiel:

oList.Add('c:\MusterEinfach_Merge.pdf')
oPDF.AddPDFFiles(oList);

TextOut

Definition:

procedure TextOut(const cHtmlText:String; x:integer; y:Integer);

Erklärung:
Schreibt HTML Formatierten Text an die definierte Stelle.

Beispiel:

oPDF.TextOut('<B>TEST</B>', 50, 50);

GetPlatzhalter

Definition:

function  GetPlatzhalter() : TStringList;

Erklärung:
gibt alle enthaltenen Platzhalter zurück.
Rückgabe Format: Name + ';' + Typ + ';' + Content
Typen: ftText, ftCheckBox, ftRadio, ftButton, ftSignature, ftChoice, ftListBox, ftComboBox

Beispiel:

oString := oPDF.GetPlatzhalter();

SetPlatzhalter

Definition:

procedure SetPlatzhalter(cPlatzhalter: array of String; cText: array of String);

Erklärung:
Setzt cPlatzhalter mit definierten cText
Datei muss danach gespeichert werden

Beispiel:

oPDF.SetPlatzhalter([Token(oString.Strings[0], ';', 1)], [Token(oString.Strings[0], ';', 3) + 'TEST']);

GetAnmerkung

Definition:

function  GetAnmerkung(nPage: Integer) : TStringList;

Erklärung:
gibt alle enthaltenen Kommentare/Anmerkungen der angebenen Seite zurück.
Rückgabe Format: Name + ';' + Content

Beispiel:

oString := oPDF.GetAnmerkung(1);

SetAnmerkung

Definition:

procedure SetAnmerkung(nPage: Integer; cPlatzhalter: array of String; cText: array of String);

Erklärung:
Setzt cPlatzhalter mit definierten cText auf der anegebenen Seite
Datei muss danach gespeichert werden

Beispiel:

oPDF.SetAnmerkung([Token(oString.Strings[0], ';', 1)], [Token(oString.Strings[0], ';', 2) + 'TEST']);

SetEncryption

Definition:

procedure SetEncryption(const cOwnerPass:String; const cUserPass:String; const cEncryptionLevel:String; const cPermissions:String);

Erklärung:
Setzt die Berechtigungen
cEncryptionLevel: el40bit, el128bit
cPermissions: AllowCopy, AllowModify, AllowPrint, AllowAnnotation, AllowFormFill, AllowAccessibility, AllowDocAssembly, AllowHighResPrint

Beispiel:

oPDF.SetEncryption('123', '123', 'el128bit', 'AllowCopy, AllowModify');

ShowPDF

Definition:

procedure ShowPDF(const cFileName:String);

Erklärung:
öffnet die PDF Datei

Beispiel:

ShowPDF('c:\MusterEinfach_neu.pdf');

WaterMarkText

Definition:

procedure WaterMarkText(const cText:String; const cPageRange:String; oFont:TFont);

Erklärung:
Schreibt ein Wasserzeichen als Text auf die angegebenen Seiten

Beispiel:

oFont       := TFont.Create();        
oFont.Name  := 'Times New Roman';
oFont.Size  := 40;

oPDF.WaterMarkText('OBS DEMO','1-9',oFont);

WaterMarkBitmap

Definition:

procedure WaterMarkBitmap(oBitMap:TBitmap; const cPageRange:String; oFont:TFont);

Erklärung:
Schreibt ein Wasserzeichen als Bild auf die angegebenen Seiten

Beispiel:

oBitMap := TBitmap.Create();
oBitmap.LoadFromFile('c:\Temp.bmp');

oFont       := TFont.Create();        
oFont.Name  := 'Times New Roman';
oFont.Size  := 40;

oPDF.WaterMarkText(oBitMap ,'1-9',oFont);

GetPDFInfo

Definition:

procedure GetPDFInfo(var cTitel        : String;
                     var cAuthor       : String;
                     var cSubject      : String;
                     var cKeywords     : String;
                     var cCreator      : String;
                     var cProducer     : String;
                     var cCreationDate : String;
                     var cModDate      : String);

Erklärung:
Gibt Informationen über das PDF zurück
Die übergebenen Variablen beinhalten dabei die Informationen

Beispiel:

procedure GetPDFInfo(cTitel,
                     cAuthor,
                     cSubject,
                     cKeywords,
                     cCreator,
                     cProducer,
                     cCreationDate,
                     cModDate);

SetPDFInfo

Definition:

procedure SetPDFInfo(Const cTitel        : String;
                     Const cAuthor       : String;
                     Const cSubject      : String;
                     Const cKeywords     : String;
                     Const cCreator      : String;
                     Const cCreationDate : String;
                     Const cModDate      : String);

Erklärung:
Setzt Informationen über das PDF neu

Beispiel:

procedure SetPDFInfo(cTitel,
                     cAuthor,
                     cSubject,
                     cKeywords,
                     cCreator,
                     cProducer,
                     cCreationDate,
                     cModDate);

Beispiele

Setzen von Platzhaltern

function StartProc():Boolean;
var oPDF     : TOBS_PDF;
    cBuffer  : String;
    i        : Integer;
    oString  : TStringList;
begin
    Result := False;
    cBuffer := 'c:\MusterEinfach.pdf';
    oPDF := TOBS_PDF.Create(oDB);

    if oPDF.LoadFromFile(cBuffer) then begin

        oString := oPDF.GetPlatzhalter();

        for i := 0 to oString.Count-1 do begin
            DebugLine(oString.Strings[i]);
        end;

        oPDF.SetPlatzhalter([Token(oString.Strings[0], ';', 1)], [Token(oString.Strings[0], ';', 3) + 'TEST']);
        oPDF.SaveToFile('c:\MusterEinfachTest.pdf', False, True);

        MyFreeAndNil(oString);
    end;
    MyFreeAndNil(oPDF)
end;

Hinzufügen von Dokumenten

Const In_PDF      = 'c:\OBS\TEMP\Server.pdf';         //Reine Bitmap PDF
      Out_PDF     = 'c:\OBS\TEMP\Neu_VERTRAG.pdf';    //Text PDF
      Vertrag_PDF = 'c:\OBS\TEMP\DSGVO_VERTRAG.PDF';  //Text PDF
      Water_PDF   = 'c:\OBS\TEMP\WATER_VERTRAG.PDF';  //Text PDF
      Merge_PDF   = 'c:\OBS\TEMP\Merge.PDF';          //Gemischt
      Add_PDF     = 'c:\OBS\TEMP\Add.PDF';

procedure StartProc();
var oPDF   : TOBS_PDF;
    oList  : TStringList;
    oOList : TStringList;
    oFont  : TFont;
    i      : Integer;
begin
    oPDF   := TOBS_PDF.Create(oDB);
    oList  := TStringList.Create();
    oOList := TStringList.Create();
    oFont  := TFont.Create();
         
    oFont.Name  := 'Times New Roman';
    oFont.Size  := 40;
    //oFont.Style := [];
           
    FErase(Add_PDF);
    FErase(Merge_PDF);
    FErase(Out_PDF);
    
    oPDF.LoadFromFile(Vertrag_PDF,'');
                                  
    DebugLine('.................Start................................');

    if (oPDF.IsLoaded()) then begin
    
        DebugLine('Datei '+In_PDF+' erfolgreich geladen!');
           
        oOList :=  oPDF.ExtractText('', True);
        
        for i:=0 to Min(oOList.Count-1,10) do begin
            DebugLine(zStr(i,4)+' '+oOList.Strings[i]);
        end;
          
        oPDF.WaterMarkText('OBS DEMO','',oFont);
        oPDF.WaterMarkText('OBS DEMO','1-999',NIL);
        oPDF.WaterMarkText('OBS DEMO','1-9',oFont);
        
        oPDF.SaveToFile(Out_PDF);
        
        if (IsFile(Out_PDF)) then begin
            DebugLine('Datei '+Out_PDF+' erfolgreich gespeichert!');
        end; 
        
        oList.Add(In_PDF); 
        oList.Add(Vertrag_PDF); 
        oPDF.MergePDFFiles(oList,Merge_PDF);
        
        if (IsFile(Merge_PDF)) then begin
            DebugLine('Datei '+Merge_PDF+' erfolgreich gespeichert!');
            MyFreeAndNil(oPDF);
            oPDF.ShowPDF(Merge_PDF);
        end;      
        
    end;                          
    
    MyFreeAndNil(oPDF);
    oList.Clear();
    
    oPDF := TOBS_PDF.Create(oDB); 
    oList.Add(In_PDF); 
    oList.Add(Vertrag_PDF); 
    oPDF.AddPDFFiles(oList);
    
    if (oPDF.IsLoaded()) then begin
    
        oPDF.SaveToFile(Add_PDF);
        
        if (IsFile(Out_PDF)) then begin
            DebugLine('Datei '+Add_PDF+' erfolgreich gespeichert!');
        end    
    end;
          
    MyFreeAndNil(oPDF);
    oList.Clear();

    oPDF  := TOBS_PDF.Create(oDB);
        
    DebugLine('.................End...............................');
    
    MyFreeAndNil(oPDF);
    MyFreeAndNil(oList);
    MyFreeAndNil(oFont);
end;

Automatisch Mail-Zuordnung

In diesem Beispiel als Makroaufruf in einer E-Mail-Regel.

function StartProc(cMailNr: String):Boolean;
var oPDF     : TOBS_PDF;
    cAnhang  : String;
    cBuffer  : String;
    i        : Integer;
    oString  : TStringList;
    cBestNr  : String;
    cTmpPfad : String;
    lFound   : Boolean;
begin
    Result   := False;
    //Anhänge ermitteln
    //Diese werden dabei in ein Temp Verzeichnis extrahiert 
    cAnhang  := ExtractAnhang(oDB, '', cMailNr);
    cTmpPfad := '';
        
    //alle Anhänge durch gehen
    for i := 1 to NumToken(CRLF, cAnhang) do begin
        cBuffer := Token(Token(cAnhang, CRLF, i), ';', 1);
        if empty(cTmpPfad) then begin 
            cTmpPfad := ExtractFilePath(cBuffer);
        end;
        
        if Lower(ExtractFileExt(cBuffer)) = '.pdf' then begin
            
            //PDF Datei Laden
            oPDF := TOBS_PDF.Create(oDB);
            if oPDF.LoadFromFile(cBuffer) then begin
                 //Text extrahieren
                oString := oPDF.ExtractText('1-' + aStr(oPDF.PageCount), true);
                
                //Text prüfen
                if inStr('62972455', oString.Text) then begin
                    cBestNr := AllTrim(Token(Token(oString.Text, '62972455' ,2), CRLF, 1));
                    cBestNr := RightStr(cBestNr, 17);
                    cBestNr := LeftStr (cBestNr, 7);
                    lFound := False;    
                    if (not(empty(cBestNr))) and (DB_LSeek(oDB, 'BESTELL', 'a_nr = ' + DB_SQLVal(cBestNr))) then begin
                        lFound := True;    
                    end else begin             
                        lFound := False;                       
                    end;

                    if lFound then begin
                        //E-Mail der Bestellung zuordnen
                        AddBrief(oDB,                           //DB
                                 '4',                           //Typ (4=Email)
                                 DMS_TYP_BESTELLUNG,            //DMSTYP
                                 INFOTYP_ANKOMMENDE_E_MAIL,     //Info-Typ //INFOTYP_ANKOMMENDE_E_MAIL,INFOTYP_ABGEHENDE_E_MAIL
                                 cBestNr,                       //Referenz
                                 'Automatische Zuordnung',      //Bemerkung
                                 cBestNr + ' Tekno Rechnung',   //Betreff
                                 '',                            //Projektnr
                                 oSystem.cSachbearbeiter,       //Sachbearbeiter
                                 '',                            //DokumentenID
                                 cMailNr);                      //EMailNr
                        
                        //Datei Drucken      
                        TPDFUtils_PrintPDF(oDB, cBuffer, '005');
                        Result := True;
                    end;
                end;
                MyFreeAndNil(oString);                 
            end;
            MyFreeAndNil(oPDF);
        end;        
    end;

    //Temp Verzeichnis und Inhalt wieder löschen
    sleep(5000);
    if not(empty(cTmpPfad)) and InStr('\TEMP\', cTmpPfad) then begin
        DirRemoveExt(cTmpPfad);
    end;    
end;

DMS Macro Funktionen

//------------------------------------------------------------------------------
// Unit Name: Beispiel DMS
// Author:    JB
// Date:      27-Mrz-2020
//
// cDokNr           : String;
// cGruppe          : String;
// cEAN             : String;
// cVorgNr          : String;
// cDMSTyp          : String;
// cOCRText         : String;
// cRefNr           : String;
// cTitel           : String;
// cProjNr          : String;
// cPsNr            : String;
// dADatum          : TDateTime;
// oDMSBitmap       : TBitmap;
// oListDokNr       : TStringList;
// oListDokFileName : TStringList;
// oListDokArchiv   : TStringList;
//
// function  GetDokNr(const cDokNr:String):Boolean;
// function  FindVorgang(const cxDMSTyp:String; const cxVorgNr:String):Boolean;
// function  FindVorgangLike(const cxDMSTyp:String; const cxVorgNr:String):Boolean;
// function  FindGruppe(const cxGruppe:String):Boolean;
// function  LoadPreviewBMP(const cDokNr:String):Boolean;
// function  LoadFullBMP(const cDokNr:String):Boolean;
// function  SearchDokument(const cDokArt    : String;     //Durch Komma gestennt
//                          const cProjekt   : String;     //Durch Komma gestennt
//                          const cPsNr      : String;     //Durch Komma gestennt
//                          const cSBNr      : String;     //Durch Komma gestennt
//                          const cStatus    : String;     //Durch Komma gestennt
//                          const cFullText  : String;     //Durch Komma gestennt
//                                cFullField : String;     //O=OcrText,T=Titel,B=Bemerkung,M=Man-OcrText,A=AutoText;E=EAN
//                                lAndFT     : Boolean;    //Bei True And Verknüpfung beim Volltext
//                                nOriginale : integer;    //1 Keine Originale, 2 Nur Originale, Empfholen 1)
//                                nVonDat    : TDateTime;  //0 keine Suche nVonDat
//                                nBisDat    : TDateTime   //0 keine Suche nBisDat
//                          ):Boolean;
//
//                          Achtung: oListDokNr, oListDokFileName, oListDokArchiv werden bei
//                                   GetDokNr, FindVorgang, FindGruppe neu gesetzt
//                                   Werden diese Stringlisten gebraucht muss mit einem
//                                   2. TOBS_DMS Objekt gearbeitet werden!
//						FindVorgang findet nur QR-Codes in DMS Vorgängen
//						FindVorgangLike findet Vorgangs-Nummern und berücksichtigt die Manuellen Verknüpfungen dabei
//------------------------------------------------------------------------------

Beispiel Scripter

procedure StartProc();
var oDMS : TOBS_DMS;
    i    : Integer;
begin
    oDMS := TOBS_DMS.Create(oDB);
    oDMS.GetDokNr('Y008N977LX');

    DebugLine('-------------------------------------------------------------');  
    DebugLine(' 1 Festes Dokument                                            ');  
    DebugLine('-------------------------------------------------------------');  
       
    DebugLine('cDokNr  '+oDMS.cDokNr);
    DebugLine('cGruppe '+oDMS.cGruppe);
    DebugLine('cEAN    '+oDMS.cEAN);
    DebugLine('cVorgNr '+oDMS.cVorgNr);
    DebugLine('cDMSTyp '+oDMS.cDMSTyp);
    DebugLine('cRefNr  '+oDMS.cRefNr);
    DebugLine('cTitel  '+oDMS.cTitel);
    DebugLine('cProjNr '+oDMS.cProjNr);
    DebugLine('cPsNr   '+oDMS.cPsNr);
    DebugLine('dADatum '+DToC(oDMS.dADatum));
   
    DebugLine('......................................................');
   
    for i:=0 to oDMS.oListDokNr.Count-1 do begin  
        DebugLine('Dok-Nr     '+zStr(i,3)+' '+oDMS.oListDokNr.Strings[i]);
    end;  
   
    for i:=0 to oDMS.oListDokFileName.Count-1 do begin  
        DebugLine('DateiName  '+zStr(i,3)+' '+oDMS.oListDokFileName.Strings[i]);
    end;  
   
    for i:=0 to oDMS.oListDokArchiv.Count-1 do begin  
        DebugLine('Archiv-Nr. '+zStr(i,3)+' '+oDMS.oListDokArchiv.Strings[i]);
    end;
       
    DebugLine('-------------------------------------------------------------');  
    DebugLine(' N Dokumente über Searc                                      ');  
    DebugLine('-------------------------------------------------------------');
                     
    oDMS.SearchDokument('',                 // cDokArt    Durch Komma gestennt
                        '',                 // cProjekt   Durch Komma gestennt
                        '',                 // cPsNr      Durch Komma gestennt
                        '',                 // cSBNr      Durch Komma gestennt
                        '21,22',            // cStatus    Durch Komma gestennt
                        'Stadeum, 000492',  // cFullText  Durch Komma gestennt
                        'O',                // cFullField O=OcrText,T=Titel,B=Bemerkung,M=Man-OcrText,A=AutoText;E=EAN
                        True,               // lAndFT     Bei True And Verknüpfung beim Volltext
                        1,                  // nOriginale 1 Keine Originale, 2 Nur Originale, Empfholen 1)
                        CToD('01.01.2019'), // nVonDat    0 keine Suche nVonDat
                        CToD('01.12.2020')  // nBisDat    0 keine Suche nBisDat
                        );
                       
    DebugLine('cDokNr  '+oDMS.cDokNr);
    DebugLine('cGruppe '+oDMS.cGruppe);
    DebugLine('cEAN    '+oDMS.cEAN);
    DebugLine('cVorgNr '+oDMS.cVorgNr);
    DebugLine('cDMSTyp '+oDMS.cDMSTyp);
    DebugLine('cRefNr  '+oDMS.cRefNr);
    DebugLine('cTitel  '+oDMS.cTitel);
    DebugLine('cProjNr '+oDMS.cProjNr);
    DebugLine('cPsNr   '+oDMS.cPsNr);
    DebugLine('dADatum '+DToC(oDMS.dADatum));
   
    DebugLine('......................................................');
                           
    for i:=0 to oDMS.oListDokNr.Count-1 do begin  
        DebugLine('Dok-Nr     '+zStr(i,3)+' '+oDMS.oListDokNr.Strings[i]);
    end;  
   
    for i:=0 to oDMS.oListDokFileName.Count-1 do begin  
        DebugLine('DateiName  '+zStr(i,3)+' '+oDMS.oListDokFileName.Strings[i]);
    end;  
   
    for i:=0 to oDMS.oListDokArchiv.Count-1 do begin  
        DebugLine('Archiv-Nr. '+zStr(i,3)+' '+oDMS.oListDokArchiv.Strings[i]);
    end;
   
    DebugLine('......................................................');
    DebugLine('cOCRTex '+oDMS.cOCRText);

    MyFreeAndNil(oDMS);
end;