Document Distributor Skriptbeispiele Klicken Sie hier, um diese oder andere Dokumentationen zu Lexmark Document Solutions anzuzeigen oder herunterzuladen. Oktober 2004 www.lexmark.com Ausgabe: Oktober 2004 Der folgende Abschnitt gilt nicht für Länder, in denen die nachstehenden Bestimmungen nicht mit dem geltenden Recht vereinbar sind. LEXMARK INTERNATIONAL, INC. STELLT DIESE VERÖFFENTLICHUNG OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG ZUR VERFÜGUNG, EINSCHLIESSLICH, JEDOCH NICHT BESCHRÄNKT AUF, DIE STILLSCHWEIGENDEN GEWÄHRLEISTUNGEN DER HANDELSÜBLICHKEIT UND DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. In einigen Ländern sind Ausschlüsse ausdrücklicher oder stillschweigender Gewährleistung für bestimmte Transaktionen nicht zulässig. Diese Erklärung betrifft Sie deshalb möglicherweise nicht. Diese Dokumentation enthält möglicherweise technische Ungenauigkeiten oder typographische Fehler. An den enthaltenen Informationen werden in regelmäßigen Abständen Änderungen vorgenommen. Diese Änderungen werden in späteren Ausgaben berücksichtigt. Verbesserungen oder Änderungen an den beschriebenen Produkten oder Programmen können jederzeit vorgenommen werden. Kommentare zu dieser Veröffentlichung können an folgende Adresse gerichtet werden: Lexmark International, Inc., Department F95/032-2, 740 West New Circle Road, Lexington, Kentucky 40550, USA. In Großbritannien und Irland richten Sie Ihre Kommentare an Lexmark International Ltd., Marketing and Services Department, Westhorpe House, Westhorpe, Marlow Bucks SL7 3RQ. Lexmark darf alle von Ihnen bereitgestellten Informationen in jeder von Lexmark als angemessen erachteten Weise verwenden oder verbreiten, ohne daß Lexmark daraus Verpflichtungen gegenüber Ihrer Person entstehen. In den USA können Sie unter der Telefonnummer 1-800-553-9727 zusätzliche produktbezogene Dokumentationen erwerben. In Großbritannien und Irland wählen Sie +44 (0)8704 440 044. In allen anderen Ländern wenden Sie sich bitte an Ihren Händler. Durch Bezugnahme auf bestimmte Produkte, Programme oder Dienstleistungen in der vorliegenden Dokumentation übernimmt der Hersteller keine Gewährleistung für die Verfügbarkeit dieser Produkte, Programme oder Dienstleistungen in allen Ländern seines Tätigkeitsbereichs. Die Nennung eines Produkts, eines Programms oder einer Dienstleistung besagt weder ausdrücklich noch stillschweigend, daß ausschließlich dieses Produkt, dieses Programm oder diese Dienstleistung verwendet werden kann. Andere Produkte, Programme bzw. Dienstleistungen mit vergleichbarer Funktionalität können ebenfalls verwendet werden, sofern kein Verstoß gegen das Urheberrecht vorliegt. Die Bewertung und Überprüfung des Betriebs mit anderen als den vom Hersteller ausdrücklich genannten Produkten, Programmen oder Dienstleistungen durch den Benutzer erfolgt auf eigene Verantwortung. ImageQuick, Optra, Lexmark und Lexmark mit der roten Raute sind in den USA und/oder anderen Ländern eingetragene Marken von Lexmark International, Inc. PostScript® ist eine eingetragene Marke von Adobe Systems Incorporated. Andere Marken sind Eigentum der jeweiligen Inhaber. © Copyright 2004 Lexmark International, Inc. Alle Rechte vorbehalten. RECHTE DER REGIERUNG DER VEREINIGTEN STAATEN VON AMERIKA Die im Rahmen dieser Vereinbarung zur Verfügung gestellte Software und Dokumentation ist kommerzielle Computersoftware und Dokumentation, die ausschließlich mit privaten Mitteln entwickelt wurde. Inhaltsverzeichnis Kapitel 1: Einführung .................................................................... 1 Kapitel 2: Document Distributor-Skripts ..................................... 2 Beispiel 1: Speichern in einer Datei .......................................................... 2 Beispiel 2: Drucken eines Dokuments ...................................................... 3 Beispiel 3: Aufforderungen und Senden einer E-Mail ............................... 5 Beispiel 4: Speichern von Daten in einer Datenbank ............................... 8 Beispiel 5: Trennen von Seiten mit Barcodes ......................................... 12 Beispiel 6: Aufforderungen für Fortgeschrittene I ................................... 15 Beispiel 7: Aufforderungen für Fortgeschrittene II .................................. 19 Kapitel 3: Document Producer-Skripts...................................... 23 Beispiel 8: Zusammenführen von Daten und Drucken eines Formulars 23 Beispiel 9: Zusammenführen von Daten und Faxen eines Formulars .... 25 Kapitel 4: Document Portal-Skripts ........................................... 27 Beispiel 10: Drucken eines leeren Formulars ......................................... 27 Beispiel 11: Auffordern des Benutzers und Drucken eines leeren Formulars .................................................................................... 29 Anhang A: ODBC-Einrichtung ..................................................... 31 Anhang B: FormSet-Einrichtung ................................................. 32 iii 1 Einführung Dieses Handbuch enthält Beispiele der Konstrukte und Objekte der von der Lexmark Document Solutions-Suite verwendeten Skriptsprache. Diese Beispiele befinden sich in drei Kapiteln zu den verschiedenen Komponenten der Suite. Sie können also alle Beispiele durchgehen oder sich auf die Beispiele zu Ihrer Anwendung beschränken. Alle Beispiele in diesem Handbuch sind im Lieferumfang des Workflow Composer enthalten. Sie sollten über Zugang zum Workflow Composer und zum Server Manager oder Document Portal-Administrator verfügen, so daß Sie mit diesen Skripts arbeiten können, wenn Sie die im Buch beschriebenen Aufgaben ausführen. Wenn Sie die Skripts auf den Document Server laden, werden Sie aufgefordert, alle zur Ausführung der Skripts erforderlichen umgebungsspezifischen Informationen einzugeben. Wenn beispielsweise die IP-Adresse des SMTP-Servers angegeben werden muß, wird „local.mailserver“ im Skript angezeigt. Dieser Platzhalter wird durch den von Ihnen eingegebenen Wert ersetzt. Einführung 1 2 Document Distributor-Skripts Beispiel 1: Speichern in einer Datei Übersicht: Speichern des gescannten Dokuments in einer Datei. Details: Ein Mitarbeiter muß Rechnungen mit einem MFP scannen und im lokalen Dateisystem speichern. Skript: with SaveToFile .input=original.document .Path="c:\lexmark\invoice.tif" .AppendTimestamp=TRUE .CreateDirectory=TRUE .Go() endwith So führen Sie dieses Skript aus: 1 Laden Sie es mit Hilfe des Workflow Composer oder des Server Manager auf den Server. 2 Erstellen Sie mit dem Server Manager ein Profil auf einem MFP. Hinweis: Jeder gespeicherten Datei wird ein eindeutiger Name zugewiesen, wenn Sie „AppendTimestamp“ auf TRUE setzen. Der generierte Dateiname lautet: c:\lexmark\invoice_MON_TT_JJJJ_HH_MM_SS_MS.tif Beachten Sie, daß für das gesamte Skript derselbe Zeitstempel verwendet wird. Wenn also „SaveToFile“ im selben Skript mehrere Male ausgeführt wird, wird derselbe Zeitstempel verwendet. In diesem Fall können Sie den Zeitstempel manuell erstellen, indem Sie die Eigenschaft „usertime“ des Originals verwenden und einen eindeutigen Wert anhängen. Ein Beispiel hierfür finden Sie in Beispiel 5, „Trennen von Seiten mit Barcodes“. Wenn Sie die Eigenschaft „CreateDirectory“ auf TRUE setzen, werden erforderlichenfalls die Verzeichnisse erstellt, die noch nicht vorhanden sind. Dies ist besonders nützlich, wenn der Zeitstempel selbst als Teil des Verzeichnisnamens verwendet wird. Document Distributor-Skripts 2 Beispiel 2: Drucken eines Dokuments Übersicht: Drucken eines gescannten Dokuments auf einem anderen Drucker. Details: Ein Mitarbeiter muß ein internes Fax von einem Firmenstandort an einen anderen senden. Da an jedem Standort des Unternehmens Drucker zur Verfügung stehen, die über das unternehmensweite LAN erreichbar sind, druckt dieses Skript direkt auf die Drucker, anstatt ein Fax zu senden. Dadurch werden eine qualitativ hochwertigere Ausgabe und niedrigere Telefonkosten gewährleistet. Zusätzlich wird dem Ausdruck der Zeitstempel hinzugefügt, um ihm das Aussehen eines Faxes zu verleihen. Skript: 1 Unterteilen Sie den Wert „usertime“ mit Hilfe der Methode „separate“ in einzelne Abschnitte. Erstellen Sie dann den Datenstring, der auf jeder Seite des Ausdrucks erscheint. Das Format des Strings lautet „Gesendet von IP-Adresse am Datum um Zeit“. stringarray time = original.usertime.Separate("_") string stamp = "Gesendet von " + original.userip stamp.Concatenate(" am " + time[2] + " " + time[3] + " " + time[4]) stamp.Concatenate(" um " + time[5] + ":" + time[6]) 2 Verwenden Sie die Aktion „ImageText“, um die Zeitstempelinformationen allen gesendeten Seiten an der rechten unteren Ecke hinzuzufügen. with ImageText .input=original.document .Orientation=LDD_ORIENTATION_PORTRAIT .Text=stamp .Direction=LDD_IMGTEXTDIR_HORIZONTAL .Font=LDD_IMGTEXTFONT_ARIAL .Color=LDD_IMGTEXTCOLOR_BLACK .Position=LDD_IMGTEXTPOS_BOTTOMRIGHT .AllPages=TRUE .Size=10 .Bold=TRUE .Italic=TRUE .Underline=FALSE .Go() endwith 3 Verwenden Sie die Aktion „ConvertToDocument“, um das TIFF-Bild in PostScript umzuwandeln, so daß es gedruckt werden kann. Beachten Sie, daß die Ausgabe der Aktion „ImageText“ verwendet wird, um das TIFF-Bild mit dem Zeitstempel zu erzeugen. with ConvertToDocument .input=ImageText.output .Format=LDD_DOCFORMAT_PS .AllPages=TRUE .PaperSize=LDD_PAPERSIZE_LETTER .Orientation=LDD_ORIENTATION_AUTO .Go() endwith Document Distributor-Skripts 3 4 Verwenden Sie die Aktion „PrintJob“, um die PostScript-Datei an den angegebenen Drucker zu senden. Wenn der Drucker mit einer ImageQuick-Option ausgerüstet ist, kann die TIFF-Datei direkt und ohne vorherige Konvertierung in PostScript an den Drucker gesendet werden. Die lokale Einstellung printerip mit einem auf „Text“ gesetzten „Typ“ wurde zur Verwendung innerhalb der Eigenschaft .IPAddress der Aktion „PrintJob“ definiert. Weitere Informationen finden Sie in der Hilfe zu den lokalen Einstellungen in der Workflow Composer-Anwendung. with PrintJob .input=ConvertToDocument.output .IPAddress=local.printerip .Copies=1 .SetWaitTimeout(FALSE) .PaperSource=LDD_PRINTER_DEFAULT .PaperSize=LDD_PRINTER_DEFAULT .OutputBin=LDD_PRINTER_DEFAULT .Duplex=LDD_DUPLEX_OFF .Orientation=LDD_PRINTER_DEFAULT .Nup=LDD_NUP_OFF .Collate=FALSE .Staple=FALSE .HolePunch=FALSE .TonerSaver=FALSE .SetConfidentialPrint(FALSE) .Go() endwith So führen Sie dieses Skript aus: 1 Laden Sie es mit Hilfe des Workflow Composer oder des Server Manager auf den Server. 2 Konfigurieren Sie die zu verwendende IP-Adresse des Druckers über die lokalen Einstellungen. 3 Erstellen Sie ein Profil auf einem MFP. Document Distributor-Skripts 4 Beispiel 3: Aufforderungen und Senden einer E-Mail Übersicht: Umwandeln eines Dokuments in ein Textdokument mit Hilfe der optischen Zeichenerkennung (OCR) und Senden des Dokuments an den Benutzer per E-Mail. Details: Ein Unternehmen möchte es seinen Mitarbeitern ermöglichen, Originalvorlagen einzuscannen und in eine Textdatei umzuwandeln, ohne auf jedem Firmencomputer OCR-Software installieren zu müssen. Dieses Skript fragt die Benutzer nach ihrer E-Mail-Adresse und ob sie das Dokument im RTF-Format (gängiges Format für die meisten Textverarbeitungsanwendungen) oder im PDF-Format erhalten möchten. Das Skript konvertiert das Dokument und sendet es per E-Mail an den Benutzer. Skript: 1 Dieses Skript stellt die Fragen an den Endbenutzer, die im folgenden erstellt werden. Die erste Frage ist ein Text (String-Format) und fragt nach der E-Mail-Adresse. Die zweite Frage ist eine Auswahlliste mit einer Auswahlmöglichkeit und fragt nach dem Dateiformat. stringprompt email email.SetPromptText("Geben Sie Ihre E-Mail-Adresse ein") stringprompt format with format .SetPromptText("Wählen Sie ein Dateiformat") .AddPromptOption("RTF") .AddPromptOption("PDF") endwith 2 Damit ist die Vorbereitung der Fragen abgeschlossen. Der „prompt“-Block wird jetzt verwendet, um die Fragen zu stellen. Wenn der Benutzer dieses Skript wählt, wird dieser Teil des Skripts vor dem Scanvorgang ausgeführt. Da die Antworten auf die Fragen keine Auswirkungen auf die darauffolgenden Fragen haben und nicht überprüft werden, können die Fragen in einem Schritt gestellt werden. prompt step "prompts" ask(email) ask(format) laststep endprompt 3 Sobald die Fragen gestellt wurden, wird das Dokument gescannt und genauso übermittelt wie Aufträge ohne Aufforderungen. Die Ausführung des Skripts wird an diesem Punkt fortgesetzt, wenn der Auftrag neu gestartet wird. Document Distributor-Skripts 5 4 Prüfen Sie das ausgewählte Format, und konvertieren Sie die Eingabedatei entsprechend in das PDF- bzw. RTF-Format. Die Ausgabe wird in der Variablen ocr gespeichert, so daß sie für die E-Mail-Aktion verwendet werden kann. doc ocr if (format == "PDF") with ImageToPDF .input=original.document .Language=LDD_LANG_ENGLISH .TextType=LDD_TEXTTYPE_NORMAL .Format=LDD_PDFFORMAT_IMAGEONTEXT .PictureResolution=300 .PictureQuality=75 .AllPages=TRUE .Go() ocr = .output endwith else with ImageToRTF .input=original.document .Language=LDD_LANG_ENGLISH .TextType=LDD_TEXTTYPE_NORMAL .PaperSize=LDD_PAPERSIZE_LETTER .KeepColor=TRUE .KeepPictures=TRUE .AllPages=TRUE .Go() ocr = .output endwith endif 5 Mit der Aktion „EmailSMTP“ wird die E-Mail jetzt mit der OCR-Ausgabe als Anhang gesendet. Die E-Mail-Adresse wurde vom Endbenutzer eingegeben, als der Auftrag ausgelöst wurde. Die IP-Adresse des SMTP-Servers wurde als lokale Einstellung definiert. Wenn das Skript auf den Server geladen wird, fordert der Server Manager den für diese Eigenschaft zu verwendenden Wert an. with EmailSMTP .Server=local.emailserver .To=email .From=email .Subject="Ihr gescanntes Dokument" .Message="Ihr gescanntes Dokument wurde in dem von Ihnen gewünschten Format"_ "angehängt." .CharacterSet=LDD_SMTPCHARSET_US .Attachments=ocr .Go() endwith Document Distributor-Skripts 6 So führen Sie dieses Skript aus: 1 Laden Sie es mit Hilfe des Workflow Composer oder des Server Manager auf den Server. 2 Konfigurieren Sie die SMTP-Server-Adresse über die lokalen Einstellungen. 3 Zur Verwendung dieses Skripts auf einem MFP muß dieser über einen Sensorbildschirm verfügen. Wenn dies nicht der Fall ist, wählen Sie Select 'N' Send oder Print 'N' Send. Wenn ein Sensorbildschirm vorhanden ist, erstellen Sie ein Profil, das eine Datei im TIFF-Format mit einer Auflösung von 300 dpi und einer Deckung von 4 ausgibt. Hiermit erhalten Sie optimale OCR-Ergebnisse. Hinweis: Die Aktion „EmailSMTP“ kann durch bestimmte GroupWare-Objekte wie Lotus Notes (EmailNotes), Microsoft Exchange (EmailExchange) und Novell GroupWise (GWMail) ersetzt werden. Der größte Vorteil bei der Verwendung dieser Objekte besteht darin, daß das Skript dadurch auf die speziellen Adreßbuch- und GroupWare-Funktionen dieser Objekte zugreifen kann. Der Einsatz dieser Objekte ist jedoch mit weiteren Anforderungen bei der Einrichtung verbunden. In den meisten Fällen können GroupWare-Server so konfiguriert werden, daß sie SMTP-E-Mails akzeptieren. Wenn für das Skript keine Sonderfunktionen erforderlich sind, ist die einfachere Aktion „EmailSMTP“ ausreichend. Document Distributor-Skripts 7 Beispiel 4: Speichern von Daten in einer Datenbank Übersicht: Speichern des gescannten Dokuments in einer Datenbank. Details: Eine Personalabteilung ist verantwortlich für die Verwaltung der Lebensläufe. Mit diesem Skript wird der Lebenslauf in einer Datenbank gespeichert. Außerdem wird der Lebenslauf in Text konvertiert, der ebenfalls in der Datenbank gespeichert wird. Durch das Speichern der Textdaten kann in der Datenbank nach bestimmten Stichwörtern gesucht werden, wobei eine Liste aller Lebensläufe angezeigt wird, die mit den Suchkriterien übereinstimmen. Da der Lebenslauf auch in seiner ursprünglichen Form abgelegt ist, kann er angezeigt, gedruckt oder an einen anderen Standort weitergeleitet werden. • Für Datenbanken mit Binary Large Objects (BLOBs) sollte Skript 4A verwendet werden. BLOBs werden von Datenbanken verwendet, in denen komplette Dateien gespeichert werden können. Beispiele solcher Datenbanken sind Oracle, Microsoft SQL Server und IBM DB2. • Für Datenbanken wie Microsoft Access, die BLOBs nicht unterstützen, sollte Skript 4B verwendet werden. Um dieselbe Aufgabe auszuführen, muß das Dokument im lokalen Dateisystem gespeichert werden. Der Pfad der Datei wird dann in der Datenbank gespeichert und kann später abgerufen werden. Skript 4A: 1 Konvertieren Sie das übermittelte Dokument in Text. Dieser Text wird in der Datenbank gespeichert und mit diesem Lebenslauf verknüpft, so daß er durchsucht werden kann. with ImageToText .input=original.document .Language=LDD_LANG_ENGLISH .TextType=LDD_TEXTTYPE_NORMAL .OneLine=TRUE .SeparateParagraphs=TRUE .PageBreaks=FALSE .AppendEOF=FALSE .AllPages=TRUE .Go() endwith 2 Lesen Sie den mit Hilfe der Aktion „ImageToText“ generierten Text mit dem Objekt „textfile“ ein, und speichern Sie ihn in einem String. textfile tf string ocrText tf.Open(ImageToText.output) ocrText = tf.Read(tf.Size()) tf.Close() Document Distributor-Skripts 8 3 Fügen Sie den Lebenslauf zusammen mit dem Text in die Datenbank ein, so daß er später abgerufen werden kann. Die Eigenschaften für die Informationen in der Datenbank werden über die lokalen Einstellungen konfiguriert, wenn das Skript auf den Server geladen wird. with ODBCWrite .DataSource=local.DataSource .TableName=local.TableName .LogonName=local.LogonName .LogonPassword=local.LogonPassword .AssignValue("ScanDate","") .AssignValue("OCRText",ocrText) .AssignValue("Resume",original.document) .Go() endwith So führen Sie dieses Skript aus: 1 Richten Sie auf dem Server die zu verwendende Datenbank ein. Die Dateien „LDDOracleTable.sql“ und „LDDSQLServerTable.sql“ dienen zur Erstellung der Beispieltabellen in Oracle und Microsoft SQL Server. Diese Dateien befinden sich in dem mit Workflow Composer zusammen installierten Verzeichnis mit Beispielskripts. Konfigurieren Sie nach Einrichtung der Datenbank die ODBC-Verbindung. Weitere Informationen hierzu finden Sie in Anhang A: ODBC-Einrichtung. 2 Laden Sie es mit Hilfe des Workflow Composer oder des Server Manager auf den Server. 3 Konfigurieren Sie die ODBC-Verbindungsdaten über die lokalen Einstellungen. 4 Erstellen Sie ein Profil auf einem MFP. Document Distributor-Skripts 9 Skript 4B: 1 Konvertieren Sie das übermittelte Dokument in Text. Dieser Text wird in der Datenbank gespeichert und mit diesem Lebenslauf verknüpft, so daß er durchsucht werden kann. with ImageToText .input=original.document .Language=LDD_LANG_ENGLISH .TextType=LDD_TEXTTYPE_NORMAL .OneLine=TRUE .SeparateParagraphs=TRUE .PageBreaks=FALSE .AppendEOF=FALSE .AllPages=TRUE .Go() endwith 2 Lesen Sie den mit Hilfe der Aktion „ImageToText“ generierten Text mit dem Objekt „textfile“ ein, und speichern Sie ihn in einem String. textfile tf string ocrText tf.Open(ImageToText.output) ocrText = tf.Read(tf.Size()) tf.Close() 3 Legen Sie den Pfad fest, unter dem die Datei gespeichert werden soll. Die Datei wird im lokalen Dateisystem im Verzeichnis c:\lexmark gespeichert. Der Dateiname lautet resume_timestamp.tif. string filepath = "c:\lexmark\resume" + original.usertime + ".tif" 4 Da das Dokument selbst nicht in die Datenbank eingefügt werden kann, speichern Sie es im lokalen Dateisystem. „AppendTimestamp“ wird auf FALSE gesetzt, da der Zeitstempel im vorhergehenden Schritt manuell hinzugefügt wurde. „CreateDirectory“ wird auf TRUE gesetzt, so daß c:\lexmark erforderlichenfalls automatisch erstellt wird. with SaveToFile .input=original.document .AppendTimestamp=FALSE .Overwrite=FALSE .Path=filepath .CreateDirectory=TRUE .Go() endwith Document Distributor-Skripts 10 5 Geben Sie den Dateinamen mit dem Text in die Datenbank ein, so daß er später abgerufen werden kann. Die Eigenschaften für die Informationen in der Datenbank werden über die lokalen Einstellungen konfiguriert, wenn das Skript auf den Server geladen wird. with ODBCWrite .DataSource=local.DataSource .TableName=local.TableName .LogonName=local.LogonName .LogonPassword=local.LogonPassword .AssignValue("ScanDate","") .AssignValue("OCRText",ocrText) .AssignValue("ResumeFile",filepath) .Go() endwith So führen Sie dieses Skript aus: 1 Richten Sie auf dem Server die zu verwendende Datenbank ein. Die Microsoft Access-Datenbank „resumes.mdb“ wird für dieses Beispiel bereitgestellt. Diese Datei befindet sich in dem mit Workflow Composer installierten Verzeichnis mit Beispielskripts. Konfigurieren Sie die ODBC-Verbindung mit der von Ihnen eingerichteten oder der zur Verfügung gestellten Datenbank. Weitere Informationen hierzu finden Sie in Anhang A. 2 Laden Sie es mit Hilfe des Workflow Composer oder des Server Manager auf den Server. 3 Konfigurieren Sie die ODBC-Verbindungsdaten über die lokalen Einstellungen. 4 Erstellen Sie ein Profil auf einem MFP. Document Distributor-Skripts 11 Beispiel 5: Trennen von Seiten mit Barcodes Übersicht: Verwenden einer Barcode-Trennseite zum Unterteilen von Aufträgen verschiedener Länge in separate Dateien. Details: Ein Mitarbeiter muß mehrere Dokumentensätze scannen und verarbeiten. Er könnte jeden Satz einzeln scannen, es ist jedoch einfacher (und empfehlenswerter), alle ohne Unterbrechung zu scannen. Dies wird durch die Verwendung einer Barcode-Trennseite ermöglicht, die den Anfang eines neuen Satzes kennzeichnet. Bei Verwendung der Trennseite kann jeder Satz beliebig viele Seiten umfassen. Dieses Skript sucht auf jeder Seite des gescannten Dokuments nach einem Barcode. Wenn es einen Barcode erkennt, kennzeichnet es das Ende des vorhergehenden Satzes, der in einer Datei gespeichert wird, sowie den Anfang eines neuen Satzes. Skript: 1 Geben Sie alle in diesem Skript verwendeten Variablen an (Variablendeklaration). doc separated int i, startpage, lastpage bool found string fullpath, bcode 2 Unterteilen Sie das gescannte Dokument so, daß sich jede Seite in einer einzelnen Datei befindet. Dies ist erforderlich, damit jede Gruppe von Seiten, aus der ein Satz besteht, später in einer einzelnen Datei zusammengefaßt werden kann. with ImageSeparate .input=original.document .AllPages=TRUE .Go() .separated = .output endwith 3 Verwenden Sie die Variable „startpage“ zur Kennzeichnung der ersten Seite des aktuellen Satzes. Initialisieren Sie die Variable für die erste Seite des gescannten Satzes. startpage = 1 4 Durchlaufen Sie mit einer „loop“-Schleife alle übertragenen Seiten. loop i from 1 to separated.GetNumberFiles() 5 Die Variable „found“ kennzeichnet, daß eine neue Gruppe von Seiten gespeichert werden kann. Setzen Sie die Variable vor der Verarbeitung der einzelnen Seiten immer zurück. found = false Document Distributor-Skripts 12 6 Verwenden Sie die Aktion „BarcodeRead“, um festzustellen, ob sich ein Barcode auf dieser Seite befindet. with BarcodeRead .Reset() .Input=separated.GetFile(i) .Type=LDD_BARCODE_CODE128 .Direction=LDD_BCDIR_HORIZ .Quality=LDD_BCQUALITY_GOOD .Fixed=FALSE .Validate=TRUE .Length=0 .PageNumber=1 .WholePage=TRUE .Go() bcode = .Results endwith 7 Bei diesem Beispiel (und der bereitgestellten Beispieldatei) stellt der Barcode das Wort „BREAK“ dar. Überprüfen Sie, ob es auf dieser Seite gefunden wurde. if (bcode.Contains("BREAK")) then 8 Es wurde ein Barcode gefunden. Wenn die aktuelle Seite die Startseite ist (wenn beispielsweise die Variable „startpage“ auf 1 gesetzt ist und die erste Seite des gescannten Dokuments eine Trennseite ist), braucht keine Seite gespeichert zu werden. In diesem Fall ist die Startseite des nächsten Satzes die nächste Seite. Anderenfalls wird die vorherige Seite als letzte Seite des aktuellen Satzes definiert. (Die Startseite oder letzte Seite darf nicht mit der Trennseite gleichgesetzt werden, da sonst die Trennseite selbst ebenfalls gespeichert wird.) Kennzeichnen Sie mit Hilfe des Flags „found“, daß ein Satz mit Seiten gespeichert werden muß. if (startpage == i) startpage = i + 1 else lastpage = i - 1 found = true endif 9 Es wurde kein Barcode gefunden. Überprüfen Sie, ob dies die letzte Seite des übermittelten Dokuments ist. Wenn dies der Fall ist, muß es die letzte Seite des aktuellen Satzes sein. Weisen Sie „lastpage“ die aktuelle Seite zu, und kennzeichnen Sie mit Hilfe des Flags „found“, daß ein Satz mit Seiten gespeichert werden muß. else if (i == separated.GetNumberFiles()) then lastpage = i found = true endif endif Document Distributor-Skripts 13 10 Wenn ein neuer Satz mit Seiten gefunden wurde, müssen diese gespeichert werden. if (found == true) then 11 Mit der Aktion „ImageCombine“ fassen Sie den Satz von Seiten zu einem Dokument zusammen. with ImageCombine .input=separated.GetFileRange(startpage, lastpage) .Format=LDD_IMGFORMAT_TIFG4 .ColorDepth=LDD_IMGDEPTH_BW .Go() endwith 12 Legen Sie den Namen der Datei zur Speicherung des neuen Dokuments fest. Die Sätze werden im Verzeichnis c:\lexmark gespeichert. Der Dateiname lautet set_timestamp_page.tif. Da alle in einem Auftrag gespeicherten Dateien denselben Zeitstempel aufweisen, wird die Nummer der letzten Seite des Satzes hinzugefügt, um einen eindeutigen Dateinamen zu erhalten. fullpath = "c:\lexmark\set" + original.usertime + "_" + _ lastpage.AsString() + ".tif" 13 Speichern Sie das neue Dokument auf der Festplatte. „AppendTimestamp“ wird auf FALSE gesetzt, da der Zeitstempel im vorhergehenden Schritt manuell hinzugefügt wurde. „CreateDirectory“ wird auf TRUE gesetzt, so daß erforderlichenfalls das Verzeichnis c:\lexmark erstellt wird. with SaveToFile .input = ImageCombine.output .Path=fullpath .AppendTimestamp=FALSE .Overwrite=FALSE .Go() endwith 14 Der aktuelle Satz ist nun gespeichert. Geben Sie an, daß die Startseite des nächsten Satzes die nächste Seite im Dokument sein soll. Setzen Sie „startpage“ nicht auf die aktuelle Seite, da sonst die Trennseite als Teil des gespeicherten Dokuments im nächsten Satz enthalten ist. startpage = i + 1; endif endloop So führen Sie dieses Skript aus: 1 Laden Sie es mit Hilfe des Workflow Composer oder des Server Manager auf den Server. 2 Erstellen Sie auf einem MFP ein Profil, das eine Datei im TIFF-Format mit einer Auflösung von 300 dpi und einer Deckung von 3 oder 4 ausgibt. 3 Die Datei (fullset.tif) befindet sich in dem mit Workflow Composer zusammen installierten Verzeichnis mit Beispielskripts. Diese Datei kann gedruckt oder gescannt oder mit Select 'N' Send übermittelt werden. Bei diesem Skript werden drei Dateien mit drei, zwei und vier Seiten ausgegeben. Document Distributor-Skripts 14 Beispiel 6: Aufforderungen für Fortgeschrittene I Übersicht: Verwenden der Antworten auf Aufforderungsfragen, um die nächste Frage festzulegen. Details: Dieses Skript ermöglicht es dem Benutzer, ein Dokument zu scannen und das Original bzw. eine bearbeitbare Version hiervon per E-Mail zu senden. Dies ist die Erweiterung des Skripts in Beispiel 3, Aufforderungen und Senden einer E-Mail. Der Benutzer wird nach einer E-Mail-Adresse gefragt, an die das Dokument gesendet werden kann, und anschließend aufgefordert anzugeben, ob er das Dokument mit Hilfe von OCR in ein Textdokument umwandeln möchte. Basierend auf der daraus resultierenden Antwort folgt dann die Frage nach dem geeigneten Format. Obwohl dies ein einfaches Skript ist, verdeutlicht es die Wirkung der Aufforderungen und wie die Antwort auf eine Frage als Auslöser für die nächste Frage verwendet werden kann. Skript: 1 Dieses Skript enthält die Fragen an den Endbenutzer, die im folgenden erstellt werden. Die erste Frage ist ein Text (String-Format) und fragt nach der E-Mail-Adresse. Die zweite Frage ist eine boolesche Aufforderung. Der Benutzer gibt an, ob das Dokument in ein Textdokument umgewandelt werden soll; anderenfalls wird es als Bild gesendet. stringprompt email email.SetPromptText("E-Mail-Adresse zum Senden des Dokuments") boolprompt ocr ocr.SetPromptText("Klicken Sie, um das Dokument in ein Textdokument umzuwandeln.") 2 Wenn der Benutzer OCR wählt, wird diese Frage verwendet. Sie besteht aus einer Auswahlliste mit einer Auswahlmöglichkeit zur Auswahl des Formats des OCR-Dokuments. stringprompt ocrformat with ocrformat .SetPromptText("Wählen Sie ein OCR-Format") .AddPromptOption("RTF") .AddPromptOption("PDF (Durchsuchbar)") endwith 3 Wenn der Benutzer nicht OCR wählt, wird diese Frage verwendet. Sie besteht aus einer Auswahlliste mit einer Auswahlmöglichkeit zur Auswahl des Formats des Bilddokuments. stringprompt imgformat with imgformat .SetPromptText("Wählen Sie ein Bildformat") .AddPromptOption("TIFF") .AddPromptOption("PDF (Nicht durchsuchbar)") endwith 4 Damit ist die Vorbereitung der Fragen abgeschlossen. Der „prompt“-Block wird jetzt verwendet, um die Fragen zu stellen. Wenn der Benutzer dieses Skript wählt, wird der Teil des Skripts mit den Aufforderungen vor dem Scanvorgang ausgeführt. Da die nächsten Fragen von den jeweiligen Antworten auf die vorherigen Fragen abhängen, werden mehrere Schritte verwendet. prompt Document Distributor-Skripts 15 5 Dieser Schritt enthält zwei Fragen: die Frage nach der E-Mail-Adresse und die Frage, ob das Dokument in ein Textdokument umgewandelt werden soll. Diese beiden Fragen können in einem Schritt gestellt werden, da sie unabhängig voneinander sind. Der als Antwort auf die OCR-Frage zurückgegebene Wert wird überprüft. Wenn OCR gewählt wurde, lautet die nächste auszuführende Frage oformat; anderenfalls ist der nächste Schritt iformat. Jeder Schritt muß die Direktive „nextstep“ oder „laststep“ enthalten. step "email" ask(email) ask(ocr) if (ocr == TRUE) nextstep "oformat" else nextstep "iformat" endif 6 Dieser Schritt wird ausgeführt, wenn der Benutzer OCR wählt. Der Benutzer wird aufgefordert, das Format für das OCR-Dokument zu wählen. Da dies die letzte Frage in diesem Pfad ist, wird hier die Direktive „laststep“ verwendet. step "oformat" ask(ocrformat) laststep 7 Dieser Schritt wird ausgeführt, wenn der Benutzer nicht OCR wählt. Der Benutzer wird aufgefordert, das Format für das Bild zu wählen. Da dies die letzte Frage in diesem Pfad ist, wird hier die Direktive „laststep“ verwendet. step "iformat" ask(imgformat) laststep endprompt 8 Sobald die Fragen gestellt wurden, wird das Dokument gescannt und genauso übermittelt wie Aufträge ohne Aufforderungen. Die Ausführung des Skripts wird an diesem Punkt fortgesetzt, wenn der Auftrag neu gestartet wird. Überprüfen Sie die Aufforderung ocr, um zu sehen, ob der Benutzer das Dokument in ein Textdokument umwandeln möchte. doc attach if (ocr == TRUE) Document Distributor-Skripts 16 9 Der Benutzer möchte das Dokument in ein Textdokument umwandeln. Überprüfen Sie, welches Format gewünscht ist, und führen Sie die Konvertierung durch. Speichern Sie die Ausgabe der Konvertierung in der Variablen „attach“. if (ocrformat == "RTF") with ImageToRTF .input=original.document .Language=LDD_LANG_ENGLISH .TextType=LDD_TEXTTYPE_NORMAL .PaperSize=LDD_PAPERSIZE_LETTER .KeepColor=TRUE .KeepPictures=TRUE .AllPages=TRUE .Go() attach =.output endwith else with ImageToPDF .input=original.document .Language=LDD_LANG_ENGLISH .TextType=LDD_TEXTTYPE_NORMAL .Format=LDD_PDFFORMAT_IMAGEONTEXT .PictureResolution=72 .PictureQuality=50 .AllPages=TRUE .Go() attach =.output endwith endif 10 Der Benutzer möchte das Dokument nicht in ein Textdokument umwandeln. Überprüfen Sie, welches Bildformat gewünscht ist, und führen Sie gegebenenfalls die Konvertierung durch. Da das Dokument als TIFF gescannt wurde, ist bei Auswahl dieses Formats keine Konvertierung erforderlich. Speichern Sie die Ausgabe der Konvertierung in der Variable „attach“. else if (imgformat == "TIFF") attach = original.document else with ConvertToDocument .input=original.document .Format=LDD_DOCFORMAT_PDF .AllPages=TRUE .PaperSize=LDD_PAPERSIZE_LETTER .Orientation=LDD_ORIENTATION_AUTO .Go() attach =.output endwith endif endif Document Distributor-Skripts 17 11 Die Aktion „EmailSMTP“ wird nun verwendet, um die E-Mail mit der gewählten Ausgabe als Anhang zu senden. Die E-Mail-Adresse wurde vom Endbenutzer eingegeben, als der Auftrag ausgelöst wurde. Die IP-Adresse des SMTP-Servers wurde als lokale Einstellung definiert. Wenn das Skript auf den Server geladen wird, fordert der Server Manager den Wert für diese Eigenschaft an. with EmailSMTP .Server=local.emailserver .To=email .cc="" .bcc="" .From=email .ReplyTo="" .Sender="" .Subject="Gescanntes Dokument" .Message="Anbei Ihr gescanntes Dokument/Ihre gescannten Dokumente" .CharacterSet=LDD_SMTPCHARSET_US .Attachments=attach .Go() endwith So führen Sie dieses Skript aus: 1 Laden Sie es mit Hilfe des Workflow Composer oder des Server Manager auf den Server. 2 Konfigurieren Sie die SMTP-Server-Adresse über die lokalen Einstellungen. 3 Zur Verwendung dieses Skripts auf einem MFP muß dieser über einen Sensorbildschirm verfügen. Wenn dies nicht der Fall ist, wählen Sie Select 'N' Send oder Print 'N' Send. Wenn ein Sensorbildschirm vorhanden ist, erstellen Sie ein Profil, das eine Datei im TIFF-Format mit einer Auflösung von 300 dpi und einer Deckung von 4 ausgibt. Hiermit erhalten Sie optimale OCR-Ergebnisse. Document Distributor-Skripts 18 Beispiel 7: Aufforderungen für Fortgeschrittene II Übersicht: Überprüfung von Daten bei der Beantwortung von dynamischen Aufforderungen durch den Endbenutzer. Details: Ein Mitarbeiter muß Dokumente scannen, möchte diese aber anhand der Filiale, für die die Dokumente bestimmt sind, sowie anhand der Abteilungen dieser Filiale trennen. Dieses Skript fragt nach der Nummer der Filiale. Wenn die Nummer gültig ist, wird eine Liste der Abteilungen dieser Filiale angezeigt. Anderenfalls erscheint eine Fehlermeldung, und der Benutzer wird erneut zur Eingabe der Nummer der Filiale aufgefordert. Wenn alle erforderlichen Informationen eingegeben wurden, wird das Dokument gescannt und unter dem entsprechenden Pfad im lokalen Dateisystem gespeichert. Skript: 1 Dieses Skript enthält die Fragen an den Endbenutzer, die im folgenden erstellt werden. Die erste Aufforderung fragt nach einer Ganzzahl, die der Nummer der Filiale entsprechen muß. Die zweite Aufforderung besteht aus einer Fehlermeldung, die angezeigt wird, wenn keine gültige Nummer eingegeben wurde. Die dritte Aufforderung wird hier deklariert, jedoch erst nach der Beantwortung der Frage erstellt. Alle im „prompt“-Block verwendeten Aufforderungen und Variablen müssen angegeben werden, bevor der „prompt“-Block eingegeben wird. intprompt store store.SetPromptText("Geben Sie die Filialnummer ein:") messageprompt errmsg errmsg.SetPromptText("Ungültige Filialnummer; geben Sie eine neue Nummer ein.") stringprompt dept string storename, item 2 Einige Fragen wurden vorbereitet und andere nur deklariert. Der „prompt“-Block wird jetzt verwendet, um die Fragen zu stellen. Wenn der Benutzer dieses Skript wählt, wird dieser Teil des Skripts vor dem Scanvorgang ausgeführt. Da die Antworten überprüft werden und andere Fragen bedingen, werden mehrere Schritte verwendet. prompt Document Distributor-Skripts 19 3 Dieser Schritt enthält eine Frage: die Frage nach der Nummer der Filiale. Nach Angabe der Nummer wird in der Datenbank überprüft, ob es sich um eine gültige Filialnummer handelt. Wenn dies der Fall ist, wird der Name der Filiale aus der Datenbank abgerufen, und „nextstep“ wird auf dept gesetzt. Wenn die Nummer ungültig ist, wird „nextstep“ auf error gesetzt. step "storenum" ask(store) with ODBCRead .Reset() .DataSource=local.DataSource .TableName="Filialen" .LogonName=local.LogonName .LogonPassword=local.LogonPassword .DataColumns="StoreName" .WhereClause="StoreNumber=" + store.AsString() .Go() if (.GetNextRow()) then storename = .GetString("StoreName") nextstep "dept" else nextstep "error" endif .Finished() endwith 4 Dieser Schritt wird ausgeführt, wenn die angegebene Filialnummer ungültig ist. Es wird eine Fehlermeldung angezeigt, und der Benutzer wird zur erneuten Eingabe aufgefordert. Der Benutzer bestätigt die Meldung, woraufhin „nextstep“ auf storenum gesetzt wird, d. h. die erste Frage wird erneut gestellt. step "error" ask(errmsg) nextstep "storenum" 5 Dieser Schritt wird ausgeführt, wenn eine gültige Filialnummer eingegeben wurde. Der Aufforderungstext wird hier festgelegt, so daß er den Namen der ausgewählten Filiale enthalten kann. Die gültigen Abteilungen für diese Filiale werden daraufhin aus der Datenbank abgerufen. step "dept" dept.SetPromptText("Wählen Sie die Abteilung in " + storename) with ODBCRead .Reset() .DataSource=local.DataSource .TableName="Abteilungen" .LogonName=local.LogonName .LogonPassword=local.LogonPassword .DataColumns="Abteilung" .WhereClause="StoreNumber=" + store.AsString() .Go() Document Distributor-Skripts 20 6 Jede Abteilung wird der Auswahlliste als Option hinzugefügt. repeat until (.GetNextRow() == FALSE) item = .GetString("Abteilung") dept.AddPromptOption(item) endrepeat .Finished() endwith 7 Die Frage ist hiermit vollständig erstellt. Der Benutzer kann die Abteilung wählen, die das gescannte Dokument erhalten soll. Da dies die letzte Frage ist, wird die Direktive „laststep“ verwendet. ask(dept) laststep endprompt 8 Sobald die Fragen gestellt wurden, wird das Dokument gescannt und genauso übermittelt wie Aufträge ohne Aufforderungen. Die Ausführung des Skripts wird an diesem Punkt fortgesetzt, wenn der Auftrag neu gestartet wird. Erstellen Sie den vollständigen Pfad und Dateinamen, unter dem die Datei gespeichert wird. Die Datei wird im Verzeichnis c:\lexmark in einem Unterverzeichnis, das der Filialnummer entspricht, und einem weiteren Unterverzeichnis für die Abteilung gespeichert. Der vollständige Name lautet wie folgt: c:\lexmark\storenum\department name\scan_timestamp.tif. string filepath = "c:\lexmark\" + store.AsString() + "\" + dept + "\scan.tif" 9 Die Datei wird mit der Aktion „SaveToFile“ unter dem im vorherigen Schritt angegebenen Pfad auf der Festplatte gespeichert. Zur Gewährleistung eines eindeutigen Dateinamens wird „AppendTimestamp“ auf TRUE gesetzt. „CreateDirectory“ wird auf TRUE gesetzt, so daß nicht vorhandene Verzeichnisse erforderlichenfalls erstellt werden. with SaveToFile .input=original.document .Path=filepath .AppendTimestamp=TRUE .CreateDirectory=TRUE .Go() endwith So führen Sie dieses Skript aus: 1 Richten Sie auf dem Server die zu verwendende Datenbank ein. Die Microsoft Access-Datenbank „stores.mdb“ wird für dieses Beispiel bereitgestellt. Diese Datei befindet sich in dem mit Workflow Composer installierten Verzeichnis mit Beispielskripts. Konfigurieren Sie die ODBC-Verbindung. Weitere Informationen hierzu finden Sie in Anhang A. 2 Laden Sie es mit Hilfe des Workflow Composer oder des Server Manager auf den Server. 3 Konfigurieren Sie die ODBC-Verbindungsdaten über die lokalen Einstellungen. Document Distributor-Skripts 21 4 Zur Verwendung dieses Skripts auf einem MFP muß dieser über einen Sensorbildschirm verfügen. Wenn dies nicht der Fall ist, wählen Sie Select 'N' Send oder Print 'N' Send. Wenn ein Sensorbildschirm vorhanden ist, erstellen Sie ein Profil. 5 Die Datenbank enthält drei Filialnummern: 10, 20 und 30. Bei Eingabe einer ungültigen Nummer wird eine Fehlermeldung angezeigt. Dieses Skript zeigt die Fähigkeit der Aufforderungen, Daten zum Zeitpunkt der Eingabe durch den Anwender zu überprüfen und die gegebenen Antworten zur dynamischen Anzeige von Auswahloptionen zu verwenden. In diesem Beispiel wird die Datei auf der Festplatte gespeichert. Es könnte jedoch auch zur Erweiterung von Beispiel 2 verwendet werden (Drucken eines Dokuments). In diesem Fall würde die der gewählten Filiale und Abteilung zugehörige Drucker-IP-Adresse aus der Datenbank abgerufen und zum Senden des Druckauftrags verwendet werden. Document Distributor-Skripts 22 3 Document Producer-Skripts Beispiel 8: Zusammenführen von Daten und Drucken eines Formulars Übersicht: Zusammenführen von Daten auf einem Formular und Drucken des Formulars. Details: Ein Unternehmen möchte mit Hilfe des Document Producer den ASCII-Druckdatenstrom von einem Drucker mit Formularvordrucken an den Document Server umleiten. Dieses Skript wird verwendet, um die eingehenden Daten mit einem über den Forms Composer erstellten FormSet zusammenzuführen und auf leerem Papier auszudrucken. Skript: 1 Erstellen Sie aus den eingehenden Daten („original.dataset“) mit der Aktion „MergeForm“ die PDF-Datei des ausgefüllten Formulars. with MergeForm .input=original.dataset .Go() endwith 2 Die Druckoptionen, wie z. B. Duplexdruck, Papiereinzug und Papierformat, werden mit der Erstellung des FormSets konfiguriert und über die Eigenschaft „printoptions“ übermittelt. Papierausgabeoptionen wie Heften oder Lochen können im FormSet nicht definiert werden. Wenn Sie zusätzliche Einstellungen hinzufügen oder die FormSet-Einstellungen überschreiben möchten, erstellen Sie ein „printoptions“-Objekt, und geben Sie die gewünschten Einstellungen an. In diesem Fall wird die Option Lochen aktiviert. printoptions po = MergeForm.printoptions po.SetJobOption(LDD_PRINTOPTION_HOLEPUNCH, LDD_HOLEPUNCH_ON) 3 Drucken Sie das PDF-Formular mit Hilfe der Aktion „PrintForm“. Die IP-Adresse und der Typ des Druckers werden über die lokalen Einstellungen konfiguriert. Wenn der verwendete Drucker über eine ImageQuick-Option verfügt, wird das PDF-Formular direkt an den Drucker gesendet. Anderenfalls wird das PDF-Formular in PostScript konvertiert und dann an den Drucker gesendet. Im Feld PrinterType muß die lokale Variable (PrinterType) als Aufzählungsvariable eingerichtet sein. Weitere Informationen finden Sie in der Hilfe zu den lokalen Einstellungen in der Workflow Composer-Anwendung. Document Producer-Skripts 23 with PrintForm .input=MergeForm.output .IPAddress=local.PrinterAddress .PrinterType=local.PrinterType .PrintOptions=po .WaitForCompletion=FALSE .Go() endwith So führen Sie dieses Skript aus: 1 Laden Sie es mit Hilfe des Workflow Composer oder des Server Manager auf den Server. 2 Konfigurieren Sie die Druckerdaten über die lokalen Einstellungen. 3 Laden Sie das im Forms Composer enthaltene Beispiel „debit memo“. Erstellen Sie eine Named Pipe mit dem Namen „test“. Weitere Informationen hierzu finden Sie in Anhang B. 4 Öffnen Sie auf dem Computer, der als Document Server fungiert, ein Befehlszeilenfenster. Emulieren Sie unter Verwendung der im Forms Composer enthaltenen Beispieldatei einen Druckdatenstrom, indem Sie folgendes eingeben: copy /b debittext.txt \\.\pipe\test Die Option /b führt eine binäre Kopie aus. Die Datei „debittext.txt“ enthält eine Beispiel-Datendatei, die so formatiert ist, als würde sie an einen Drucker gesendet werden. Mit \\.\pipe\test wird die Datei in die in Anhang B erstellte Named Pipe kopiert. Wenn Sie die Aktion auf einem anderen Computer als dem Document Server ausführen, ersetzen Sie den Punkt („.“) durch die IP-Adresse des Computers, der als Server fungiert. Hinweis: Informationen zur Konfiguration von Windows-Druckerwarteschlangen finden Sie in der Online-Hilfe des Forms Composer und des Server Manager. Document Producer-Skripts 24 Beispiel 9: Zusammenführen von Daten und Faxen eines Formulars Übersicht: Zusammenführen von Daten auf einem Formular und Faxen des Formulars. Details: Ein Unternehmen möchte mit Hilfe des Document Producer den ASCII-Druckdatenstrom von einem Drucker mit Formularvordrucken an den Document Server umleiten. Dieses Skript wird zum Zusammenführen der eingehenden Daten mit einem über den Forms Composer erstellten FormSet verwendet und faxt das daraus entstehende Dokument. Skript: 1 Erstellen Sie aus den eingehenden Daten („original.dataset“) mit der Aktion „MergeForm“ die PDF-Datei des ausgefüllten Formulars. with MergeForm .input=original.dataset .Go() endwith 2 Die Ausgabe der Aktion „MergeForm“ ist eine PDF-Datei. Diese muß in ein TIFF-Bild umgewandelt werden, so daß sie in PostScript konvertiert werden kann. with ConvertImageFormat .input=MergeForm.output .Format=LDD_IMGFORMAT_TIFG4 .ColorDepth=LDD_IMGDEPTH_BW .AllPages=TRUE .Go() endwith 3 Konvertieren Sie das TIFF-Bild in Postscript, so daß es gefaxt werden kann. with ConvertToDocument .input=ConvertImageFormat.output .Format=LDD_DOCFORMAT_PS .AllPages=TRUE .PaperSize=LDD_PAPERSIZE_LETTER .Orientation=LDD_ORIENTATION_AUTO .Go() endwith 4 Ermitteln Sie aus dem eingegangenen Dataset die Faxnummer. Alle Werte jeder beliebigen Variablen in einem FormSet können abgerufen und in einem Skript verwendet werden. string faxnumber = original.dataset.GetDataItem("FAXNUMMER") 5 Senden Sie das Fax mit Hilfe der Aktion „FaxByPrinter“. Das Fax wird über einen MFP mit Faxfunktion gesendet. Die IP-Adresse des MFP wird über eine lokale Einstellung konfiguriert. with FaxByPrinter .input=ConvertToDocument.output .IPAddress=local.IpAddress .StationID="ID des Faxgeräts" .FaxNumber=faxnumber .WaitForCompletion=FALSE Document Producer-Skripts 25 .RedialMinutes=5 .RedialTimes=3 .Go() endwith So führen Sie dieses Skript aus: 1 Laden Sie es mit Hilfe des Workflow Composer oder des Server Manager auf den Server. 2 Konfigurieren Sie die Druckerdaten über die lokalen Einstellungen. 3 Laden Sie das im Forms Composer enthaltene Beispiel „fax cover“. Erstellen Sie eine Named Pipe mit dem Namen „test“. Weitere Informationen hierzu finden Sie in Anhang B. 4 Öffnen Sie auf dem Computer, der als Document Server fungiert, ein Befehlszeilenfenster. Emulieren Sie unter Verwendung der im Forms Composer enthaltenen Beispieldatei einen Druckdatenstrom, indem Sie folgendes eingeben: copy /b faxcover.txt \\.\pipe\test Die Option /b führt eine binäre Kopie aus. Die Datei „faxcover.txt“ enthält eine Beispiel-Datendatei, die so formatiert ist, als würde sie an einen Drucker gesendet werden. Mit \\.\pipe\test wird die Datei in die in Anhang B erstellte Named Pipe kopiert. Wenn Sie die Aktion auf einem anderen Computer als dem Document Server ausführen, ersetzen Sie den Punkt („.“) durch die IP-Adresse des Computers, der als Server fungiert. Hinweis: Das Skript ruft nur die Faxnummer ab. Es ist jedoch auch möglich, E-Mail-Adressen, Kundennummern und jede andere beliebige Variable in einem FormSet zu übermitteln. Diese Werte können dann im Skript verwendet werden. In diesem Fall führt das Skript einen Faxvorgang mit einem MFP aus. Sie können das Skript jedoch auch so schreiben, daß der Faxvorgang über einen Faxserver ausgeführt wird, der SMTP unterstützt. Außerdem kann das Formular gespeichert und zu einem späteren Zeitpunkt durch andere vom Server unterstützte Aktionen verwendet werden. Document Producer-Skripts 26 4 Document Portal-Skripts Beispiel 10: Drucken eines leeren Formulars Übersicht: Drucken eines leeren Formulars Details: Dies ist ein einfaches Skript, das vom Document Portal verwendet wird, um mit einem PostScript-Drucker leere Formulare zu drucken. Skript: 1 Erstellen Sie ein Dataset, das an die Aktion „MergeForm“ übermittelt wird. Dieses DataSet enthält nur den Namen des zu verwendenden FormSets. Es werden keine Daten übermittelt, da ein leeres Formular gedruckt werden soll. Das zu verwendende FormSet wird über die Eigenschaft „formsetname“ des ursprünglichen Objekts übermittelt. dataset merge_input merge_input.SetFormset(original.formsetname) 2 Erstellen Sie mit Hilfe der Aktion „MergeForm“ das leere PDF-Formular. with MergeForm .input=merge_input .Go() endwith 3 Drucken Sie das mit Hilfe der Aktion „MergeForm“ erstellte PDF-Dokument unter Verwendung der Aktion „PrintForm“. Die IP-Adresse des Druckers und die zu verwendenden Druckoptionen werden über die Eigenschaften „printerip“ und „printoptions“ des ursprünglichen Objekts übermittelt. Diese Einstellungen werden im Document Portal-Administrator konfiguriert. In diesem Fall wird der Druckertyp auf „PostScript“ gesetzt. Wenn der verwendete Drucker über die ImageQuick-Option verfügt, ändern Sie den Druckertyp in LDD_PRINTERTYPE_LEXIQ. with PrintForm .input=MergeForm.output .IPAddress=original.printerip .PrinterType=LDD_PRINTERTYPE_LEXPS .PrintOptions=original.printoptions .WaitForCompletion=FALSE .Go() endwith Document Portal-Skripts 27 So führen Sie dieses Skript aus: 1 Laden Sie das Skript mit Hilfe des Document Portal-Adminstrators auf den Server. Verwenden Sie nicht Workflow Composer bzw. Server Manager zum Hochladen des Skripts. 2 Wenn sich keine PDFs bzw. FormSets auf dem Server befinden, laden Sie eines. Weisen Sie dem Skript ein geladenes FormSet zu. 3 Verwenden Sie einen MFP mit Sensorbildschirm. Wählen Sie das Formularsymbol und anschließend das diesem Skript zugewiesene Formular. Document Portal-Skripts 28 Beispiel 11: Auffordern des Benutzers und Drucken eines leeren Formulars Übersicht: Auffordern des Benutzers und Drucken des leeren Formulars. Details: Dieses Skript ist für Farbdrucker geeignet. Der Benutzer wird gefragt, ob das Formular in Farbe oder Schwarzweiß gedruckt werden soll. Somit können beide Ausgabetypen in einem Skript enthalten sein. Skript: 1 Dieses Skript enthält eine Frage an den Endbenutzer, die Sie hier erstellen müssen. Die Frage besteht aus einer Auswahlliste, bei der der Benutzer entweder die Option für die Schwarzweißausgabe oder für die Farbausgabe wählen kann. Wie bei allen Skripts mit Aufforderungen müssen alle Aufforderungen sowie alle im „prompt“-Block verwendeten Variablen angegeben werden, bevor der „prompt“-Block eingegeben wird. stringprompt color with color .SetPromptText("Wählen Sie den gewünschten Ausgabetyp:") .AddPromptOption("Schwarzweiß") .AddPromptOption("Farbe") endwith 2 Damit ist die Vorbereitung der Frage abgeschlossen. Der „prompt“-Block wird jetzt verwendet, um die Frage zu stellen. Wenn der Benutzer dieses Skript wählt, wird dieser Teil des Skripts ausgeführt, bevor der Auftrag an den Server gesendet wird. Da es sich um nur eine Frage handelt, ist nur ein Schritt erforderlich. prompt step "prompts" ask(color) laststep endprompt 3 Sobald die Frage gestellt wurde, wird der Auftrag genauso übermittelt wie Aufträge ohne Aufforderungen. Die Ausführung des Skripts wird an diesem Punkt fortgesetzt, wenn der Auftrag neu gestartet wird. 4 Erstellen Sie ein Dataset, das an die Aktion „MergeForm“ übermittelt wird. Dieses DataSet enthält nur den Namen des zu verwendenden FormSets. Es werden keine Daten übermittelt, da ein leeres Formular gedruckt werden soll. Das zu verwendende FormSet wird über die Eigenschaft „formsetname“ des ursprünglichen Objekts übermittelt. dataset merge_input merge_input.SetFormset(original.formsetname) 5 Erstellen Sie mit Hilfe der Aktion „MergeForm“ das leere PDF-Formular. with MergeForm .input=merge_input .Go() endwith Document Portal-Skripts 29 6 Das Skript ändert die mit dem Auftrag gesendeten Druckoptionen. Basierend auf der Auswahl des Benutzers wird der Drucker auf die Verwendung der Farbdruckkassetten oder nur der schwarzen Druckkassette eingestellt. printoptions opts = original.printoptions if (color == "Farbe") opts.SetJobOption(LDD_PRINTOPTION_COLORMODEL, LDD_COLORMODEL_CMYK) else opts.SetJobOption(LDD_PRINTOPTION_COLORMODEL, LDD_COLORMODEL_BLACK) endif 7 Drucken Sie das mit Hilfe der Aktion „MergeForm“ erstellte PDF-Dokument unter Verwendung der Aktion „PrintForm“. Die IP-Adresse des Druckers wird über die Eigenschaft „printerip“ des ursprünglichen Objekts übermittelt. Die Druckoptionen entsprechen der im vorherigen Schritt erstellten, geänderten Version. Die ursprünglichen Druckeinstellungen werden im Document Portal-Administrator konfiguriert. In diesem Fall wird der Druckertyp auf „PostScript“ gesetzt. Wenn der verwendete Drucker über die ImageQuick-Option verfügt, ändern Sie den Druckertyp in LDD_PRINTERTYPE_LEXIQ. with PrintForm .input=MergeForm.output .IPAddress=original.printerip .PrinterType=LDD_PRINTERTYPE_LEXPS .PrintOptions=opts .WaitForCompletion=FALSE .Go() endwith So führen Sie dieses Skript aus: 1 Laden Sie das Skript mit Hilfe des Document Portal-Administrators auf den Server. Verwenden Sie nicht Workflow Composer bzw. Server Manager zum Hochladen des Skripts. 2 Wenn sich keine PDFs bzw. FormSets auf dem Server befinden, laden Sie eines. Weisen Sie dem Skript ein geladenes FormSet zu. 3 Verwenden Sie einen mit einem Farbdrucker verbundenen MFP mit Sensorbildschirm. Wählen Sie das Formularsymbol und anschließend das diesem Skript zugewiesene Formular. Document Portal-Skripts 30 Anhang A: ODBC-Einrichtung Führen Sie die folgenden Schritte aus, um die für die Beispiele 4 und 7 verwendeten ODBC-DSNVerbindungen einzurichten. Die DSNs werden auf dem Computer erstellt, auf dem der Document Server installiert ist. 1 Windows NT: Gehen Sie zu Einstellungen Systemsteuerung. Windows 2000/XP: Gehen Sie zu Einstellungen Systemsteuerung Verwaltung. 2 Wählen Sie Datenquellen (ODBC). 3 Wählen Sie die Registerkarte System-DSN. Klicken Sie auf Hinzufügen. Hierauf wird eine Liste der auf diesem Computer installierten ODBC-Treiber angezeigt. Wählen Sie Microsoft Access-Treiber (*.mdb) aus der Liste, und klicken Sie auf Fertigstellen. 4 Das Dialogfeld für die Microsoft Access-ODBC-Einrichtung wird angezeigt. Geben Sie für Beispiel 4 den Datenquellennamen „LDD1“ und für Beispiel 7 „LDD2“ ein. Klicken Sie auf die Schaltfläche Auswählen, um die für diese Verbindung zu verwendende Datenbank zu suchen. Wählen Sie für Beispiel 4 die Datenbank „resumes.mdb“. Wählen Sie für Beispiel 7 „stores.mdb“. Klicken Sie auf OK. 5 Nachdem beide Datenbanken hinzugefügt wurden, werden sie in der Liste System-DSN angezeigt. 6 Klicken Sie auf OK, um das Dialogfeld zu schließen. Die Verbindungen sind nun konfiguriert und können von einem Skript aus verwendet werden. Beim Laden von Skripts sind für die Beispiele 4 und 7 lokale Einstellungen verfügbar, über die die ODBC-Einstellungen konfiguriert werden können. In der Regel sind zwei Angaben für alle ODBC-Verbindungen erforderlich und zwei optional. – – – – Die DSN muß angegeben werden. Der Datenquellenname ist der in Schritt 4 oben angegebene. Der Tabellenname muß angegeben werden. Dies ist der Name der Tabelle, die die im Skript verwendeten Daten enthält. Wenn Sie die Datenbanken aus den Beispielen verwenden, können Sie die mit den lokalen Einstellungen bereitgestellten Standardtabellennamen verwenden. Die Angabe des Benutzernamens ist optional. Wenn keine Anmeldung erforderlich ist, kann dieses Feld leer bleiben. (Für Access ist standardmäßig keine Anmeldung erforderlich.) Die Angabe des Paßwortes ist optional. Wenn keine Anmeldung erforderlich ist, kann dieses Feld leer bleiben. 31 Anhang B: FormSet-Einrichtung In diesem Anhang wird erläutert, wie Sie ein FormSet laden, und es wird außerdem erklärt, wie die Named Pipe so konfiguriert wird, daß Sie mit ihr arbeiten können. Diese Erläuterungen dienen zur Ausführung der Beispiele 8 und 9. Auf dem Server Manager: 1 Laden Sie erforderlichenfalls das für dieses FormSet erforderliche Skript. Laden Sie für diese Beispiele die Skripts „example08.xdd“ bzw. „example09.xdd“. 2 Klicken Sie auf der Startseite auf FormSet hinzufügen. Dadurch wird der Assistent zum Hinzufügen von FormSets gestartet. Der erste Schritt des Assistenten besteht in der Auswahl des zu ladenden FormSets. Wählen Sie für Beispiel 8 „debitmemo.fdd“ und für Beispiel 9 „faxcover.fdd“. Beide Objekte sind in dem mit Forms Composer installierten Beispielverzeichnis enthalten. Klicken Sie auf Weiter. Auf der folgenden Seite des Assistenten können Sie die Aktion festlegen, die beim Empfang von Daten für dieses FormSet ausgeführt wird. Es stehen drei Optionen zur Verfügung: – – – Die Aktion wird von der Pipe oder im Datenstrom angegeben, eine der vordefinierten Aktionen wird verwendet, oder ein benutzerdefiniertes Skript wird verwendet. Für die hier behandelten Beispiele wird ein benutzerdefiniertes Skript verwendet. Wählen Sie das entsprechende Skript aus der Liste („example08“ bzw. „example09“). 3 Klicken Sie auf Weiter. Auf der letzten Seite des Assistenten finden Sie eine Zusammenfassung. Wenn Sie die für die Beispiele zu verwendende Named Pipe nicht bereits erstellt haben, aktivieren Sie das Kontrollkästchen zum Starten des Assistenten zum Erstellen von Named Pipes. 4 Klicken Sie auf Fertigstellen. Wenn die Erstellung der Named Pipe erforderlich ist, wird der Assistent zum Erstellen von Named Pipes gestartet, anderenfalls ist der Vorgang abgeschlossen, und Sie können mit der Ausführung des Skripts fortfahren. 5 Der erste Schritt des Assistenten zum Erstellen von Named Pipes ist die Benennung der Pipe. In diesem Fall wird nur eine Pipe erstellt. Sie kann sowohl für Beispiel 8 als auch für Beispiel 9 verwendet werden. Nennen Sie die Pipe „test“, und geben Sie eine Beschreibung ein, falls gewünscht. Klicken Sie auf Weiter. 32 6 Auf der nächsten Seite des Assistenten wird die Pipe so konfiguriert, daß sie Daten für ein bestimmtes FormSet bzw. mehrere FormSets akzeptiert. Da die Pipe für die Beispiele 8 und 9 erstellt wird, wählen Sie Diese Pipe wird von mehreren FormSets verwendet. Klicken Sie auf Weiter. 7 Auf der folgenden Seite des Assistenten wird die Aktion konfiguriert, die beim Empfang von Daten in der Pipe ausgeführt wird. Diese Seite ähnelt der Seite des Assistenten zum Hinzufügen von FormSets, auf der Sie die Aktion konfigurieren, die beim Empfang von Daten für das FormSet ausgeführt wird. Da Sie die Aktion für das FormSet bereits konfiguriert haben (das Ausführen eines benutzerdefinierten Skripts), wählen Sie Aktion wird im Druckdatenstrom angegeben. Klicken Sie auf Weiter. 8 Auf der nächsten Seite des Assistenten können Sie den von der Pipe empfangenen Datentyp festlegen. In diesem Fall werden Textdateien gesendet, so daß der Datentyp nicht variiert. Wählen Sie Die Daten weisen immer diesen Typ auf und anschließend Ein Datenstrom aus unformatiertem Text aus der Liste. Klicken Sie auf Weiter. 9 Auf der letzten Seite des Assistenten finden Sie eine Zusammenfassung der gewählten Optionen. Klicken Sie auf Fertigstellen. Nun können Sie das Skript ausführen. Weitere Informationen zu den verschiedenen Optionen beim Laden von FormSets und Erstellen von Named Pipes finden Sie in der in Server Manager enthaltenen Online-Hilfe. 33 Lexmark und Lexmark mit der roten Raute sind in den USA und/oder anderen Ländern eingetragene Marken von Lexmark International, Inc. © 2004 Lexmark International, Inc. 740 West New Circle Road Lexington, Kentucky 40550, USA www.lexmark.com