Document Distributor Ejemplos de scripts Para ver o descargar ésta u otra publicación de Lexmark Document Solutions, haga clic aquí. Octubre de 2003 www.lexmark.com Edición: octubre de 2003 El siguiente párrafo no tiene vigencia en aquellos países en los que estas disposiciones entren en conflicto con las leyes locales: LEXMARK INTERNATIONAL, INC. PROPORCIONA ESTA PUBLICACIÓN "TAL COMO ESTÁ" SIN GARANTÍA DE NINGÚN TIPO, NI EXPRESA NI IMPLÍCITA, INCLUIDA PERO NO LIMITADA A LAS GARANTÍAS IMPLÍCITAS DE COMERCIALIDAD O DE APTITUD PARA UN PROPÓSITO ESPECÍFICO. En algunos estados no se permite la renuncia de garantías implícitas o explícitas en determinadas transacciones, por lo que puede que esta declaración no se aplique. La presente publicación puede incluir imprecisiones técnicas o errores tipográficos. De forma periódica, se realizan modificaciones en la información aquí contenida; dichas modificaciones se incorporarán en ediciones posteriores. En cualquier momento se pueden realizar mejoras o cambios en los productos o programas descritos. Si desea realizar algún comentario sobre esta publicación, puede dirigirse a Lexmark International, Inc., Department F95 / 032-2, 740 West New Circle Road, Lexington, Kentucky 40550, EE.UU. En el Reino Unido e Irlanda, envíelos a Lexmark International Ltd., Marketing and Services Department, Westhorpe House, Westhorpe, Marlow Bucks SL7 3RQ. Lexmark puede utilizar o distribuir cualquier información que suministre de la forma que crea conveniente sin que ello implique ninguna obligación. Puede adquirir copias adicionales de las publicaciones relacionadas con este producto llamando al 1-800-553.9727. En el Reino Unido e Irlanda, llame al +44 (0)8704 440 044. En los demás países, póngase en contacto con el establecimiento de venta. Las referencias en esta publicación a productos, programas o servicios no implican que el fabricante pretenda ponerlos a disposición en todos los países en los que opera. Cualquier referencia a un producto, un programa o un servicio no implica que sólo se deba utilizar dicho producto, programa o servicio. En su lugar, se puede utilizar cualquier producto, programa o servicio de funcionalidad equivalente que no infrinja ningún derecho de propiedad intelectual existente. Es responsabilidad del usuario la evaluación y verificación de funcionamiento junto con otros productos, programas o servicios, a excepción de los designados expresamente por el fabricante. ImageQuick, Optra, Lexmark y Lexmark con diamante son marcas comerciales de Lexmark International, Inc., registradas en los Estados Unidos y/o en otros países. PostScript® es una marca registrada de Adobe Systems Incorporated. Otras marcas comerciales pertenecen a sus respectivos propietarios. © Copyright 2003 Lexmark International, Inc. Reservados todos los derechos. DERECHOS DEL GOBIERNO DE LOS ESTADOS UNIDOS Este software y la documentación que lo acompaña que se proporcionan según este acuerdo constituyen software y documentación comercial de ordenador desarrollados exclusivamente con capital privado. Contenido Capítulo 1: Introducción ............................................................... 1 Capítulo 2: Scripts de Document Distributor.............................. 2 Ejemplo 1: almacenamiento en un archivo ............................................... 2 Ejemplo 2: impresión de un documento ................................................... 3 Ejemplo 3: solicitud y envío de un e-mail ................................................. 5 Ejemplo 4: almacenamiento de datos en una base de datos ................... 8 Ejemplo 5: separación de páginas utilizando códigos de barras ............ 12 Ejemplo 6: solicitud avanzada I .............................................................. 15 Ejemplo 7: solicitud avanzada II ............................................................. 19 Capítulo 3: Scripts de Document Producer .............................. 23 Ejemplo 8: combinación de datos e impresión de un formulario ............ 23 Ejemplo 9: combinación de datos y envío por fax de un formulario ....... 25 Capítulo 4: Scripts de Document Portal .................................... 27 Ejemplo 10: impresión de un formulario en blanco ................................ 27 Ejemplo 11: solicitud al usuario e impresión de un formulario en blanco 29 Apéndice A: configuración de ODBC .................................................. 31 Apéndice B: configuración de FormSet .............................................. 32 iii 1 Introducción Este libro proporciona ejemplos de las construcciones y objetos que componen el lenguaje de scripts que utiliza el conjunto Lexmark Document Solutions. Los ejemplos se han dividido en tres capítulos; cada uno corresponde a un miembro distinto del conjunto de aplicaciones. Puede examinarlos todos o sólo los correspondientes a su aplicación. Todos los ejemplos de este libro se incluyen en el software Workflow Composer. Se recomienda tener acceso a Workflow Composer y a Server Manager o Document Portal Admin para poder trabajar con los scripts mientras consulta el libro. Cuando cargue los scripts en Document Server, se le pedirá información específica del entorno que sea necesaria para ejecutar los scripts. Por ejemplo, cuando sea necesaria la dirección IP del servidor SMTP, el script mostrará "local.mailserver" y se reemplazará por el valor que proporcione. Introducción 1 2 Scripts de Document Distributor Ejemplo 1: almacenamiento en un archivo Descripción general: almacenamiento del documento digitalizado en un archivo Detalles: un empleado necesita digitalizar facturas en una impresora multifunción y almacenarlas en el sistema de archivos local. Script: with SaveToFile .input=original.document .Path="c:\lexmark\factura.tif" .AppendTimestamp=TRUE .CreateDirectory=TRUE .Go() endwith Para ejecutar este script: 1 Cárguelo en el servidor con Workflow Composer o Server Manager. 2 Mediante Server Manager, cree un perfil en una impresora multifunción. Nota: definiendo AppendTimestamp en TRUE, se garantiza un nombre de archivo único para cada archivo guardado. El nombre de archivo generado será: c:\lexmark\factura_MES_DD_AAAA_HH_MM_SS_MS.tif Es importante observar que se usa el mismo sello de hora para todo el script; al llamar a SaveToFile varias veces en la misma ejecución del script se utilizará el mismo sello de hora. Si es necesario, el sello de hora se puede generar manualmente mediante la propiedad usertime del objeto original y añadiendo un valor único. Para ver un ejemplo, consulte el ejemplo 5: separación de páginas utilizando códigos de barras. Definiendo la propiedad CreateDirectory en TRUE, la acción creará los directorios que no existan en la ruta de acceso. Esto resulta muy útil si el propio sello de hora se utilizará como parte del nombre de directorio. Scripts de Document Distributor 2 Ejemplo 2: impresión de un documento Descripción general: impresión de un documento digitalizado en otra impresora Detalles: un empleado necesita enviar un fax interno; un fax de una ubicación de la empresa a otra. Puesto que existe una LAN para toda la empresa y las impresoras están disponibles en cada ubicación, este script imprime directamente en las impresoras en vez de enviar un fax. Proporciona una salida de mayor calidad y ahorra en costes telefónicos. Además, el sello de hora se agrega a la copia impresa para que parezca un fax. Script: 1 Utilice el método separate para dividir el valor de usertime en partes individuales. A continuación, cree la cadena de información que se imprime en cada página de la copia impresa. El formato de la cadena es "Enviado por dirección IP el fecha a las hora" stringarray time = original.usertime.Separate("_") string stamp = "Enviado por " + original.userip stamp.Concatenate(" el " + time[2] + " " + time[3] + " " + time[4]) stamp.Concatenate(" a las " + time[5] + ":" + time[6]) 2 Utilice la acción ImageText para agregar la información de sello de hora en la esquina inferior derecha de todas las páginas que se enviarán. 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 Utilice la acción ConvertToDocument para convertir la imagen TIFF a PostScript de modo que se pueda imprimir. Observe que utilizamos la salida de la acción ImageText, por lo que obtendremos la imagen TIFF con la información de sello de hora. with ConvertToDocument .input=ImageText.output .Format=LDD_DOCFORMAT_PS .AllPages=TRUE .PaperSize=LDD_PAPERSIZE_LETTER .Orientation=LDD_ORIENTATION_AUTO .Go() endwith Scripts de Document Distributor 3 4 Utilice la acción PrintJob para enviar el archivo PostScript a la impresora especificada. Si la impresora tiene instalada una opción ImageQuick, el archivo TIFF se puede enviar directamente a la impresora sin convertirlo primero a PostScript. Se ha definido un valor local con el nombre printerip y un "Tipo" como "Texto" para su uso en la propiedad .IPAddress de la acción PrintJob. Para obtener más información, consulte la ayuda "Valores locales" en la aplicación Workflow Composer. 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 Para ejecutar este script: 1 Cárguelo en el servidor con Workflow Composer o Server Manager. 2 Configure la dirección IP de la impresora que se utilizará mediante los valores locales. 3 Cree un perfil en una impresora multifunción. Scripts de Document Distributor 4 Ejemplo 3: solicitud y envío de un e-mail Descripción general: realización de reconocimiento óptico de caracteres de un documento y envío al usuario mediante e-mail Detalles: una empresa desea facilitar a sus empleados la realización de reconocimiento óptico de caracteres de documentos impresos sin tener que instalar software de OCR en los ordenadores de la empresa. Este script se utiliza para solicitar al usuario su dirección de e-mail y, a continuación, preguntarle si desea el documento en formato RTF (utilizado por muchos procesadores de textos) o en formato PDF. El script lo convierte y lo envía al usuario mediante e-mail. Script: 1 Este script realiza preguntas al usuario final, por lo que hay que configurarlas. La primera pregunta es una cadena y pide una dirección de e-mail. La segunda es una lista de selección única que pide el formato del archivo. stringprompt email email.SetPromptText("Introduzca la dirección de e-mail") stringprompt format with format .SetPromptText("Seleccione el formato de archivo") .AddPromptOption("RTF") .AddPromptOption("PDF") endwith 2 Las preguntas ya se han preparado. Ahora el bloque prompt se utiliza para realizar las preguntas. Cuando el usuario selecciona este script, es la parte del mismo que se ejecuta antes de que se efectúe la digitalización. Debido a que las respuestas a las preguntas no afectan a las preguntas posteriores y debido a que las respuestas no se verifican, las preguntas se pueden hacer en un solo paso. prompt step "prompts" ask(email) ask(format) laststep endprompt 3 Una vez efectuadas las preguntas, el documento se digitaliza y se envía como los demás trabajos en los que no se hacen preguntas. El script reanudará la ejecución en este punto cuando se reinicie el trabajo. Scripts de Document Distributor 5 4 Examine el formato seleccionado y convierta el documento de entrada en PDF o RTF. La salida se almacena en la variable ocr por lo que se puede utilizar para la acción de e-mail. 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 La acción EmailSMTP se utiliza ahora para enviar el e-mail con la salida de OCR como anexo. La dirección de e-mail utilizada se obtuvo del usuario final cuando se envió el trabajo. La dirección IP del servidor SMTP se definió como un valor local; cuando el script se carga en el servidor, Server Manager solicita el valor que se utilizará para esta propiedad. with EmailSMTP .Server=local.emailserver .To=email .From=email .Subject="Documento digitalizado" .Message="Se incluye el documento digitalizado en el formato"_ "solicitado." .CharacterSet=LDD_SMTPCHARSET_US .Attachments=ocr .Go() endwith Scripts de Document Distributor 6 Para ejecutar este script: 1 Cárguelo en el servidor con Workflow Composer o Server Manager. 2 Configure la dirección del servidor SMTP mediante los valores locales. 3 Para poder utilizar este script en una impresora multifunción, debe tener una pantalla táctil. Si no está disponible, utilice Select'N'Send o Print'N'Send en su lugar. Si está disponible, cree un perfil utilizando un TIFF, una resolución de 300 ppp y una oscuridad de 4. De este modo se obtendrán los mejores resultados de OCR. Nota: la acción EmailSMTP se puede reemplazar con objetos específicos admitidos por GroupWare, como Lotus Notes (EmailNotes), Microsoft Exchange (EmailExchange) y Novell GroupWise (GWMail). La principal ventaja de utilizar estos objetos es que el script puede aprovechar la libreta de direcciones y las características específicas de GroupWare; sin embargo, el uso de estos objetos implica más requisitos de configuración. En la mayoría de los casos, los servidores GroupWare se pueden configurar para aceptar correo SMTP. Si el script no necesita características especiales, debe ser suficiente con la acción general EmailSMTP. Scripts de Document Distributor 7 Ejemplo 4: almacenamiento de datos en una base de datos Descripción general: almacenamiento del documento digitalizado en una base de datos Detalles: un departamento de recursos humanos está encargado de realizar el seguimiento de todos los historiales. El script se utilizará para almacenar el historial en una base de datos. Además, el historial se convertirá a texto, que también se almacenará en la base de datos. Al almacenar el texto, se pueden buscar en la base de datos determinadas palabras clave y, a continuación, se puede obtener una lista de todos los historiales que coincidan con la búsqueda. Debido a que el historial también estará almacenado, se puede ver, imprimir o direccionar a otra ubicación. • Las bases de datos que emplean BLOB (objetos grandes binarios) deben utilizar el script 4A. Los BLOB los utilizan las bases de datos que permiten almacenar archivos en ellas. Ejemplos de estas bases de datos son Oracle, Microsoft SQL Server e IBM DB2. • Las bases de datos, como Microsoft Access, que no admitan BLOB deben utilizar el script 4B. Para llevar a cabo la mista tarea, el documento se debe guardar en el sistema de archivos local. A continuación, la ubicación del archivo se guarda en la base de datos para que se pueda recuperar más adelante. Script 4A: 1 Convierta el documento enviado en texto; este texto se almacenará en la base de datos y se enlazará con este historial, de modo que se puedan realizar búsquedas en él. 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 Mediante el objeto textfile, lea el texto generado por la acción ImageToText y almacénelo en una cadena. textfile tf string ocrText tf.Open(ImageToText.output) ocrText = tf.Read(tf.Size()) tf.Close() 3 Inserte el historial junto con el texto en la base de datos para que se pueda recuperar posteriormente. Las propiedades de la información de la base de datos se configuran mediante los valores locales cuando el script se carga en el servidor. with ODBCWrite .DataSource=local.DataSource .TableName=local.TableName .LogonName=local.LogonName Scripts de Document Distributor 8 .LogonPassword=local.LogonPassword .AssignValue("ScanDate","") .AssignValue("OCRText",ocrText) .AssignValue("Resume",original.document) .Go() endwith Para ejecutar este script: 1 En el equipo del servidor, configure la base de datos que se utilizará. Los archivos LDDOracleTable.sql y LDDSQLServerTable.sql se proporcionan para crear las tablas de ejemplo en Oracle y Microsoft SQL Server. Estos archivos se encuentran en el directorio de ejemplos de scripts instalado con Workflow Composer. Después de configurar la base de datos, configure la conexión ODBC. Para obtener información al respecto, consulte el Apéndice A: configuración de ODBC. 2 Cárguelo en el servidor con Workflow Composer o Server Manager. 3 Configure la información de conexión ODBC mediante los valores locales. 4 Cree un perfil en una impresora multifunción. Scripts de Document Distributor 9 Script 4B: 1 Convierta el documento enviado en texto; este texto se almacenará en la base de datos y se enlazará con este historial, de modo que se puedan realizar búsquedas en él. 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 Mediante el objeto textfile, lea el texto generado por la acción ImageToText y almacénelo en una cadena. textfile tf string ocrText tf.Open(ImageToText.output) ocrText = tf.Read(tf.Size()) tf.Close() 3 Configure la ruta de acceso para guardar el archivo. El archivo se guardará en el sistema de archivos local en un directorio denominado c:\lexmark. El nombre de archivo será historial_sellohora.tif. string filepath = "c:\lexmark\historial" + original.usertime + ".tif" 4 Debido a que el documento no se puede insertar en la base de datos, guárdelo en el sistema de archivos local. AppendTimestamp está definido en FALSE debido a que se ha agregado manualmente el sello de hora en el paso anterior. CreateDirectory está definido en TRUE por lo que c:\lexmark se creará si no existe. with SaveToFile .input=original.document .AppendTimestamp=FALSE .Overwrite=FALSE .Path=filepath .CreateDirectory=TRUE .Go() endwith Scripts de Document Distributor 10 5 Inserte el nombre de archivo junto con el texto en la base de datos para que se pueda recuperar posteriormente. Las propiedades de la información de la base de datos se configuran mediante los valores locales cuando el script se carga en el servidor. with ODBCWrite .DataSource=local.DataSource .TableName=local.TableName .LogonName=local.LogonName .LogonPassword=local.LogonPassword .AssignValue("ScanDate","") .AssignValue("OCRText",ocrText) .AssignValue("ResumeFile",filepath) .Go() endwith Para ejecutar este script: 1 En el equipo del servidor, configure la base de datos que se utilizará. Se proporciona la base de datos resumes.mdb de Microsoft Access para utilizarla en este ejemplo. Este archivo se encuentra en el directorio de ejemplos de scripts instalado con Workflow Composer. Después de configurar la base de datos o utilizar la suministrada, configure la conexión ODBC. Para obtener información al respecto, consulte el Apéndice A. 2 Cárguelo en el servidor con Workflow Composer o Server Manager. 3 Configure la información de conexión ODBC mediante los valores locales. 4 Cree un perfil en una impresora multifunción. Scripts de Document Distributor 11 Ejemplo 5: separación de páginas utilizando códigos de barras Descripción general: uso de una página de separación de código de barras para dividir los trabajos de longitud de página variable en archivos independientes Detalles: un empleado necesita digitalizar y procesar varios conjuntos de documentos. Cada conjunto se debe digitalizar por separado, pero resulta más sencillo, y preferible, digitalizarlos todos a la vez. Esta operación se puede realizar utilizando una página de separación de código de barras para indicar el inicio de un nuevo conjunto. El uso de la página de separación permitirá que cada conjunto contenga varias páginas. El script buscará un código de barras en cada página del documento digitalizado. Cuando encuentre uno, marcará el final del conjunto anterior, que se guardará en un archivo, y marcará el comienzo de un nuevo conjunto. Script: 1 Declare todas las variables que se utilizan en este script. doc separated int i, startpage, lastpage bool found string fullpath, bcode 2 Separe el documento digitalizado de modo que cada página esté en su propio archivo. Esta operación es necesaria para que cada grupo de páginas que componen un conjunto se puedan combinar en un único archivo. with ImageSeparate .input=original.document .AllPages=TRUE .Go() separated =.output endwith 3 Utilice la variable startpage para indicar la primera página del conjunto actual. Inicialícela en la primera página del conjunto digitalizado. startpage = 1 4 Realice un bucle en todas las páginas que se han enviado. loop i from 1 to separated.GetNumberFiles() 5 La variable found indica que un nuevo grupo de páginas está listo para guardarlo. Restablezca dicha variable antes de procesar cada página. found = false Scripts de Document Distributor 12 6 Utilice la acción BarcodeRead para determinar si hay un código de barras en esta página. 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 En este ejemplo (y en el archivo de ejemplo suministrado), el código de barras es la palabra "BREAK". Compruebe si se ha encontrado en esta página. if (bcode.Contains("BREAK")) then 8 Se ha encontrado un código de barras. Si el valor de la página de inicio es igual al de la página actual (por ejemplo, el valor de startpage es igual a 1 y la primera página del documento digitalizado es una página de separación), no es necesario guardar ninguna página. En este caso, la página de inicio del siguiente conjunto se define en la siguiente página. De lo contrario, la última página del conjunto actual se define en la página anterior. (No lo defina igual a esta página o también se guardará la página de separación.) Defina el indicador found para indicar que es necesario guardar un conjunto de páginas. if (startpage == i) startpage = i + 1 else lastpage = i - 1 found = true endif 9 No se ha encontrado ningún código de barras. Compruebe si es la última página del documento enviado. Si lo es, ésta tiene que ser la última página del conjunto actual. Defina lastpage en la página actual y defina el indicador found para indicar que es necesario guardar un conjunto de páginas. else if (i == separated.GetNumberFiles()) then lastpage = i found = true endif endif 10 Si se ha encontrado un nuevo conjunto de páginas, es necesario guardarlo. if (found == true) then Scripts de Document Distributor 13 11 Utilice la acción ImageCombine para combinar el conjunto de páginas en un documento. with ImageCombine .input=separated.GetFileRange(startpage, lastpage) .Format=LDD_IMGFORMAT_TIFG4 .ColorDepth=LDD_IMGDEPTH_BW .Go() endwith 12 Determine el nombre del archivo que se utilizará para guardar el nuevo documento. Los conjuntos se guardarán en el directorio c:\lexmark. El nombre del archivo será conjunto_sellohora_página.tif. Debido a que todos los archivos guardados en un trabajo tendrán el mismo sello de hora, se agregará el número de la última página del conjunto para obtener un nombre de archivo único. fullpath = "c:\lexmark\conjunto" + original.usertime + "_" + _ lastpage.AsString() + ".tif" 13 Guarde el nuevo documento en el disco. AppendTimestamp está definido en FALSE debido a que se ha agregado manualmente en el paso anterior. CreateDirectory está definido en TRUE por lo que el directorio c:\lexmark se creará si no existe. with SaveToFile .input = ImageCombine.output .Path=fullpath .AppendTimestamp=FALSE .Overwrite=FALSE .Go() endwith 14 El conjunto actual ya se ha guardado. Defina la página de inicio del siguiente conjunto para que sea la siguiente página del documento. No lo defina en la página actual; de lo contrario, el siguiente conjunto incluirá la página de separación como parte del documento guardado. startpage = i + 1; endif endloop Para ejecutar este script: 1 Cárguelo en el servidor con Workflow Composer o Server Manager. 2 Cree un perfil en una impresora multifunción utilizando TIFF, una resolución de 300 ppp y una oscuridad de 3 o 4. 3 El archivo, fullset.tif, se encuentra en el directorio de ejemplos de scripts instalado con Workflow Composer. Este archivo se puede imprimir y digitalizar o enviar mediante Select'N'Send. Cuando se utiliza con este script, crea tres archivos independientes con 3, 2 y 4 páginas respectivamente. Scripts de Document Distributor 14 Ejemplo 6: solicitud avanzada I Descripción general: uso de las respuestas a las preguntas para determinar la siguiente pregunta Detalles: este script permite que un usuario digitalice un documento y envíe el original o una versión editable del mismo mediante e-mail. Se trata de una ampliación del script del ejemplo 3: solicitud y envío de un e-mail. Al usuario se le pedirá una dirección de e-mail para enviar el documento y, a continuación, se le preguntará si desea realizar un reconocimiento óptico de caracteres del documento. Según la respuesta, en la siguiente pregunta se le pedirá el formato adecuado. Aunque se trata de un script simple, muestra la potencia de las solicitudes y cómo la respuesta a una pregunta puede servir de ayuda para determinar la siguiente pregunta. Script: 1 Este script realiza preguntas al usuario final, por lo que hay que configurarlas aquí. La primera pregunta es una cadena y pide una dirección de e-mail. La segunda es una solicitud booleana; el usuario la activará para realizar un reconocimiento óptico de caracteres del documento; de lo contrario, se enviará como imagen. stringprompt email email.SetPromptText("Dirección de e-mail para enviar el documento") boolprompt ocr ocr.SetPromptText("Haga clic para realizar un reconocimiento óptico de caracteres del documento.") 2 Si el usuario decide realizar el reconocimiento óptico de caracteres, se utiliza esta pregunta. Se trata de una lista de selección única que permite elegir el formato del documento OCR. stringprompt ocrformat with ocrformat .SetPromptText("Seleccione el formato de OCR") .AddPromptOption("RTF") .AddPromptOption("PDF (Searchable)") endwith 3 Si el usuario decide no realizar el reconocimiento óptico de caracteres, se utiliza esta pregunta. Se trata de una lista de selección única que permite elegir el formato del documento de imagen. stringprompt imgformat with imgformat .SetPromptText("Seleccione el formato de imagen") .AddPromptOption("TIFF") .AddPromptOption("PDF (Not Searchable)") endwith 4 Las preguntas ya se han preparado. Ahora el bloque prompt se utiliza para realizar las preguntas. Cuando el usuario selecciona este script, se ejecuta la parte de solicitud del script antes de que se efectúe la digitalización. Debido a que las respuestas a las preguntas se utilizan para seleccionar la siguiente pregunta, se emplean varios pasos. prompt Scripts de Document Distributor 15 5 Este paso contiene dos preguntas: cuál es la dirección de e-mail y si se realizará un reconocimiento óptico de caracteres del documento. Ambas preguntas se hacen en un solo paso porque no afectan a la otra. Después de hacer la pregunta de OCR, se comprueba el valor devuelto. Si se ha seleccionado OCR, la siguiente pregunta a ejecutar es oformat; de lo contrario, el siguiente paso es iformat. Cada paso debe tener una directiva nextstep o laststep. step "email" ask(email) ask(ocr) if (ocr == TRUE) nextstep "oformat" else nextstep "iformat" endif 6 Este paso se elige cuando el usuario selecciona OCR. Le pide al usuario que elija el formato del documento OCR. Es la última pregunta de esta ruta, por lo que se utiliza la directiva laststep. step "oformat" ask(ocrformat) laststep 7 Este paso se elige cuando el usuario no selecciona OCR. Le pedirá al usuario que elija el formato de la imagen. Es la última pregunta de esta ruta, por lo que se utiliza la directiva laststep. step "iformat" ask(imgformat) laststep endprompt 8 Una vez efectuadas las preguntas, el documento se digitaliza y se envía como los demás trabajos en los que no se hacen preguntas. El script reanudará la ejecución en este punto cuando se reinicie el trabajo. Compruebe la solicitud ocr para averiguar si el usuario desea realizar un reconocimiento óptico de caracteres del documento. doc attach if (ocr == TRUE) Scripts de Document Distributor 16 9 El usuario desea realizar reconocimiento óptico de caracteres, compruebe que el formato es el que desea y realice la conversión. Almacene la salida de la conversión en la variable 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 El usuario no desea realizar reconocimiento óptico de caracteres; compruebe que el formato de imagen es el que desea y realice la conversión si es necesario. Debido a que el documento se digitalizó como TIFF, no es necesario realizar ninguna conversión si se ha elegido ese formato. Almacene la salida de la conversión en la 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 Scripts de Document Distributor 17 11 La acción EmailSMTP se utiliza ahora para enviar el e-mail con la salida seleccionada como anexo. La dirección de e-mail utilizada se obtuvo del usuario final cuando se envió el trabajo. La dirección IP del servidor SMTP se definió como un valor local; cuando el script se carga en el servidor, Server Manager solicita el valor que se utilizará para esta propiedad. with EmailSMTP .Server=local.emailserver .To=email .cc="" .bcc="" .From=email .ReplyTo="" .Sender="" .Subject="Documento digitalizado" .Message="Éste es el documento digitalizado" .CharacterSet=LDD_SMTPCHARSET_US .Attachments=attach .Go() endwith Para ejecutar este script: 1 Cárguelo en el servidor con Workflow Composer o Server Manager. 2 Configure la dirección del servidor SMTP mediante los valores locales. 3 Para poder utilizar este script en una impresora multifunción, debe tener una pantalla táctil. Si no está disponible, utilice Select'N'Send o Print'N'Send en su lugar. Si está disponible, cree un perfil utilizando un TIFF, una resolución de 300 ppp y una oscuridad de 4. De este modo se obtendrán los mejores resultados de OCR. Scripts de Document Distributor 18 Ejemplo 7: solicitud avanzada II Descripción general: realización de validación de datos a medida que el usuario final responde a las solicitudes dinámicas Detalles: un empleado necesita digitalizar documentos pero desea separarlos según el almacén que necesita el documento y, a continuación, según el departamento del almacén. Este script solicitará el número de almacén. Si el número de almacén es válido, al usuario se le presenta una lista de los departamentos de dicho almacén. De lo contrario, se muestra un mensaje de error y se vuelve a solicitar al usuario el número de almacén. Después de recopilar toda la información necesaria, el documento se digitaliza y se guarda en la ubicación adecuada del sistema de archivos local. Script: 1 Este script realiza preguntas al usuario final, por lo que primero hay que configurarlas. La primera pregunta es un entero y solicita un número de almacén. La segunda es un mensaje de error que se muestra si el número de almacén introducido no es válido. La tercera solicitud se declara aquí pero se configurará después de responder a la pregunta; todas las solicitudes y las variables utilizadas en el bloque prompt se deben declarar antes de introducir el bloque prompt. intprompt store store.SetPromptText("Introduzca el número de almacén:") messageprompt errmsg errmsg.SetPromptText("Número de almacén no válido; vuelva a introducirlo.") stringprompt dept string storename, item 2 Algunas preguntas se han preparado y las demás se han declarado. Ahora el bloque prompt se utiliza para realizar las preguntas. Cuando el usuario selecciona este script, es la parte del mismo que se ejecuta antes de que se efectúe la digitalización. Debido a que las respuestas se van a validar y utilizar para formar otras preguntas, se emplean varios pasos. prompt Scripts de Document Distributor 19 3 Este paso contiene una pregunta: cuál es el número de almacén. Después de proporcionar el número de almacén, se busca en la base de datos para comprobar que se trata de un número de almacén válido. Si lo es, se recupera el nombre de almacén de la base de datos y nextstep se define en dept. Si no es válido, nextstep se define en error. step "storenum" ask(store) with ODBCRead .Reset() .DataSource=local.DataSource .TableName="stores" .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 Este paso se utiliza si se proporciona un número de almacén no válido. Sólo se muestra un mensaje de error y se indica al usuario que vuelva a introducirlo. El usuario aceptará el mensaje y, a continuación, nextstep se define en storenum; es decir, se vuelve a hacer la primera pregunta. step "error" ask(errmsg) nextstep "storenum" 5 Este paso se utiliza cuando se ha indicado un número de almacén válido. El texto de la solicitud se define aquí para que pueda incluir el nombre del almacén seleccionado. A continuación, los departamentos válidos de dicho almacén se recuperan de la base de datos. step "dept" dept.SetPromptText("Seleccione el departamento de " + storename) with ODBCRead .Reset() .DataSource=local.DataSource .TableName="departments" .LogonName=local.LogonName .LogonPassword=local.LogonPassword .DataColumns="Department" .WhereClause="StoreNumber=" + store.AsString() .Go() Scripts de Document Distributor 20 6 Cada departamento se agrega a la lista de selección única como opción. repeat until (.GetNextRow() == FALSE) item = .GetString("Department") dept.AddPromptOption(item) endrepeat .Finished() endwith 7 La pregunta ya se ha configurado por completo. El usuario podrá seleccionar el departamento al que va dirigido el documento digitalizado. Es la pregunta final, por lo que se utiliza la directiva laststep. ask(dept) laststep endprompt 8 Una vez efectuadas las preguntas, el documento se digitaliza y se envía como los demás trabajos en los que no se hacen preguntas. El script reanudará la ejecución en este punto cuando se reinicie el trabajo. Cree la ruta de acceso completa y el nombre de archivo que se utilizarán para guardar el archivo. El archivo se guardará en el directorio c:\lexmark debajo de un directorio que utiliza el número de almacén y, a continuación, en un subdirectorio para dicho departamento. El nombre final se parecerá al siguiente: c:\lexmark\número_almacén\nombre departamento\digitalización_sellohora.tif. string filepath = "c:\lexmark\" + store.AsString() + "\" + dept + "\scan.tif" 9 El archivo se guarda en el disco mediante la acción SaveToFile y la ruta de archivo especificada en el paso anterior. AppendTimestamp está definido en TRUE, por lo que se garantiza un nombre de archivo único. CreateDirectory está definido en TRUE, por lo que se crearán los directorios que no existan. with SaveToFile .input=original.document .Path=filepath .AppendTimestamp=TRUE .CreateDirectory=TRUE .Go() endwith Para ejecutar este script: 1 En el equipo del servidor, configure la base de datos que se utilizará. Se proporciona la base de datos stores.mdb de Microsoft Access para utilizarla en este ejemplo. Este archivo se encuentra en el directorio de ejemplos de scripts instalado con Workflow Composer. Configure la conexión ODBC. Para obtener información al respecto, consulte el Apéndice A. 2 Cárguelo en el servidor con Workflow Composer o Server Manager. 3 Configure la información de conexión ODBC mediante los valores locales. Scripts de Document Distributor 21 4 Para poder utilizar este script en una impresora multifunción, debe tener una pantalla táctil. Si no está disponible, utilice Select'N'Send o Print'N'Send en su lugar. Si está disponible, cree un perfil. 5 La base de datos tiene tres números de almacén: 10, 20 y 30. Si se proporciona un número no válido, se mostrará un mensaje de error. Este script demuestra la potencia de las solicitudes para validar datos a medida que el usuario los introduce y utilizar las respuestas suministradas con el fin de proporcionar dinámicamente selecciones al usuario. Aunque este ejemplo guarda el archivo en el disco, se puede utilizar para ampliar el ejemplo 2: impresión de un documento. En este caso, la dirección IP de la impresora que se corresponde al almacén y departamento seleccionados se recuperaría de la base de datos y se utilizaría para enviar el trabajo de impresión. Scripts de Document Distributor 22 3 Scripts de Document Producer Ejemplo 8: combinación de datos e impresión de un formulario Descripción general: combinación de datos en un formulario e impresión Detalles: con Document Producer, una empresa va a redirigir su flujo de impresión ASCII desde una impresora cargada con formularios preimpresos a Document Server. Este script se utiliza para combinar los datos entrantes con un FormSet creado con Forms Composer e imprimirlo en papel en blanco. Script: 1 Utilice los datos entrantes, original.dataset, con la acción MergeForm para crear un PDF del formulario relleno. with MergeForm .input=original.dataset .Go() endwith 2 Las opciones de impresión, como dúplex, origen del papel y tamaño de papel, se configuran cuando el FormSet se crea y pasa mediante la propiedad printoptions. Las opciones de acabado, como grapadora y perforador, no se pueden configurar en el FormSet. Para agregar valores adicionales o anular los valores del FormSet, cree un objeto printoptions y especifique los valores que desee. En este caso, se va a activar el perforador. printoptions po = MergeForm.printoptions po.SetJobOption(LDD_PRINTOPTION_HOLEPUNCH, LDD_HOLEPUNCH_ON) 3 Utilice la acción PrintForm para imprimir el formulario PDF. La dirección IP y el tipo de impresora se configuran mediante los valores locales. Si la impresora que se va a utilizar dispone de una opción ImageQuick, el formulario PDF se envía directamente a la impresora. De lo contrario, el formulario PDF se convierte a PostScript y, a continuación, se envía a la impresora. En el campo PrinterType la variable local (PrinterType) debe estar configurada como una variable de enumeración. Consulte el tema "Valores locales" en la aplicación Workflow Composer para obtener más información. with PrintForm .input=MergeForm.output .IPAddress=local.PrinterAddress .PrinterType=local.PrinterType .PrintOptions=po .WaitForCompletion=FALSE .Go() endwith Scripts de Document Producer 23 Material confidencial de Lexmark hasta próximo aviso Para ejecutar este script: 1 Cárguelo en el servidor con Workflow Composer o Server Manager. 2 Configure la información de la impresora mediante los valores locales. 3 Cargue el ejemplo de nota de cargo incluido con Forms Composer. Cree una canalización con nombre denominada "test". Para obtener más información al respecto, consulte el Apéndice B. 4 Abra una ventana de símbolo del sistema en el equipo donde está instalado Document Server. Mediante el archivo de datos de ejemplo incluido en Forms Composer, emule un flujo de impresión escribiendo lo siguiente: copy /b debittext.txt \\.\pipe\test La opción /b realiza una copia binaria. El archivo debittext.txt contiene un archivo de datos de ejemplo con un formato como si se enviaran a una impresora. Con \\.\pipe\test se copia el archivo en la canalización con nombre creada en el Apéndice B. Si se ejecuta desde otro ordenador en el que no esté instalado Document Server, reemplace "." (punto) por la dirección IP del equipo donde está instalado el servidor. Nota: para obtener información sobre cómo configurar colas de impresora de Windows, consulte la ayuda en línea de Forms Composer y Server Manager. Scripts de Document Producer 24 Material confidencial de Lexmark hasta próximo aviso Ejemplo 9: combinación de datos y envío por fax de un formulario Descripción general: combinación de datos en un formulario y envío por fax Detalles: con Document Producer, una empresa va a redirigir su flujo de impresión ASCII desde una impresora cargada con formularios preimpresos a Document Server. Este script se utiliza para combinar los datos entrantes con un FormSet creado con Forms Composer y enviar por fax el documento creado. Script: 1 Utilice los datos entrantes, original.dataset, con la acción MergeForm para crear un PDF del formulario relleno. with MergeForm .input=original.dataset .Go() endwith 2 La salida de la acción MergeForm es un PDF. Se tiene que convertir en una imagen TIFF de modo que se pueda convertir en PostScript. with ConvertImageFormat .input=MergeForm.output .Format=LDD_IMGFORMAT_TIFG4 .ColorDepth=LDD_IMGDEPTH_BW .AllPages=TRUE .Go() endwith 3 Convierta la imagen TIFF en PostScript para que se pueda enviar por fax. with ConvertToDocument .input=ConvertImageFormat.output .Format=LDD_DOCFORMAT_PS .AllPages=TRUE .PaperSize=LDD_PAPERSIZE_LETTER .Orientation=LDD_ORIENTATION_AUTO .Go() endwith 4 Obtenga el número de teléfono del fax a partir del dataset enviado. Cualquier valor de variable de un FormSet se puede recuperar y utilizar en un script. string faxnumber = original.dataset.GetDataItem("FAX_NUMBER") 5 Utilice la acción FaxByPrinter para enviar el fax. El fax se envía mediante una impresora multifunción con funciones de fax. La dirección IP de la impresora multifunción se configura mediante un valor local. with FaxByPrinter .input=ConvertToDocument.output .IPAddress=local.IpAddress .StationID="ID de estación de fax" .FaxNumber=faxnumber Scripts de Document Producer 25 Material confidencial de Lexmark hasta próximo aviso .WaitForCompletion=FALSE .RedialMinutes=5 .RedialTimes=3 .Go() endwith Para ejecutar este script: 1 Cárguelo en el servidor con Workflow Composer o Server Manager. 2 Configure la información de la impresora mediante los valores locales. 3 Cargue el ejemplo de portada de fax incluido con Forms Composer. Cree una canalización con nombre denominada "test". Para obtener más información al respecto, consulte el Apéndice B. 4 Abra una ventana de símbolo del sistema en el equipo donde está instalado Document Server. Mediante el archivo de datos de ejemplo incluido en Forms Composer, emule un flujo de impresión escribiendo lo siguiente: copy /b faxcover.txt \\.\pipe\test La opción /b realiza una copia binaria. El archivo faxcover.txt contiene un archivo de datos de ejemplo con un formato como si se enviaran a una impresora. Con \\.\pipe\test se copia el archivo en la canalización con nombre creada en el Apéndice B. Si se ejecuta desde otro ordenador en el que no esté instalado Document Server, reemplace "." (punto) por la dirección IP del equipo donde está instalado el servidor. Nota: aunque el script sólo recupera el número de fax, se puede obtener una dirección de e-mail, un número de cliente o cualquier otra variable de un FormSet. Estos valores se pueden utilizar en el script. Este script envía por fax mediante una impresora multifunción; se puede escribir el script de modo que envíe por fax a través de un servidor de fax que admita e-mail SMTP. El formulario también se podría archivar para utilizarlo posteriormente mediante cualquier acción admitida por el servidor. Scripts de Document Producer 26 4 Scripts de Document Portal Ejemplo 10: impresión de un formulario en blanco Descripción general: impresión de un formulario en blanco Detalles: se trata de un script básico que utiliza Document Portal para imprimir formularios en blanco mediante una impresora PostScript. Script: 1 Cree un dataset que se pasará a la acción MergeForm. Este dataset sólo contendrá el nombre del FormSet que se utilizará; no se pasará ningún dato ya que se desea un formulario en blanco. El FormSet que se utilizará se pasa mediante la propiedad formsetname del objeto original. dataset merge_input merge_input.SetFormset(original.formsetname) 2 Utilice la acción MergeForm para generar el formulario PDF en blanco. with MergeForm .input=merge_input .Go() endwith 3 Utilice la acción PrintForm para imprimir el PDF generado por la acción MergeForm. La dirección IP de la impresora y las opciones de impresión que se utilizarán se pasan mediante las propiedades printerip y printeroptions del objeto original. Estos valores se configuran en Document Portal Admin. En este caso, el tipo de impresora se define en PostScript; si la impresora que se va a utilizar tiene la opción ImageQuick, cambie el tipo de impresora a LDD_PRINTERTYPE_LEXIQ. with PrintForm .input=MergeForm.output .IPAddress=original.printerip .PrinterType=LDD_PRINTERTYPE_LEXPS .PrintOptions=original.printoptions .WaitForCompletion=FALSE .Go() endwith Scripts de Document Portal 27 Para ejecutar este script: 1 Cargue el script en el servidor con Document Portal Admin. NO utilice Workflow Composer ni Server Manager para cargarlo. 2 Si no se ha cargado ningún PDF o FormSet en el servidor, cargue uno. Asocie el script a un FormSet cargado. 3 Utilizando una impresora multifunción con pantalla táctil, seleccione el icono Formularios y, a continuación, seleccione el formulario asociado a este script. Scripts de Document Portal 28 Ejemplo 11: solicitud al usuario e impresión de un formulario en blanco Descripción general: solicitud al usuario e impresión del formulario seleccionado Detalles: este script resulta útil para impresoras en color. Pregunta al usuario si el formulario se debe imprimir en color o en blanco y negro. De este modo se puede utilizar un solo script para ambos tipos de salida. Script: 1 Este script realiza una pregunta al usuario final, por lo que hay que configurarla aquí. La pregunta es una lista de selección única que permite al usuario seleccionar la salida en blanco y negro o en color. Al igual que todos los scripts que hacen preguntas, todas las solicitudes y variables utilizadas en el bloque prompt se deben declarar antes de introducir el bloque prompt. stringprompt color with color .SetPromptText("Seleccione la salida de color deseada:") .AddPromptOption("Blanco y negro") .AddPromptOption("Color") endwith 2 La pregunta ya se ha preparado. Ahora el bloque prompt se utiliza para realizar la pregunta. Cuando el usuario selecciona este script, es la parte del mismo que se ejecuta antes de que se envíe el trabajo al servidor. Debido a que sólo hay una pregunta, únicamente se necesita un paso. prompt step "prompts" ask(color) laststep endprompt 3 Una vez efectuada la pregunta, el trabajo se envía como los demás trabajos en los que no se hacen preguntas. El script reanudará la ejecución en este punto cuando se reinicie el trabajo. 4 Cree un dataset que se pasará a la acción MergeForm. Este dataset sólo contendrá el nombre del FormSet que se utilizará; no se pasará ningún dato ya que se desea un formulario en blanco. El FormSet que se utilizará se pasa mediante la propiedad formsetname del objeto original. dataset merge_input merge_input.SetFormset(original.formsetname) 5 Utilice la acción MergeForm para generar el formulario PDF en blanco. with MergeForm .input=merge_input .Go() endwith Scripts de Document Portal 29 6 El script modificará las opciones de impresión enviadas junto con el trabajo. Según la selección del usuario, la impresora se configurará para imprimir con los cartuchos de color o sólo con el cartucho negro. printoptions opts = original.printoptions if (color == "Color") opts.SetJobOption(LDD_PRINTOPTION_COLORMODEL, LDD_COLORMODEL_CMYK) else opts.SetJobOption(LDD_PRINTOPTION_COLORMODEL, LDD_COLORMODEL_BLACK) endif 7 Utilice la acción PrintForm para imprimir el PDF generado por la acción MergeForm. La dirección IP de la impresora se pasa mediante la propiedad printerip del objeto original. Las opciones de impresión son la versión modificada creada en el paso anterior. Los valores de impresión originales se configuran en Document Portal Admin. En este caso, el tipo de impresora se define en PostScript; si la impresora que se va a utilizar tiene la opción ImageQuick, cambie el tipo de impresora a LDD_PRINTERTYPE_LEXIQ. with PrintForm .input=MergeForm.output .IPAddress=original.printerip .PrinterType=LDD_PRINTERTYPE_LEXPS .PrintOptions=opts .WaitForCompletion=FALSE .Go() endwith Para ejecutar este script: 1 Cargue el script en el servidor con Document Portal Admin. NO utilice Workflow Composer ni Server Manager para cargarlo. 2 Si no se ha cargado ningún PDF o FormSet en el servidor, cargue uno. Asocie el script a un FormSet cargado. 3 Utilizando una impresora multifunción con pantalla táctil conectada a una impresora en color, seleccione el icono Formularios y, a continuación, seleccione el formulario asociado a este script. Scripts de Document Portal 30 Apéndice A: configuración de ODBC Siga estos pasos para crear las conexiones DSN de ODBC utilizadas en los ejemplos 4 y 7. Los DSN se crean en el mismo equipo en el que está instalado Document Server. 1 En Windows NT: Vaya a Configuración Panel de control. En Windows 2000/XP: Vaya a Configuración Panel de control administrativas. Herramientas 2 Seleccione Orígenes de datos (ODBC). 3 Seleccione la ficha DSN de sistema. Haga clic en Agregar. Aparece la lista de los controladores ODBC que se han instalado en este equipo. Seleccione "Microsoft Access Driver (*.mdb)" en la lista y haga clic en Finalizar. 4 Aparece el cuadro de diálogo Configuración de ODBC Microsoft Access. Para el ejemplo 4, introduzca el nombre del origen de datos "LDD1"; para el ejemplo 7, introduzca "LDD2". Haga clic en el botón Seleccionar para buscar la base de datos que utilizará esta conexión. Para el ejemplo 4, seleccione la base de datos "resumes.mdb". Para el ejemplo 7, seleccione "stores.mdb". Haga clic en Aceptar. 5 Después de agregar ambas bases de datos, aparecerán en la lista DSN de sistema. 6 Haga clic en Aceptar para cerrar el cuadro de diálogo. Ahora las conexiones están configuradas y se pueden utilizar desde un script. Cuando se carguen los scripts, habrá disponibles valores locales para los ejemplos 4 y 7 que permiten configurar los valores ODBC. En general, se necesitan dos datos para todas las conexiones ODBC, mientras que los otros dos son opcionales. – – – – Se debe proporcionar el DSN. El nombre del origen de datos es el que se proporciona en el paso 4 anterior. Se debe proporcionar el nombre de tabla. Se trata del nombre de la tabla que contiene los datos utilizados en el script. Si se utilizan las bases de datos incluidas en los ejemplos, se pueden usar los nombres de tabla predeterminados proporcionados en los valores locales. El nombre de usuario es opcional. Si no se requiere conexión, se puede quedar en blanco. (De forma predeterminada, no se requiere conexión para Access.) La contraseña es opcional. Si no se requiere conexión, se puede quedar en blanco. 31 Apéndice B: configuración de FormSet En este apéndice se describen los pasos necesarios para cargar un FormSet y configurar la canalización con nombre con el fin de trabajar con él. Esta información se utiliza para ejecutar los ejemplos 8 y 9. En Server Manager: 1 Si no lo ha hecho aún, cargue el script que se usará para este FormSet. Para estos ejemplos, cargue los scripts "example08.xdd" o "example09.xdd". 2 Haga clic en Agregar FormSet en la página de inicio. De este modo se inicia el Asistente para agregar Formsets. El primer paso del asistente consiste en seleccionar el FormSet que se cargará. Para el ejemplo 8, seleccione "debitmemo.fdd"; para el ejemplo 9, seleccione "faxcover.fdd". Ambos están incluidos en el directorio de ejemplos instalados con Forms Composer. Haga clic en Siguiente. La siguiente página del asistente le permite seleccionar la acción que se ejecutará cuando se reciban datos para este FormSet. Hay tres opciones: – – – la canalización especificará la acción o se especificará en el flujo de datos se debe utilizar una de las acciones predefinidas o se debe utilizar un script personalizado. Para nuestros ejemplos, utilizaremos un script personalizado. Seleccione el script adecuado (example08 o example09) en la lista. 3 Haga clic en Siguiente. La última página del asistente proporciona un resumen. Si no ha creado anteriormente la canalización con nombre para utilizarla en los ejemplos, desactive la casilla que inicia el Asistente para crear canalizaciones con nombre. 4 Haga clic en Terminar. Si tiene que crear la canalización con nombre, se iniciará el Asistente para crear canalizaciones con nombre; de lo contrario, terminará y podrá continuar con la ejecución del script. 5 Para el Asistente para crear canalizaciones con nombre, el primer paso es dar nombre a la canalización. En nuestros ejemplos, sólo crearemos una canalización. Se puede utilizar en los ejemplos 8 y 9. Denomine "test" a la canalización e introduzca una descripción si lo desea. Haga clic en Siguiente. 6 La siguiente página del asistente configura la canalización con el fin de aceptar datos para un FormSet específico o varios FormSets. Debido a que la canalización se va a crear para los ejemplos 8 y 9, seleccione "Varios Formsets utilizarán esta canalización". Haga clic en Siguiente. 32 7 La siguiente página del asistente configura la acción que se realizará cuando se reciban datos en la canalización. Es similar a la página del Asistente para agregar FormSets que permite configurar lo que sucede cuando se reciben datos para el Formset. Debido a que ya se ha configurado lo que sucede con el Formset (ejecuta un script personalizado), seleccione "La acción se especificará en el flujo de impresión". Haga clic en Siguiente. 8 La siguiente página del asistente permite configurar el tipo de datos que recibe la canalización. En nuestro caso, enviaremos archivos de texto; por lo tanto, el tipo de datos es siempre el mismo. Seleccione "Los datos siempre son de este tipo" y elija "un flujo de texto normal" en la lista. Haga clic en Siguiente. 9 La última página del asistente presenta un resumen de las opciones seleccionadas. Haga clic en Terminar. Ahora ya puede ejecutar el script. Para obtener más información sobre las distintas opciones al cargar Formsets y al crear canalizaciones con nombre, consulte la ayuda en línea disponible en Server Manager. 33 Lexmark y Lexmark con diamante son marcas comerciales de Lexmark International, Inc., registradas en los Estados Unidos y/o en otros países. © 2003 Lexmark International, Inc. 740 West New Circle Road Lexington, Kentucky 40550 www.lexmark.com