===== Generación de PDFs ===== \\ En Android e iOS, es posible generar ficheros PDF mediante script. \\ A continuación se describen brevemente las funciones.\\ \\ Set pdf01 = CreateObject("XOnePDF") \\ Con esto inicializamos un objeto **xonepdf** al que podemos modificarle las propiedades con los siguientes métodos. ==== Create ==== pdf01.Create "/mnt/sdcard/test.pdf" pdf01.Create "/mnt/sdcard/test.pdf", 700, 300 \\ Aquí creamos el archivo. \\ Es esencial llamar a este método antes que nada.\\ Es posible encriptar el documento con encriptación estándar de 128 bits.\\ \\ | **Primer parámetro** | Ruta del fichero. Si le pasamos una ruta completa, lo escribirá ahí. Esto es útil para previsualizar el PDF a la hora de desarrollar la aplicación. Si sólo se especifica el nombre, el fichero irá a la carpeta files. | | **Segundo parámetro** | Opcional junto al tercero. Indica el ancho del documento. Los valores posibles van entre 0 y 14400. | | **Tercer parámetro**| Opcional junto al segundo. Indica el alto del documento. Los valores posibles van entre 0 y 14400.| ==== Open ==== pdf01.Open \\ Abre el documento para escribir sobre él.\\ Es necesario llamarlo antes de empezar a dibujar sobre él y después de ajustar la encriptación y los permisos. ==== Close ==== pdf01.Close Set pdf01 = nothing \\ Aquí se aplican todos los cambios al PDF, se guarda, se cierra y destruimos el objeto.\\ Es esencial y hay que llamarlo al final. ==== SetFont ==== pdf01.SetFont "helvetica" Cambia la fuente.\\ \\ |**Valores posibles** | helvetica, courier, times. | \\ En vez de usar cualquiera de estas tres fuentes incrustadas, se puede especificar como parámetro la ruta de un archivo de tipo de letra, de extensión //.ttf// o //.otf.// \\ Si sólo se especifica el nombre del fichero, lo buscará en la carpeta /**fonts**/ del proyecto.\\ \\ Si no existe, hay que crearla. \\ ==== SetFontSize ==== pdf01.SetFontSize 10 \\ Ajustar el tamaño de la fuente. ==== SetFontStyle ==== pdf01.SetFontStyle "bold" \\ Opciones de letra. \\ \\ |**Valores posibles**|| |**italic**| (cursiva)| |**bold**|(negrita)| |**underline**| (subrayado)| |**strike**| (tachado)| |**bolditalic** |(negrita cursiva)| |**boldunderline** |(negrita subrayado)| |**bolditalicunderline** |(negrita subrayado cursiva)| |**italicunderline** |(cursiva subrayado) y normal| ==== SetFontColor ==== pdf01.SetFontColor "#0000AA" \\ \\ Color de la fuente en notación HTML. \\ ==== AddText ==== pdf01.AddText "Consejería de Sanidad y Asuntos Sociales" \\ Añade un texto sin salto de línea.\\ \\ ==== AddTextLine ==== \\ pdf01.AddTextLine "Consejería de Sanidad y Asuntos Sociales" \\ Añade un texto con salto de línea al documento.\\ \\ ==== AddImage ==== \\ pdf01.AddImage "logoxone.png", 50, 50 \\ Añade una imagen al documento de la carpeta files, se puede especificar una ruta completa para pruebas.\\ \\ | **Primer parámetro** | Ruta. | | **Segundo parámetro** | Opcional. Redimensiona el ancho de la imagen. | | **Tercer parámetro**| Opcional. Redimensiona el alto de la imagen.| \\ ==== AddHyperlink ==== \\ pdf01.AddHyperlink "Google", "http://www.google.com" \\ Añade un enlace al documento. ==== AddTextSetX ==== \\ pdf01.AddTextSetX "Consejería de Sanidad y Asuntos Sociales", 125 Añade texto en la posición absoluta según el eje X y la posición actual en el eje Y.\\ \\ |**Primer parámetro** | Texto a añadir. | |**Segundo parámetro**| Posición en el eje X. | ==== AddCheckboxSetX ==== \\ pdf01.AddCheckboxSetX "Se realiza toma de muestra", 230, 145, 20, "check", "true", "true" \\ Añade un control de tipo checkbox al documento.\\ \\ | **Primer parámetro** | Texto que le acompaña. | | **Segundo parámetro** | Posición en el eje X. | | **Tercer parámetro**| Tipo de checkbox. Valores posibles:"star", "square", "circle", "cross", "diamond", "check".| | **Cuarto parámetro** | Opcional.Valor del checkbox. Valores posibles: "true", "false". | | **Quinto parámetro** | Opcional. Checkbox de sólo lectura. Valores posibles: "true", "false". Algunos lectores de PDF podrían no respetarlo, para bloquear completamente combinar con setencryption | \\ ==== AddImageSetX ==== \\ pdf01.AddImageSetX "logoxone.png", 125, 50, 50 Añade una imagen al documento de la carpeta files, en la posición especificada en el eje X.\\ \\ | **Primer parámetro** | Ruta. | | **Segundo parámetro** | Posición en el eje X. | | **Tercer parámetro**| Opcional. Redimensiona el ancho de la imagen.| | **Cuarto parámetro** | Opcional. Redimensiona el alto de la imagen. | \\ ==== AddTextFieldSetX ==== \\ pdf01.AddTextFieldSetX "campo02", 250, 50, 100 Añade un campo de texto editable. \\ El documento no debe estar bloqueado.\\ \\ | **Primer parámetro** | Nombre interno para poder referenciar al campo más tarde. | | **Segundo parámetro** | Ancho del campo de texto. | | **Tercer parámetro**| Alto del campo de texto.| | **Cuarto parámetro** | Posición en el eje X. | \\ ==== NewLine ==== \\ pdf01.NewLine Añade una nueva línea. \\ Se le puede pasar un entero como parámetro y hará esos saltos.\\ \\ ==== NewPage ==== \\ pdf01.NewPage Salta a la página siguiente del PDF.\\ \\ ===== Opciones de dibujo directo ===== ==== GetVerticalPosition ==== \\ nYPos = pdf01.GetVerticalPosition \\ Obtiene la posición actual del cursor en el eje Y.\\ \\ Este método se introdujo oficialmente en la versión 1.3.1.0 del módulo xonepdf. \\ \\ ==== AddTextSetXY ==== \\ pdf01.AddTextSetXY "Consejería de Sanidad y Asuntos Sociales", 125, 750 \\ Añade texto en la posición absoluta según el eje X e Y.\\ \\ | **Primer parámetro** | Texto a añadir. | | **Segundo parámetro** | Posición en el eje X. | | **Tercer parámetro**| Posición en el eje Y.| \\ ==== AddSquare ==== \\ pdf01.AddSquare 100, 700, 20, 1 Dibuja un cuadrado en el documento.\\ \\ | **Primer parámetro** | Posición en el eje X del ángulo inferior izquierdo. | | **Segundo parámetro** | Posición en el eje y del ángulo inferior izquierdo. | | **Tercer parámetro**| Tamaño del cuadrado.| | **Cuarto parámetro** | Grosor de la línea del cuadrado. | | **Quinto parámetro** | Opcional. Color de fondo del cuadrado. | | **Sexto parámetro** | Opcional. Color de la línea del cuadrado. | \\ ==== AddRectangle ==== \\ pdf01.AddRectangle 100, 700, 150, 100, 1 \\ Dibuja un rectángulo en el documento.\\ \\ | **Primer parámetro** | Posición en el eje X del ángulo inferior izquierdo. | | **Segundo parámetro** | Posición en el eje Y del ángulo inferior izquierdo. | | **Tercer parámetro**| Ancho del rectángulo.| | **Cuarto parámetro** | Alto del rectángulo. | | **Quinto parámetro** | Grosor de la línea del rectángulo. | | **Sexto parámetro** | Opcional. Color de fondo del rectángulo. | | **Séptimo parámetro** | Opcional. Color de la línea del rectángulo. | \\ ==== AddImageSetXY ==== \\ pdf01.AddImageSetXY "logoxone.png", 0, 750, 50, 50 Añade una imagen al documento de la carpeta files, en la posición especificada.\\ \\ | **Primer parámetro** | Ruta. | | **Segundo parámetro** | Posición en el eje X . | | **Tercer parámetro**| Posición en el eje Y.| | **Cuarto parámetro** | Opcional. Redimensiona el ancho de la imagen. | | **Quinto parámetro** | Opcional. Redimensiona el alto de la imagen. | \\ ==== AddCheckboxSetXY ==== \\ pdf01.AddCheckboxSetXY "Se realiza toma de muestra", 230, 145, 20, "check", "true", "true" Añade un control de tipo checkbox al documento.\\ \\ | **Primer parámetro** | Texto que le acompaña. | | **Segundo parámetro** | Posición en el eje X. | | **Tercer parámetro**| Posición en el eje Y.| | **Cuarto parámetro** | Tipo de checkbox. Valores posibles: "**star**", "**square**", "**circle**", "**cross**", "**diamond**", "**check**". | | **Quinto parámetro** | Opcional. Valor del checkbox. Valores posibles: "true", "false". | | **Sexto parámetro** | Opcional. Checkbox de solo lectura. Valores posibles: "**true**", "**false**". Algunos lectores de PDF podrían no respetarlo, para bloquear completamente combinar con setencryption. | \\ ==== AddBarcode ==== \\ pdf01.AddBarcode "(00)350123451234567894", "ean128", 100, 100, 100, 200 Añade un código de barras al documento. \\ Los 4 primeros parámetros son obligatorios, los dos últimos son opcionales.\\ \\ | **Primer parámetro** | Dato para generar el código. Debe pasarse con el formato adecuado para cada código de barras.| | **Segundo parámetro** | Tipo de código de barras. Códigos de barras soportados: **codabar, code11, code128, code25, code39, code93, datamatrix, ean128, ean13, ean8, isbn, issn, itf14, identcode, interleaved2of5, leitcode, msi, onecode, pdf417, planet, postnet, rm4scc, upca, upce.**| | **Tercer parámetro** | Ancho del código de barras.| | **Cuarto parámetro** | Alto del código de barras. | | **Quinto parámetro** | Opcional. Posición en el eje X.| | **Sexto parámetro** | Opcional. Posición en el eje Y. | \\ \\ /* | **Primer parámetro** | Texto que le acompaña. | | **Segundo parámetro** | Posición en el eje X. | | **Tercer parámetro**| Posición en el eje Y.| | **Cuarto parámetro** | Tipo de checkbox. Valores posibles: "star", "square", "circle", "cross", "diamond", "check". | | **Quinto parámetro** | Opcional. Valor del checkbox. Valores posibles: "true", "false". | | **Sexto parámetro** | Opcional. Checkbox de sólo lectura. Valores posibles: "true", "false". Algunos lectores de PDF podrían no respetarlo, para bloquear completamente combinar con setencryption. | */ ==== AddBarcode (QRCode) ==== \\ pdf01.AddBarcode "BIZCARD:N:Pepito;X:Grillo;T:Programador informático;C:CGSoft;A:Dirección;B:+34600404040;F:+34924202020;M:+34902202020;E:pepe@xone.es;;", "qrcode", 300, 300 \\ Añade un código QR al documento.\\ Debe seguir el formato pasado en el ejemplo, por lo demás, igual que el anterior método.\\ \\ ==== AddTextFieldSetXY ==== \\ pdf01.AddTextFieldSetXY "campo01", 250, 50, 100, 700 Añade un campo de texto editable en el eje XY. \\ El documento no debe estar bloqueado.\\ \\ | **Primer parámetro** | Nombre interno para poder referenciar al campo más tarde. | | **Segundo parámetro** | Ancho del campo de texto. | | **Tercer parámetro**| Alto del campo de texto.| | **Cuarto parámetro** | Posición en el eje X. | | **Quinto parámetro** | Posición en el eje Y. | \\ ===== Tablas ===== \\ ==== CreateTable ==== \\ pdf01.CreateTable 5 Inicializa una tabla simple.\\ \\ | **Primer parámetro** | Número de columnas de una fila. | \\ ==== SetTableCellWidths ==== \\ pdf01.SetTableCellWidths 50, 100, 150 Ajusta el ancho de las columnas.\\ Debe invocarse con tantos parámetros como columnas se hayan definido en la tabla.\\ \\ Este método se introdujo en la versión 1.3.1.0 del módulo xonepdf.\\ \\ ==== SetAlignment ==== \\ pdf01.SetAlignment "center" pdf01.SetAlignment "left" pdf01.SetAlignment "right" pdf01.SetAlignment "none" Especifica la orientación del texto en las celdas subsiguientes. \\ Ajustar a "**none**" para volver a la orientación normal.\\ \\ ==== SetTableWidth ==== \\ pdf01.SetTableWidth 300 \\ Con esto ajustamos el ancho total de la tabla. \\ El alto vendrá determinado por el número de filas añadidas.\\ \\ ==== SetCellBorder ==== \\ pdf01.SetCellBorder "top" \\ Al invocar este método, las celdas siguientes que se añadan a la tabla abierta tendrán el borde especificado. \\ Estas llamadas se pueden sumar para tener esquinas, por ejemplo.\\ \\ Por defecto las celdas tienen todos los bordes.\\ \\ |**Valores posibles:**| | |setcellborder "**none**". |Quita todos los bordes.| |setcellborder"**top**" |Añade el borde superior.| |setcellborder "**bottom**" |Añade el borde inferior.| |setcellborder "**right**" |Añade el borde derecha.| |setcellborder "**left**" |Añade el borde izquierda.| |setcellborder "**all**"| Añade todos los bordes.| ==== AddCellText ==== pdf01.AddCellText "Transportistas S.A.","#000000" \\ Añade una celda con texto a la tabla.\\ Se irán añadiendo según el orden de aparición en el script.\\ \\ | **Primer parámetro** | Texto a introducir. | | **Segundo parámetro** | Opcional. Color de fondo de la celda. | ==== AddCellHyperlink ==== pdf01.AddCellHyperlink "Google", "http://www.google.com" \\ Añade un enlace a la celda de la tabla.\\ \\ | **Primer parámetro** | Texto de enlace. | | **Segundo parámetro** | URL del enlace. | ==== AddCellImage ==== pdf01.AddCellImage "/mnt/sdcard/xone/logoxone.gif" Añade una imagen a la tabla. \\ Se irán añadiendo según el orden de aparición en el script.\\ \\ | **Primer parámetro** | Ruta de la imagen. Si sólo se especifica el nombre, buscará en la carpeta files de la aplicación. | | **Segundo parámetro** | Opcional. Para reescalado. Ancho de la imagen en píxeles. | | **Tercer parámetro**| Opcional. Para reescalado. Alto de la imagen en píxeles. | ==== AddTable ==== pdf01.AddTable Finaliza la tabla y la añade al documento.\\ Es imprescindible llamar a esta función o a su función hermana addtablesetxy. ==== AddTableSetXY ==== pdf01.AddTableSetXY 50, 600 Finaliza la tabla y la añade al documento en la posición especificada en el eje X e Y que se le pase por parámetro.\\ Es imprescindible llamar a esta función o a su función hermana addtable.\\ Antes de dibujar directamente una tabla en el documento, hace falta especificar su ancho con settablewidth. ===== Cabecera y pie de página ===== ==== BeginHeader ==== pdf01.BeginHeader Las siguientes llamadas de dibujo del pdf constituirán la cabecera del documento, hasta que se llame a endheader. ==== EndHeader ==== pdf01.EndHeader Finaliza el bloque de la cabecera. ==== BeginFooter ==== pdf01.BeginFooter Las siguientes llamadas de dibujo del pdf constituirán el pie de página del documento, hasta que se llame a endfooter. ==== EndFooter ==== pdf01.EndFooter Finaliza el bloque del pie de página. === Ejemplo de uso de cabecera y pie de página === Es necesario definir la cabecera antes de que la llamada a pdf01.Open, pues en ese momento se abre el documento. pdf01.BeginHeader pdf01.AddImageSetXY "logoempresa.png", 0, 750, 100, 50 pdf01.SetFont "helvetica" pdf01.SetFontSize 10 pdf01.SetFontStyle "bold" pdf01.SetFontColor "#0000AA" pdf01.AddTextLine chr(10) + chr(10) + chr(10) + " Sociedad Limitada" pdf01.EndHeader pdf01.BeginFooter pdf01.CreateTable 1 pdf01.SetTableWidth 300 pdf01.SetCellBorder "all" pdf01.SetAlignment "center" pdf01.AddCellText "Pie de página, línea 1" pdf01.AddCellText "Pie de página, línea 2" pdf01.AddTableSetXY 0, 600 pdf01.EndFooter pdf01.Open ===== Otros ===== ==== LaunchPDF ==== pdf01.LaunchPDF "/mnt/sdcard/xone/testpdf01.pdf" Este método manda a Android la orden de abrir el PDF especificado en el lector de PDFs que haya instalado en el sistema. Vale cualquier archivo PDF. Es suficiente con instalar el "Adobe Reader" desde la Play Store.\\ Se puede, por ejemplo, generar el PDF, pedirle al usuario que lo rellene mediante este método y mandarlo a imprimir.\\ No se pueden lanzar PDFs generados con XOne que no hayan sido finalizados con el método Close.\\ Si no se especifica la ruta completa se buscará en la carpeta files.\\ Este método tira una excepción si no encuentra el documento, abortando el script.\\ ==== GetCurrentPage ==== nPagina = pdf01.GetCurrentPage Este método devuelve la página en la cual se encuentra el cursor en el momento de llamarlo. \\ Puede servir para el pie de página.\\ Este método se introdujo en la versión 1.3.1.0 del módulo xonepdf. ==== AddAttachment ==== pdf01.AddAttachment "/mnt/sdcard/xone/archivoadjunto.txt" Adjunta (incrusta) un fichero al pdf. \\ Pueden ser de todo tipo, incluso una URL.\\ ==== Delete ==== pdf01.Delete "/mnt/sdcard/xone/testpdf01.pdf" Borra el fichero. ==== SetPDFVersion ==== pdf01.SetPDFVersion "1.7" Ajusta la versión del formato de PDF que se quiere generar.\\ Por defecto se ajusta a **"1.7"**. \\ Valores inferiores a éste podrían no soportar el resto de métodos. \\ |**Valores posibles**| |"1.2" | |"1.3"| |"1.4"| |"1.5"| |"1.6"| |"1.7"| \\ Debe invocarse antes que Open(). \\ ==== SetCompression ==== pdf01.SetCompression "false" Define si se quiere comprimir el documento. \\ Por defecto es igual a **true**.\\ ==== Opciones de metadatos ==== Estos métodos modifican las propiedades del documento, tales como el autor y la fecha de creación. pdf01.AddTitle "Título del documento" pdf01.AddAuthor "John Doe" pdf01.AddCreationDate "10/10/2010" pdf01.AddCreator "John Doe" pdf01.AddKeywords "palabra clave" pdf01.AddSubject "Asunto" ======== Protección del PDF y permisos ======== ==== Permissions ==== pdf01.Permissions "degradedprint" pdf01.Permissions "modifyannotations" pdf01.Permissions "screenreaders" pdf01.Permissions "assembly" pdf01.Permissions "print" pdf01.Permissions "copy" pdf01.Permissions "modifycontents" pdf01.Permissions "fillin" Ajusta los permisos que contendrá el documento.\\ Se debe invocar en este orden si se quiere que los permisos tengan efecto:\\ \\ **Create**() -> **Permissions**() -> setencryption().\\ \\ Se pueden añadir varias llamadas para sumar permisos. \\ Con "**clear**", se reinicia la actual selección de permisos, pero este método no tiene efecto si es llamado después de setencryption().\\ ==== SetEncryption ==== pdf01.SetEncryption "passwordusuario", "passwordpropietario", "128bits" Define la encriptación del documento.\\ Es necesario llamarlo si se quiere que los permisos hagan efecto. \\ Se pueden dejar las contraseñas a null. \\ Debe llamarse después de **Create**(), después de **Permissions**() y antes de **Open**().\\ |**Primer parámetro**| Contraseña de lectura. | |**Segundo parámetro**| Contraseña de propietario. El propietario tendrá todos los permisos sobre el documento. | |**Tercer parámetro**| Tamaño del bloque de encriptación. Valores posibles: **"40bits", "128bits"** | ==== EncryptPDF ==== \\ pdf01.EncryptPDF "/mnt/sdcard/desencriptado.pdf", "encriptado.pdf", "passwordusuario", "passwordpropietario", "128bits" \\ Encripta un PDF.\\ \\ |**Primer parámetro**| Ruta origen. | |**Segundo parámetro**| Ruta destino. | |**Tercer parámetro**| Password del usuario. | |**Cuarto parámetro**| Password del propietario. | |**Quinto parámetro**| Bits de bloque de la encriptación. Valores posibles:**"40bits", "128bits"** . | ==== DecryptPDF ==== pdf01.DecryptPDF "encriptado.pdf", "/mnt/sdcard/desencriptado.pdf", "passwordpropietario" Desencripta un fichero. \\ |**Primer parámetro**| Ruta origen. | |**Segundo parámetro**| Ruta destino. | |**Tercer parámetro**| Password del propietario. | ==== EncryptWithCertificate ==== pdf01.EncryptWithCertificate "testpdf.pdf", "testpdfencriptado.pdf", "certificado.cer" Encripta un documento usando un certificado. ==== SignPDFWithKey ==== pdf01.SignPDFWithKey "testpdf.pdf", "testpdffirmado.pdf", "keystore.pfx", "1234", "Nombre de la clave", "Contraseña de la clave" Firma digitalmente un documento. ===== Ayudas visuales para posicionamiento ===== Cuando estemos creando nuestro PDF, podemos hacer uso de la siguiente función para ayudarnos a posicionar los distintos elementos en el eje de coordenadas que es nuestro archivo, de forma que sea mucho más sencilla su maquetación. function showGridDebug(pdf) 'Tabla para saber las posiciones X e Y de un PDF 'Para el EJE X pdf.SetAlignment "center" pdf.SetFontSize 9 pdf.SetFontStyle "bold" pdf.SetFontColor "#0000CC" for i=2 to 26 i=cint(i*20) 'Esta es la primera fila del Eje X, Arriba, Y=840 pdf.CreateTable 1 pdf.SetTableWidth 20 pdf.AddCellText i pdf.AddTableSetXY i,840 'pdf.AddRectangle PosX, PosY, Ancho, Alto, Grosor, ColorFondo, ColorLinea pdf.AddRectangle i, 20, 0, 820, 0, "#FF0000", "#FF0000" 'Esta es la segunda fila del Eje X, Abajo, Y=20 pdf.CreateTable 1 pdf.SetTableWidth 20 pdf.AddCellText i pdf.AddTableSetXY i,20 next 'Para el EJE Y pdf.SetFontColor "#009900" for i=0 to 42 i=cint(i*20) 'Esta es la primera columna del Eje Y, en la izquierda X=10 pdf.CreateTable 1 'pdf.AddCellText "10,"+i pdf.SetTableWidth 30 pdf.AddCellText i pdf.AddTableSetXY 10,i 'pdf.AddRectangle PosX, PosY, Ancho, Alto, Grosor, ColorFondo, ColorLinea pdf.AddRectangle 10, i, 540, 0, 0, "#FF0000", "#FF0000" 'Esta es la segunda columna del Eje Y, en la derecha X=540 pdf.CreateTable 1 pdf.SetTableWidth 30 'pdf.AddCellText "540,"+i pdf.AddCellText i pdf.AddTableSetXY 540,i next pdf.SetFontStyle "normal" pdf.SetFontColor "#000000" end function | {{ :b.-programacion:b18.-extras:b18.9.-generacion-de-pdfs-mediante-xonescript:imagen_grid_pdf_wiki.png?nolink |}} | {{ :b.-programacion:b18.-extras:b18.9.-generacion-de-pdfs-mediante-xonescript:imagen_grid_pdf_mini_wiki.png?nolink |}} | ======== Ejemplo de uso ======== \\ Descarga de el ejemplo completo con xonepdf v1.1.7 y PDF resultante: http://www.xoneisp.com/jc/TestPDFs.rar Set pdf01 = CreateObject("XOnePDF") 'pdf01.AddPermission "degradedprint" 'pdf01.AddPermission "modifyannotations" 'pdf01.AddPermission "screenreaders" 'pdf01.AddPermission "assembly" pdf01.Permissions "print" 'pdf01.AddPermission "copy" 'pdf01.AddPermission "modifycontents" 'pdf01.AddPermission "fillin" pdf01.Create "/mnt/sdcard/xone/testpdf01.pdf" pdf01.SetEncryption "", "1234", "128bits" pdf01.Open pdf01.AddImageSetXY "logo.png", 0, 750, 75, 50 pdf01.SetFont "helvetica" 'pdf01.SetFont "ssf4.ttf" 'pdf01.SetFont "courier" 'pdf01.SetFont "times" pdf01.CreateTable 3 pdf01.AddCellImage "logo.png", 25, 25 pdf01.AddCellText "test" pdf01.AddCellText "1234" pdf01.AddTable pdf01.SetFontSize 10 pdf01.SetFontStyle "normal" pdf01.SetFontColor "#0000AA" pdf01.AddTextSetXY "Consejería de Sanidad", 125, 750 pdf01.AddText chr(10) + chr(10) + chr(10) + chr(10) pdf01.SetFontColor "#000000" pdf01.SetFontStyle "normal" pdf01.NewLine pdf01.AddText "CLAVE/CÓDIGO: " pdf01.SetFontStyle "bold" pdf01.AddText "Establecimiento" pdf01.SetFontStyle "normal" pdf01.NewLine pdf01.AddText "ACTIVIDAD: " pdf01.SetFontStyle "bold" pdf01.AddText "003 (RESTAURANTES DE 101 A 200 COMENSALES)" pdf01.SetFontStyle "normal" pdf01.NewLine pdf01.AddText "NOMBRE O RAZÓN SOCIAL: " pdf01.SetFontStyle "bold" pdf01.AddText "EL COMILÓN S.L." pdf01.SetFontStyle "normal" pdf01.NewLine pdf01.AddText "DOMICILIO: " pdf01.SetFontStyle "bold" pdf01.AddText "CALLE 123, Nº 23." pdf01.SetFontStyle "normal" pdf01.AddTextSetXY "Nº RGSEAA/INEA ", 400, 685 pdf01.SetFontStyle "bold" pdf01.AddTextSetXY "222.111/33", 485, 685 pdf01.SetFontStyle "normal" pdf01.NewLine pdf01.AddText "LOCALIDAD: " pdf01.SetFontStyle "bold" pdf01.AddText "BADAJOZ" pdf01.SetFontStyle "normal" pdf01.AddTextSetXY "PROVINCIA:", 400, 670 pdf01.SetFontStyle "bold" pdf01.AddTextSetXY "BADAJOZ", 485, 670 pdf01.NewLine 2 pdf01.AddTextLine "* En inspección oficial realizada en el establecimiento en el día de la fecha, se efectúan los controles oficiales que se detallan y se ponen de manifiesto las siguientes incidencias:" pdf01.NewLine 2 pdf01.SetFontSize 9 pdf01.SetFontStyle "underline" pdf01.AddTextLine "CONTROL DE INSTALACIONES Y MANTENIMIENTO DE INSTALACIONES" pdf01.SetFontStyle "normal" pdf01.AddTextLine "En la inspección realizada en el establecimiento con fecha 8 de febrero de 2012 se constató que la campana extractora de la cocina no disponía de salida exterior de humos. Se comprueba que se ha dotado la campana extractora de salida de humos protegida en adecuadas condiciones..." pdf01.NewLine pdf01.SetFontStyle "underline" pdf01.AddTextLine("CONTROL DE HIGIENE DE INSTALACIONES Y PROGRAMA DE LIMPIEZA:") pdf01.SetFontStyle "normal" pdf01.AddTextLine "Se revisan las condiciones higiénicas de las instalaciones. En la cocina se observan restos de suciedad acumulada en lugares de difícil acceso a la limpieza: esquinas, rincones, alrededores de las patas del mobiliario de la cocina e interruptores. En el establecimiento disponen de un Plan de Limpieza y Desinfección en el que se detallan las tareas a realizar, las frecuencias y los responsables de ejecutarlas. Se revisan los registros de verificación y se observa que se cumplimentan tal como está establecido en el Plan de Limpieza y Desinfección." pdf01.NewLine pdf01.SetFontStyle "underline" pdf01.AddTextLine "CONTROL DE TEMPERATURAS:" pdf01.SetFontStyle "normal" pdf01.AddTextLine "Se controla la temperatura de las cámaras (cámara de producto refrigerado, cámara de congelación y vitrina expositora). Todas cuentan con termómetro indicador de la temperatura de funcionamiento y no se observan restos de escarchamiento o de goteos desde los motores. Las cámaras de producto refrigerado y la de congelación funcionan a temperatura adecuada, de +4ºC y -19ºC, respectivamente. Se controla la temperatura de la vitrina expositora con un termómetro sonda del propio establecimiento, que indica una temperatura del producto de + 12ºC. El representante del establecimiento decide retirar las tapas expuestas en la vitrina y proceder a su destrucción." 'pdf01.SetFont "ssf4.ttf" 'pdf01.SetFontColor "#33AA88" 'pdf01.CreateTable 2 'pdf01.AddCellText "aaaa" 'pdf01.AddCellHyperlink "aaaaa", "bbbbbb" 'pdf01.AddTable pdf01.AddCheckboxSetX "Se levanta acta de inspección nº de acta......", 230, 20, "check" pdf01.AddCheckboxSetX "Se realiza toma de muestra nº de acta......", 230, 20, "check" pdf01.AddBarcode "1030000010000814919999", "interleaved2of5", 200, 50, 50, 60 pdf01.Close 'pdf01.DecryptPDF "/mnt/sdcard/xone/testpdf01.pdf", "/mnt/sdcard/xone/testpdf01decrypt.pdf", "1234" pdf01.LaunchPDF "/mnt/sdcard/xone/testpdf01.pdf" Set pdf01 = nothing Véase también: [[wiki:2.-desarrollo-app:2.5.-controles-by-xone:visor-de-pdfs:start|Control para visualización de PDFs]]