Reportes en VFP
Reportes en VFP
Reportes en VFP
XFRX está disponible para Visual FoxPro 5.0, 6.0, 7.0, 8.0 y 9.0. XFRX contiene su
propio motor de informes que se utiliza en VFP 8.0 y versiones anteriores. En VFP 9.0,
XFRX se conecta a la nueva arquitectura de informes del motor de informes nativo.
Las diferencias entre XFRX para VFP 5.0, 6.0, 7.0 y 8.0 y XFRX para VFP 9.0 se
describen en detalle en este documento.
Tenga en cuenta: para que el texto sea más fácil de leer, estas diferencias se describen
como diferencias entre VFP 8.0 y VFP 9.0. Si VFP 8.0 se menciona más adelante en el
texto, también se aplica a VFP 5.0, 6.0 y 7.0.
Informe de FoxPro: definición del informe de FoxPro, almacenado en archivos .FRX, .FRT
Motor de informes: el motor de informes que procesa la definición del informe. XFRX para
VFP 8.0 y anteriores contiene su propio motor de informes. En VFP 9.0, XFRX se conecta a la
nueva arquitectura de informes y se utiliza el motor de informes nativo.
Scripts : métodos o fragmentos de código escritos en VFP. Los scripts llaman a los
métodos de la clase XFRX # DRAW para "dibujar" en el documento generado.
Scripts personalizados : también puede modificar los informes generados. Puede agregar
texto, gráficos, páginas nuevas, hipervínculos, marcadores, etc. Incluso puede crear
documentos nuevos desde cero, evitando por completo el motor de informes.
Archivo XFF : un archivo interno que almacena los informes generados. Estos archivos se
pueden modificar, almacenar en el disco, previsualizar en la pantalla, imprimir o convertir a
cualquiera de los formatos de destino. Puede encontrar más información sobre los archivos
XFF en el capítulo Uso de archivos XFF .
Previsualizador de XFRX: los archivos XFF se pueden previsualizar en una vista previa de
informe avanzada que viene con XFRX. La vista previa se puede localizar y permite buscar
en el documento y admite hipervínculos y marcadores. Puede encontrar más información
sobre el uso de la previsualización en el capítulo de previsualización de XFRX .
FOXTOOLS.FLL
Esta biblioteca necesita XFRX compilada bajo VFP 5, VFP 6 o XFRX empaquetada para VFP6 y 7.
Directorio XFRXLIB
Este directorio contiene la biblioteca de clases del componente XFRX previewer y sus archivos
de recursos.
xfrx.sign.net.exe
Este archivo muestra el archivo pdf de salida.
xfrxt.exe
Este archivo convierte xml a html plain.
XLSXTemplate.zip
Archivo de plantilla para el procedimiento XFRX_CopyToXLSX ().
_reportlistener.vcx
reportlisteners.h
reportlisteners_locs.h
foxpro_reporting.h
_frxcursor.vcx
_frxcursor.h
_gdiplus.vcx
gdiplus.h
reportlisteners.h
reportlisteners_locs.h
foxpro_reporting.h
utilityReportListener.prg
1 *#DEFINE VFP5
2 *#DEFINE VFP6
3 *#DEFINE VFP7
4 #DEFINE VFP8
5 *#DEFINE VFP9
Diferencias entre XFRX para VFP 8.0 y XFRX para VFP 9.0
Como está escrito en el párrafo anterior, XFRX para VFP 9.0 usa el motor de informes
nativo, que tiene las siguientes ventajas:
1. El diseño de los documentos producidos por XFRX para VFP 9.0 generalmente debería ser más
exacto, ya que el mismo motor se usa tanto para imprimir como para generar documentos.
2. XFRX para VFP 9.0 es aproximadamente dos veces más rápido que XFRX para VFP 8.0.
3. Las variables declaradas como LOCAL no son visibles en XFRX para VFP 8.0.
4. XFRX para VFP 8.0 tiene algunas restricciones en el manejo del entorno de datos. Es capaz de
configurar el entorno de datos, abrir tablas, establecer relaciones y activar los métodos de
entorno de datos, pero la instancia del entorno de datos en sí no está disponible. Esta
restricción no se aplica a VFP 9.0.
5. XFRX para VFP 9.0 puede mostrar cualquier contenido de campos generales, incluidos los
componentes ActiveX. XFRX para VFP 8.0 puede extraer solo imágenes BMP y JPEG de los
campos generales.
6. XFRX para VFP 8.0 no es compatible con el diseño de múltiples columnas donde los registros se
colocan de izquierda a derecha (en lugar de ir de arriba a abajo). Esta limitación no se aplica a
VFP 9.0.
Ejecutando XFRX
Cuando se ejecuta XFRX, devuelve una instancia de una de tres clases, dependiendo de un
parámetro pasado. Los parámetros disponibles son:
1. "XFRX # INIT" Al
ejecutar XFRX con este parámetro, se devolverá la instancia de la clase XFRXSession, que es
la clase principal que controla el comportamiento de XFRX en VFP 5, 6, 7 y 8.
2. "XFRX # LISTENER"
Esta opción solo está disponible en Visual FoxPro 9 y devuelve una instancia de la clase
XFRXListener.
3. "XFRX # DRAW"
Esta opción devuelve una instancia de la clase XFRX # DRAW. Esta clase se usa para trabajar
con archivos XFF. Consulte Inicializar el capítulo de instancia de la clase XFRX # DRAW en
la estructura 44 para obtener más información.
Nota importante
La versión de evaluación de XFRX no se puede incluir en proyectos de VFP, hace que VFP
falle. Para evitar esto, invoque XFRX a través de la sustitución de macros:
1 LOCAL m.loSession<font></font>
2 m.loSession = EVALUATE("xfrx('XFRX#INIT')")
2 m.loSession=XFRX("XFRX#INIT")
Ejemplo 1
Este código combina dos informes, informe1 e informe2, en un único documento PDF,
output.pdf
1 USE demoreps\invoices ORDER customer<font></font>
3 m.loSession= xfrx("XFRX#INIT")<font></font>
4 m.lnRetVal = m.loSession.SetParams("output.pdf",,,,,,"PDF")<font></font>
5 IF m.lnRetVal = 0<font></font>
6 m.loSession.ProcessReport("report1")<font></font>
7 m.loSession.ProcessReport("report2") <font></font>
8 m.loSession.finalize()<font></font>
9 ELSE<font></font>
10 ? m.lnRetVal<font></font>
11 ENDIF
loListener=XFRX("XFRX#LISTENER")
Nota
Incluso en VFP 9.0, puede inicializar la clase XFRXSession a través del parámetro "XFRX #
INIT" y usar el propio motor del XFRX, en lugar del nativo.
Ejemplo 2
1 USE demoreps\invoices ORDER customer<font></font>
3 m.loSession = XFRX("XFRX#LISTENER")<font></font>
4 m.lnRetval = loSession.SetParams("output.pdf",,,,,,"PDF")<font></font>
5 IF m.lnRetval = 0<font></font>
8 ELSE<font></font>
9 ? m.lnRetval<font></font>
10 ENDIF
Ejemplo 3
1 USE demoreps\invoices ORDER customer<font></font>
3 m.loSession = XFRX("XFRX#LISTENER")<font></font>
4 m.lnRetval = m.loSession.SetParams("output.pdf",,,,,,"PDF")<font></font>
5 IF m.lnRetval = 0<font></font>
8 m.loSession.finalize()<font></font>
9 ELSE<font></font>
10 ? m.lnRetval<font></font>
11 ENDIF
Ejemplo 4
1 USE demoreps\invoices ORDER customer<font></font>
3 m.loSession = XFRX("XFRX#LISTENER")<font></font>
4 m.loSession.targetType = "PDF"<font></font>
5 m.loSession.targetFileName = "output.pdf"<font></font>
6 m.lnRetval = m.loSession.SetParams()<font></font>
7 IF m.lnRetval = 0<font></font>
10 ELSE<font></font>
11 ? m.lnRetval<font></font>
12 ENDIF
XFRX es compatible con THISFORM y THIS en las expresiones del campo del informe. Sin
embargo, al ser una aplicación VFP normal, XFRX no puede acceder a THISFORM y THIS
objetos directamente. En cambio, el objeto THISFORM debe enviarse explícitamente a XFRX
a través del método setThisform (), ESTO debe enviarse mediante el método setThis (). Si
tiene THISFORM en su informe, llame a xfrxSession.setThisform (THISFORM) antes de llamar
a ProcessReport (). Si está utilizando ESTO, llame a xfrxSession.setThis (THIS).
Ejemplo: #UR TRIM = 3 se ajusta al carácter más cercano y agrega puntos suspensivos
2 m.loSession=xfrx("XFRX#Init")<font></font>
3 m.loProgress = CREATEOBJECT("progress")<font></font>
4 m.lnRetVal = m.loSession.SetParams("document",,,,,,"PDF")<font></font>
5 IF m.lnRetVal = 0<font></font>
6 m.loSession.setProgressObj(loProgress,2)<font></font>
7 m.loSession.ProcessReport("myReport")<font></font>
8 m.loSession.finalize()<font></font>
9 ENDIF<font></font>
10 <font></font>
12 PROCEDURE updateProgress<font></font>
15 ENDPROC<font></font>
16 ENDDEF
El objeto de progreso se adjunta a XFRX con el método setProgressObj (). Este método
toma dos parámetros: el primero es el objeto de progreso, el segundo define la
información que obtendrá el progreso de actualización (). Puede contener dos valores: 1:
solo se proporcionará el número de página y el número de informe en el método
updateProgress (), o se proporcionará un número de 2 páginas, un número de informe y un
progreso porcentual dentro del informe actual. El uso del porcentaje de información de
progreso es más preciso y más adecuado para la visualización de la barra de progreso, pero
para ello, XFRX debe calcular el número de registros en la tabla procesada, lo que, en
ocasiones, puede exigir mucho tiempo. En estos casos, 1 puede usarse para no calcular la
cantidad de registros.
El método updateProgress toma tres parámetros: número de informe actual, número de
página actual y progreso porcentual real dentro del informe actual.
Ejemplo:
Este código de ejemplo crea una instancia de la clase UpdateListener y la encadena con
XFRXListener:
1 LOCAL m.loSession, m.loUpdate<font></font>
2 m.loSession = XFRX("XFRX#LISTENER")<font></font>
4 m.loUpdate = CREATEOBJECT("updatelistener")<font></font>
6 m.loSession.successor = m.loUpdate<font></font>
7 m.lnRetval = m.loSession.setparams("output.pdf",,,,,,"PDF")<font></font>
8 IF lnRetval == 0<font></font>
10 m.loSession.finalize()<font></font>
11 ELSE<font></font>
12 ? m.lnRetval<font></font>
13 ENDIF
m.loSession.setPageRange(5,10)
setPageRange (tcRange)
tcRange es una cadena, que puede contener números de página y rangos de página
delimitados por comas, el rango de página se define como "de-a".
Ejemplo:
m.loSession.setPageRange("1,4,10-20,25")
Puede definir el tamaño de página del documento generado. El tamaño de página definido
por el usuario anulará el tamaño de página almacenado en el informe. Para definir el
tamaño de página definido por el usuario, llame al método setPaperSize () con el ancho del
papel y la altura del papel como parámetros:
setPaperSize(nUDPaperWidth, nUDPaperHeight)
Ejemplo:
Con los siguientes parámetros de SetParams, XFRX primero crea "facturas.pdf", luego crea
"archivo.zip" (si no existe) y agrega "facturas.pdf" en el archivo. Luego, se eliminará el
original "facturas.pdf":
m.loSession.lOldMultiLineBehavior = .T.
4 <font></font>
5 m.loSession=EVALUATE([XFRX("XFRX#LISTENER")])<font></font>
7 IF m.lnRetVal = 0<font></font>
9 ELSE<font></font>
10 ?m.loSession.ErrorMessage(m.lnRetVal) <font></font>
11 ENDIF
4 <font></font>
5 m.loSession=EVALUATE([XFRX("XFRX#LISTENER")])<font></font>
6 <font></font>
8 IF m.lnRetVal = 0<font></font>
9 m.loSession.oPreviewFRM = CREATEOBJECT("frmMPPreviewer")<font></font>
10 m.loSession.oPreviewFRM.WindowType=0 && or another settings<font></font>
11 <font></font>
13 ELSE<font></font>
14 ?m.loSession.ErrorMessage(m.lnRetVal) <font></font>
15 ENDIF
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
Funciones interactivas
Los documentos generados pueden incluir hipervínculos para una navegación más rápida,
los documentos PDF también pueden incluir marcadores. Los hipervínculos y marcadores se
controlan mediante el campo Comentario de etiquetas y campos.
En la versión beta de VFP 9 hay un error que hace que sea imposible almacenar algo en el
comentario de los campos. Debido a que XFRX usa el campo de comentario para definir
hipervínculos y marcadores, el campo "Datos de usuario" ahora se usa para este
propósito. En la versión final, XFRX para VFP 9 funcionará tanto con los comentarios como
con el campo de datos del usuario.
Hipervínculos
Creando campos fuente
Creando campos objetivo
Marcadores
Hipervínculos
Este párrafo se aplica tanto a VFP 9 como a VFP 8.
Para crear un enlace, necesita un campo de origen (el texto subrayado que va a navegar) y
un campo de destino (el lugar donde se obtiene al hacer clic en un hipervínculo).
Ejemplos:
#UR A HREF="#top"
Navega hasta el comienzo del documento. "arriba" es una palabra reservada. No nombrar
los campos de destino son "superiores".
#UR A HREF="#custlist"
#UR A HREF="#"+customer.id
#UR A HREF="http://www.eqeus.com"
To add a destination name to a (target) field, add the following text into the comment:
#UR A NAME=<destination name>
Example:
#UR A NAME=customer.id
This field will be a target field for source fields with HREF="#"+customer.id
Bookmarks
This paragraph applies both to VFP 9 and VFP 8.
Bookmarks are currently supported in PDF, HTML documents and XFRX previewer.
The outline_name is an expression, which is evaluated at the time of report generation and
the result is used as the bookmark item. If users click the bookmark, they will navigate to
the corresponding report field.
Example:
In a report with a list of invoices grouped by customers, bookmarks containing the list of
customer can be created by adding
#UR OUTLINE=invoices.customerName<font></font>
#UR OUTLINESTYLE=IIF(ATC("a",invoices.customerName)>0,1,0)+IIF(ATC("t",invoices.customerN
into the comment of a customer name field (or any other field you want to navigate to, e.g.
the first field on a page with the customer).
With bookmarks enabled, XFRX will generate three HTML pages (three files): the main page
defining the page frames, the bookmark page and the page with the report output.
XFRX 16.1
Methods SetOutline() and SetOutlineTypes() are deprecated since XFRX 16.1.
Member oDocument of XFRX Session object is deprecated too. You can use member
oDocumentWriter.
XFRX 17.3
Member oDocument of XFRX Session object is removed. Methods SetOutline() and
SetOutlineTypes() are removed too.
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
martinajindrova
Este párrafo se aplica tanto a VFP 9 como a VFP 8. Los métodos set ... se implementan en las
clases XFRXListener y XFRXSession.
Se pueden llamar los siguientes métodos para establecer varias propiedades del
documento. Al generar un documento de Word, todas las propiedades del documento
deben establecerse antes de que se procese el primer informe. Al exportar a PDF, las
propiedades deben establecerse antes de llamar al método Finalize ().
Ejemplo
1 LOCAL m.loSession<font></font>
2 m.loSession = EVALUATE([XFRX("XFRX#INIT")])<font></font>
3 m.lnRetVal = m.loSession.SetParams("pdf.docx",,,,,,"NATIVE_FDOCX")<font></font>
4 IF m.lnRetVal = 0<font></font>
5 m.loSession.setAuthor("author")<font></font>
6 m.loSession.setTitle("title")<font></font>
7 m.loSession.setSubject("subject")<font></font>
8 m.loSession.setKeywords("keywords")<font></font>
9 m.loSession.setCreator("creator")<font></font>
10 m.loSession.setProducer("producer")<font></font>
11 m.loSession.setCreationDate(CTOT("^1900-01-01 01:01:01"))<font></font>
12 m.loSession.setComments("comments") <font></font>
13 m.loSession.setCategory("category") <font></font>
14 m.loSession.setManager("manager") <font></font>
15 m.loSession.setCompany("company")<font></font>
16 ENDIF
() ()
PDF sí sí sí sí sí sí sí (16.0)
DOC2PDF sí sí sí sí - - -
FDOC2PDF sí sí sí sí - - -
DOC sí sí sí sí - - sí (16.0)
NATIVE_DOCX sí sí sí sí - - sí (16.0)
NATIVE_FDOCX sí sí sí sí - - sí (16.0)
ODT sí sí sí sí - - sí (16.0)
calzado sí sí sí sí - - sí (16.0)
SAO sí sí sí sí - - sí (16.0)
PIE sí sí sí sí - - sí (16.0)
PFODS sí sí sí sí - - sí (16.0)
NATIVE_FXLSX sí sí sí sí - - sí (16.0)
NATIVE_PFXLSX sí sí sí sí - - sí (16.0)
LLANURA - - - - - - -
HTML sí sí sí sí - - sí (16.0)
HTMLPLAIN no no no no - - no
MHT sí sí sí sí - - sí (16.0)
Salida Autor Título Tema Palabras Creador Productor Fecha de
clave creación
CNT / - - - - - - -
previewer
BMP - - - - - - -
GIF - - - - - - -
EMF - - - - - - -
PNG - - - - - - -
XFF - - - - - - -
XML - - - - - - -
Impresión - - - - - - -
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
XFRX 16.1
Miembro oDocument del objeto de sesión XFRX está en desuso. Puede usar miembro
oDocumentWriter.
XFRX 17.3
Miembro oDocument del objeto de sesión XFRX eliminado.
Anexar salida generada a documentos PDF existentes
Este párrafo se aplica tanto a VFP 9 como a VFP 8.
A partir de la versión 10.1, XFRX puede agregar el informe generado a un documento PDF
existente. Es posible adjuntar el informe al final del documento o en una posición arbitraria
dentro del documento: con insertar las páginas nuevas o reemplazar las páginas en el
documento PDF existente.
En XFRX para VFP 8, esta característica está controlada por un nuevo parámetro del método
SetParams (...): tuAppend. Consulte la referencia del método SetParams para obtener más
información sobre cómo configurar este parámetro.
En XFRX para VFP 9 puede usar indistintamente el nuevo parámetro del método SetParams
(...) o la propiedad AppendToFile de la clase XFRXListener.
Notas
1. No se garantiza que XFRX pueda agregarse a ningún documento PDF. Funciona bien con
documentos PDF generados por XFRX y también hemos probado con éxito PDF de otras
fuentes, pero la especificación PDF permite algunas estructuras internas que XFRX no
podría decodificar. (Para ser precisos: XFRX no admite documentos PDF linealizados ni
documentos que usen estructuras de árbol de páginas).
2. Debido a la forma en que se construye el archivo PDF, el tamaño del documento PDF nunca
se reduce, incluso si el número de páginas en el documento PDF resultante es más
pequeño que en el original.
2 m.loXFRX = XFRX("XFRX#LISTENER")<font></font>
3 m.lnRetVal = m.loXFRX.SetParams("test.pdf",,,,,,"PDF",,,,.T.)<font></font>
4 IF m.lnRetVal = 0<font></font>
Encriptación PDF
Este párrafo se aplica tanto a VFP 9 como a VFP 8. El método setPasswords se implementa
tanto en las clases XFRXListener como XFRXSession.
Los documentos PDF se pueden encriptar. Para configurar el cifrado, llame al método
setPasswords:
m.loSession.setPasswords(m.tcOwnerPassword, m.tcUserPassword)
La contraseña del usuario puede estar vacía. Si la contraseña del propietario está vacía, se
generará una cadena aleatoria como contraseña.
Modo de agregar
Method setPasswords() must be calls before method SetParams() for appending or
replacing page in exsting file.
The owner can do anything with the document. The user permissions can be set using the
setPermission method:
m.loSession.setPermissions(m.tlPrintDocument, m.tlModifyDocument, ;<font></font>
m.tlCopyTextAndGraphics, m.tlAddOrModifyAnnotations,;<font></f
m.tlAssembleDocument, m.tlPrintDocumentInLow)
m.loSession.setEmbeddingType(2)
m.loSession.setEmbeddingType(3)
Embedding only subset of fonts (characters used in the document) significantly reduces the
size of the generated file.
To select which font to embed (e.g. when you need just to embed the barcode font, or font
that is not installed on the pc the document will be sent to), add “#UR INCLUDEFONT”
(without the quotation marks) to the comments of a field that uses the font (in the report).
Add “#UR INCLUDEFONT SUBSET” comment to include the font subset.
If you want change the default behavior (special code page) you can use parameter
CHECKFONTFORSPECIALCODEPAGE (for disable or enable) or
ADDFONTFORSPECIALCODEPAGE (for add font to list) - since XFRX 17.1
loSession.SetOtherParams("CHECKFONTFORSPECIALCODEPAGE",.F.) && Disable the behavior<font>
To select which font to embed as UNICODE (e.g. when you need just to embed the barcode
font, or font that is not installed on the pc the document will be sent to), add
“#UR INCLUDEFONT UNICODE” (without the quotation marks) to the comments of a field
that uses the font - in the report (since XFRX 16.0).
m.loSession.SetOtherParams("UNICODE",.T.)
The signing algorithm in XFRX computes the encrypted document digest and places it,
together with the user certificate, into the PDF document. When the PDF document is
opened, the Adobe Acrobat (Reader) validates the digest to make sure the document has
not been changed since it was signed. It also checks to see if the certificate is a trusted one
and complains if it is not. The signature dictionary inside PDF can also contain additional
information and user rights - see below.
At this moment XFRX supports invisible signatures only (Acrobat will show the signature
information, but there is no visual element on the document itself linking to the digital
signature). We will support visible signatures in future versions.
In the current version, XFRX is using the CMS/PKCS #7 detached messages signature
algorithm in the .net framework to calculate the digest - which means the .NET framework
2.0 or newer is required. The actual process is run via an external exe - "xfrx.sign.net.exe",
that is executed during the report conversion process. In future, we can alternatively use the
OpenSSL library instead.
To generate a signed PDF document, call the DigitalSignature method before calling
SetParams. The DigitalSignature method has 7 parameter:
cSignatureFile
The .pfx file. pfx, the "Personal Information Exchange File". This file contains the public
certificate and (password protected) private key. You get this file from a certificate authority
or you can generate your own for testing, which for example, OpenSSL
(http://www.slproweb.com/products/Win32OpenSSL.html). XFRX comes with a sample pfx
that you can use for testing.
cPassword
The password protecting the private key stored in the .pfx file
nAccessPermissions
per PDF specification: 1 - No changes to the document are permitted; any change to the
document invalidates the signature. 2 - Permitted changes are filling in forms, instantiating
page templates, and signing; other changes invalidate the signature. (this is the default
value) 3 - Permitted changes are the same as for 2, as well as annotation creation, deletion
and modification; other changes invalidate the signature.
cSignatureName
per PDF specification: The name of the person or authority signing the document. This
value should be used only when it is not possible to extract the name from the signature;
for example, from the certificate of the signer.
cSignatureContactInfo
per PDF specification: Information provided by the signer to enable a recipient to contact
the signer to verify the signature; for example, a phone number.
cSignatureLocation
per PDF specification: The CPU host name or physical location of the signing.
cSignatureReason
per PDF specification: The reason for the signing, such as ( I agree ... ).
Demo
The demo application that is bundled with the package (demo.scx/demo9.scx) contains a
testing self-signed certificate file (TestEqeus.pfx) and a sample that creates a signed PDF
using the pfx. Please note Acrobat will confirm the file has not changed since it was signed,
but it will complaing the certificate is not trusted - you would either need to add the
certificate as a trusted one or you would need to use a real certificate from a certification
authority (such as VeriSign).
Put #UR EMPTYSIGNATURE=expr into the comment of the report shape fro creating empty
field for signature. Example: #UR EMPTYSIGNATURE="My Signature"
This feature is since XFRX 17.1
PDF/A support
PDF/A is an ISO standard for the digital preservation of electronic documents. PDF/A
document is a PDF document with specific restrictions that ensure that the document will
always display and print exactly the same way, no matter which platform or document
viewer is used:
Platform independent
No hidden or transparent content
All information needed to display the document is embedded (including fonts)
Document metadata stored as XML
No encryption, no password protection
No javascript or other executable parts
No LZW compression
Displayed and printed content must match (all annotations must be printed)
Please note the PDF/A-enabled document files can be significantly larger than regular PDF
documents because the used fonts must always be included.
Invoking PDF/A
Example:
LOCAL m.loXFRX, m.lnRetVal<font></font>
m.loXFRX = EVALUATE([XFRX("XFRX#LISTENER")])<font></font>
m.lnRetVal = m.loXFRX.SetParams("pdfa9.pdf",,,1250,,,"PDF")<font></font>
IF m.lnRetVal = 0<font></font>
ENDIF
CMYK support
Put #UR COLOR "CMYK" into the comment of the report images in CMYK.
Negative image support
Put #UR COLOR "NEG" into the comment of the report images in negative colors.
MASK support - transparent image
Put #UR MASK "[255 255 255 255 255 255]" for images with transparent colors. See to
"Color Key Masking" in pdf reference.
You can set general color for images with transaparent background (since XFRX 16.1)
Default color is white - RGB(255,255,255)
m.loSession.SetOtherParams("TRANSPARENTCOLOR",RGB(192,192,192))
PDF output knows only jpeg and bitmap pictures. Other format pictures converts to bitmap
(default choice). You can change to jpeg.
m.loSession.SetOtherParams("DEFAULTPICTUREFORMAT",'jpeg')
Debug mode
Parameter DONOTPUTDOCUMENTID
On french OS you can have problem with searching in Adobe Reader. In this case you can
set parameter DONOPUTDOCUMENTID, if you do not use passwords or digital signature.
m.loSession.SetOtherParams("DONOTPUTDOCUMENTID,.T.)
If you set these parameters, xfrx copy temporary files into specified folder.
m.loSession.setOtherParams("DEVELOP",.T.)<font></font>
m.loSession.setOtherParams("DEVELOPFOLDER",lcPath+"_out\"+lcOut)
Parameter DONOTZIPTEXTSTREAM
If you set the parameter, output stream inside PDF will not be compressed.
m.loSession.SetOtherParams("DONOTZIPTEXTSTREAM",.T.)
PageLayo specifying the page layout to be used when the document is opened
ut
"UseNone" Neither
document
outline nor
thumbnail
images
visible.
"UseOutlines" Document
outline
visible.
"UseThumbs" Thumbnail
images
visible.
"UseOC" Optional
content
group
panel
visible.
"L2R" Left to
right.
"R2L" Right to
left .
"None" Indicates
that the
print
dialog
should
reflect no
page
scaling.
"AppDefault" Indicates
that
application
s should
use the
current
print
scaling.
"Simplex" Print
single-
sided.
2 m.loSession=EVALUATE([xfrx("XFRX#INIT")])<font></font>
3 m.lnRetVal = m.loSession.SetParams("some.pdf",,,,,,"PDF")<font></font>
4 IF m.lnRetVal = 0<font></font>
5 m.loSession.setOtherParams("PAGELAYOUT","SinglePage") && SinglePage, OneColumn, TwoC
7 m.loSession.setOtherParams("VIEWERPREFERENCES","HIDETOOLBAR",.F.) <font></font>
8 m.loSession.setOtherParams("VIEWERPREFERENCES","HIDEMENUBAR",.F.) <font></font>
9 m.loSession.setOtherParams("VIEWERPREFERENCES","HIDEWINDOWUI",.F.) <font></font>
10 m.loSession.setOtherParams("VIEWERPREFERENCES","FITWINDOW",.F.) <font></font>
11 m.loSession.setOtherParams("VIEWERPREFERENCES","CENTERWINDOW",.T.) <font></font>
12 m.loSession.setOtherParams("VIEWERPREFERENCES","DISPLAYDOCTITLE",.T.) <font></font>
13 m.loSession.setOtherParams("VIEWERPREFERENCES","NONFULLSCREENPAGEMODE","UseOC") && U
17 m.loSession.setOtherParams("VIEWERPREFERENCES","PICKTRAYBYPDFSIZE",.T.) <font></font
19 m.loSession.setOtherParams("VIEWERPREFERENCES","NUMCOPIES",2)<font></font>
20 ENDIF
PDF version
(since XFRX 16.1)
You can set PDF version. Default version is 1.6 for XFRX 16.0, 1.7 for XFRX 16.1. Change PDF
version must be first after calls setParams() method.
m.loSession.setOtherParams("VERSION","1.5")
TAB size
(since XFRX 17.0.0)
m.loSession.setOtherParams("TABSIZE",3)
Attachments
(since XFRX 17.3)
PDF 1.3 supports attachments. PDF/A-1 doesn't support attachments. PDF/A-2 does
support attachments - only PDF file (PDF/A). PDF/A-3 does support attachments - any file.
For add atttchment calls method addAttachment.
m.loSession=EVALUATE([xfrx("XFRX#INIT")]) <font></font>
m.lnRetVal = m.loSession.SetParams("some.pdf",,,,,,"PDF")<font></font>
IF m.lnRetVal = 0<font></font>
loSession.addAttachment("some.pdf",.T.,"","appliaction/pdf","Alternative")<font></font
ENDIF
m.loSession=EVALUATE([xfrx("XFRX#INIT")]) <font></font>
loFile=loSession.addAttachment("ZUGFeRD-invoice.xml",.T.,"Rechnungsdaten im ZUGFeRD-XM
ENDIF
m.loSession=EVALUATE([xfrx("XFRX#INIT")]) <font></font>
ENDIF
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
XFRX 16.1
Miembro oDocument del objeto de sesión XFRX está en desuso. Puede usar miembro
oDocumentWriter.
XFRX 17.3
Miembro oDocument del objeto de sesión XFRX eliminado.
Protección de contraseña
Este párrafo se aplica tanto a VFP 9 como a VFP 8. El método setPasswords se implementa
tanto en las clases XFRXListener como XFRXSession.
Protección de contraseña
División de documentos de Word
Formato de documento de Word
Salidas DOCX y FDOCX
Generación de salida nativa
Visión de conjunto
Uso
Carpeta del desarrollador para NATIVE_DOCX / NATIVE_FDOCX / DOC / FDOC
Incrustación de fuente
Cuando los documentos generados son muy largos, la aplicación de Word tiene un
problema con la conversión; lleva mucho tiempo convertirla. Para evitar este problema,
XFRX puede dividir el documento generado en documentos más pequeños. Para configurar
esto, llame al método SplitDocument () antes de llamar a ProcessReport ():
m.loSession.SplitDocument(tnPages)
tnPagesp es el número de páginas que tendrían cada uno de los documentos resultantes.
Ejemplo:
m.loSession.setOtherParams("ALLWAYS_DOC",.T.)
Overview
Código de tipo Diseño Diseño Formato Versión de La versión de
de salida estándar de flujo de salida Word Word es
necesaria necesaria
para generar para ver
Usage
2 m.loSession= xfrx("XFRX#INIT")<font></font>
3 m.lnRetVal = m.loSession.SetParams("output.docx",,,,,,"NATIVE_FDOCX")<font></font>
4 IF m.lnRetVal = 0<font></font>
5 m.loSession.ProcessReport("report1")<font></font>
6 m.loSession.finalize()<font></font>
7 ENDIF
2 m.loXFRX = XFRX("XFRX#LISTENER")<font></font>
3 m.lnRetval = m.loXFRX.SetParams("output.docx",,,,,,"NATIVE_FDOCX")<font></font>
4 IF m.lnRetval = 0<font></font>
6 ENDIF
Example:
m.loSession.setOtherParams("DEVELOP",.T.)<font></font>
m.loSession.setOtherParams("DEVELOPFOLDER","[FOLDER\]DEVELOPFOLDER")
Font Embedding
You can call method setEmbeddingType() to embed font into the word document.
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
martinajindrova
30 de junio de 2017
m.loSession.SetOtherParams("LO_COMPATIBILITY",.T.)
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
Este capítulo enlaza con varios documentos de muestra en nuestro sitio web. Si está
leyendo una versión electrónica de este documento, simplemente haga clic en los
hipervínculos para descargarlos. Si está leyendo una versión impresa, aquí están las
direcciones:
http://www.eqeus.com/xfrxmanual/example1.doc
http://www.eqeus.com/xfrxmanual/example2.doc
http://www.eqeus.com/xfrxmanual/example3.doc
http://www.eqeus.com/xfrxmanual/example4.doc
Ejecutando la conversión
Cómo funciona
Ejemplo 1
Ejemplo 2
Encabezados y pies de página
Deficiencias
Los documentos de Word, RTF, OpenOffice Writer y OpenOffice Calc tienen dos opciones
de salida: "Diseño de posición absoluta" y "Diseño de flujo". Los documentos generados a
menudo se ven iguales, pero los algoritmos detrás de estas opciones son completamente
diferentes. El diseño de posición absoluta siempre se parece al informe original, pero es
difícil de editar y de mayor tamaño. El diseño de flujo no siempre se ve exactamente igual,
pero es un documento de Word 'real' - fácilmente editable, con estilos, encabezados y pies
de página, párrafos y tabulaciones, que también es más corto en tamaño y más rápido de
abrir.
Cada una de las opciones de salida tiene su propio código del parámetro que se envía en el
7 º parámetro (targetType) del método setParams:
Tipo de Documento tipo de objetivo
parámetro
Este capítulo describe la opción de salida de diseño de flujo: cómo funciona y cómo difiere
del diseño de posición absoluta.
Ejecutando la conversión
La opción Palabra de diseño de flujo se implementa como un nuevo tipo de destino, así
que simplemente envíe "FDOC" como el parámetro tcTarget del método SetParams ().
Cómo funciona
La lógica es similar a la forma en que funciona la opción de texto sin formato. Durante el
proceso de generación, XFRX toma cada sección, una por una, e intenta dividirla en líneas
individuales. Luego, cada línea se agrega a la salida, respetando la posición vertical de la
línea en el papel y las posiciones horizontales de los objetos individuales. Los objetos
verticalmente desalineados se mueven hacia abajo a la línea de base más cercana.
Ejemplo 1
(download example1.doc)
As you can see all objects are aligned to the same baseline and the horizontal position is
set by a tab stop (left, right or center, depending on the field’s alignment). If you add any
graphics or pictures, these are added to the document and linked to the paragraph it starts
at, so if you add contents above the graphics, it will move down along with the
corresponding paragraph.
If XFRX cannot create distinct lines or if the text objects overlap one another, the
overlapping text object is placed at the exact position as a textbox.
Example 2
>>
convert
s to >>
(download example2.doc)
Deficiencies
Even though most reports are converted without problems, there are certain scenarios
when the output wouldn’t look as expected. As stated above, all fields in one line are
aligned to the same baseline. In some reports, this can cause a problem, for example:
(download example3.doc)
No solo está el texto "dos" abajo, también está impreso sobre el "tres" uno ("tres" está
colocado demasiado alto para estar en una línea separada, por lo que se convierte como un
cuadro de texto). En este caso, es posible que desee decirle al motor que los objetos "dos"
y "tres" siempre deben tratarse como cuadros de texto de posición absoluta.
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
Páginas
/
Guía del desarrollador
Para generar un documento XPS, use "XPS" como el parámetro targetType del método
SetParams.
http://www.microsoft.com/whdc/xps/default.mspx
http://en.wikipedia.org/wiki/XML_Paper_Specification
Como el formato XPS solo admite fuentes TTF, todas las fuentes que no sean TTF serán
reemplazadas por la fuente Arial.
Para poder obtener una vista previa del documento XPS, necesita un visor de documentos
XPS. Si está ejecutando Windows Vista, ya tiene uno, ya que está incluido con .NET
Framework 3.0. Para Windows XP y Windows Server 2003 puede descargar el visor
desde http://www.microsoft.com/whdc/xps/viewxps.mspx .
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
XFRX genera los formatos de archivo de forma nativa, por lo que OpenOffice no tiene que
instalarse en la computadora donde se genera el documento.
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=office.
2 m.loSession= xfrx("XFRX#INIT")<font></font>
3 m.loSession.initLog()<font></font>
4 m.lnRetVal = m.loSession.SetParams("output.odt",,,,,,"ODT")<font></font>
5 IF m.lnRetVal = 0<font></font>
6 m.loSession.ProcessReport("report1")<font></font>
7 m.loSession.finalize()<font></font>
8 ENDIF
Ejemplo:
m.loSession.setOtherParams("DEVELOP",.T.)<font></font>
m.loSession.setOtherParams("DEVELOPFOLDER","[FOLDER\]DEVELOPFOLDER")
Campos de información
You can put one to four custom fields into ODF file. The keywords are INFO1,
INFO1_NAME, INFO2, INFO2_NAME, INFO3, INFO3_NAME, INFO4, INFO4_NAME.
Call SetOtherParams method with "INFO1" and "INFO1_NAME" to define INFO1 value and
name.
Example:
m.loSession.setOtherParams("INFO1", "AnyValue")<font></font>
m.loSession.setOtherParams("INFO1_NAME","Field 1")
Language/Country specification
XFRX get Language/Country specification from OS locale informations, but you can call
SetOtherParams method with "FO_LANGUAGE" and "FO_COUNTRY" to define own values.
Example:
m.loSession.setOtherParams("FO:LANGUAGE", "CS")<font></font>
m.loSession.setOtherParams("FO:COUNTRY", "CZ")
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
XFRX 16.1
Miembro oDocument del objeto de sesión XFRX está en desuso. Puede usar miembro
oDocumentWriter.
XFRX 17.3
Miembro oDocument del objeto de sesión XFRX eliminado.
Al generar documentos HTML, XFRX hace que la página sea un poco más corta por defecto
(en 1,65 pulgadas). Esto es para suprimir la parte inferior de una página para ajustar a una
nueva página cuando se imprime desde Internet Explorer. Se agregan dos líneas a la página
impresa, en la parte superior e inferior de la página, como encabezado y pie de página. Al
llamar al método ShrinkHeight (), puede suprimir este comportamiento llamando al:
ShrinkHeight(0)
o establezca su propio valor por el cual se reducirá la página. La unidad es Inch * 10000, por
lo que para hacer que la página sea más corta por 2 pulgadas, llame
ShrinkHeight(20000)
El valor enviado por el método ShrinkHeight () se aplica a todos los tipos de salida, no solo
a HTML.
Este tipo de salida funciona de manera similar al tipo de salida simple de Excel: los objetos
en la página se alinean en una cuadrícula, cada objeto va a una celda separada, y luego la
salida se presenta como una tabla. Las líneas y rectángulos se muestran como bordes de
celda de tabla. Las fuentes, colores y tamaños se definen a través de CSS.
Esta solución produce una salida HTML limpia, rápida y compatible con varios navegadores,
adecuada para páginas web o correos electrónicos. (Haga clic aquí para ver un documento
de muestra: Sample1 )
2 m.loSession = xfrx("XFRX#INIT")<font></font>
3 m.lnRetVal = m.loSession.SetParams("output.html",,,,,,"HTMLPLAIN")<font></font>
4 IF m.lnRetVal = 0<font></font>
5 m.loSession.ProcessReport("report1")<font></font>
6 m.loSession.finalize()<font></font>
7 ENDIF
By default, the output is a complete self-contained HTML file. You can also use the
HTML_NOSTYLES option to process just the inner HTML, without CSS styles, head or body
tags:
1 LOCAL m.loSession, m.lnRetVal<font></font>
2 m.loSession = xfrx("XFRX#INIT")<font></font>
3 m.lnRetVal = m.loSession.SetParams("output.html",,,,,,"HTMLPLAIN")<font></font>
4 IF m.lnRetVal = 0<font></font>
5 m.loSession.SetOtherParams("HTML_NOSTYLES", .T.)<font></font>
6 m.loSession.ProcessReport("report1")<font></font>
7 m.loSession.finalize()<font></font>
8 ENDIF
Autoconvert EMF/TIFF to PNG
Because some html previewer doesn't support EMF or TIFF image, you can enable feature
for converting EMF/TIFF to PNG. (XFRX 15.5)
m.loSession.SetOtherParams("CONVERTEMF_TIFFTOPNG",.T.)
Inline images
Images data are in html output file since XFRX 16.0. If you want attain prior behavior, you
can call method SetOtherParams().
m.loSession.SetOtherParams("INLINEIMAGES",.F.)
Gmail compatibility
Because HTML viewer in Gmail is very simply than can not show complex which generate
XFRX.
You can turn on Gmail compatibility. (XFRF 17.0.0)
m.loSession.SetOtherParams("GMAILCompatibility",.T.)
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
Notas generales
La salida al formato de Excel es similar a los formatos de diseño de flujo. Los otros formatos
usan cuadros de texto posicionados para cada etiqueta de informe o cuadro de texto, que
contiene el resultado de texto generado. La salida XLS, por otro lado, coloca el texto
generado directamente en las celdas de la hoja de Excel y establece la altura de las filas y el
ancho de las columnas para lograr el diseño deseado. Las líneas y rectángulos también se
agregan como bordes de celdas, en lugar de gráficos sobre la hoja.
Hay muchas ventajas en este enfoque: los documentos generados son más pequeños y
mucho más fáciles de modificar: todos los campos numéricos se pueden usar en los
cálculos, no hay problema para agregar filas o columnas, cambiar los atributos de las
celdas, etc.
Sin embargo, también hay desventajas: los campos no se pueden superponer, así que algo
como esto:
Con XFRX, los informes probablemente necesiten algunos ajustes, especialmente los
complicados, pero el resultado será un documento normal de Excel, como si alguien lo
hubiera creado manualmente.
Notas generales
Cómo funciona
Manejo de saltos de página
Generando hoja por página
Generación de hojas por grupo de inicio-cada-grupo-en-una-nueva-página
Agregar salto de página en la hoja
Definición de nombres de hojas
Ocultar la cuadrícula de Excel
Dejar el contenido de los campos en celdas de Excel
Cómo invocar la salida XLS
Ajuste de células XLS
Cómo lograr los mejores resultados
Formato de imagen de campo numérico en Excel
Salida simple (XLSPLAIN)
Salida de MS Excel 2007 (NATIVE_FXLSX / NATIVE_PFXLSX)
Carpeta del desarrollador para NATIVE_FXLSX / NATIVE_FXLSX
Cómo funciona
XFRX hace uso de la posibilidad de combinar más celdas de Excel juntas. Dondequiera que
una etiqueta o cuadro de texto debe comenzar o terminar, XFRX crea una fila y una
columna. Para lograr los mejores resultados, es bueno alinear las etiquetas y los cuadros de
texto tanto vertical como horizontalmente, lo que da como resultado un documento más
claro con menos filas y columnas. (Por favor, vea más sobre esto a continuación, en ¿Cómo
lograr los mejores resultados? Párrafo).
Manejo de saltos de página
De forma predeterminada, XFRX no divide las páginas en la salida XLS de la misma manera
que en otros formatos de salida: se ejecuta en modo plano, lo que significa que la salida es
una hoja, el tiempo que necesita, con un encabezado de página en la parte superior y un
pie de página en la parte inferior.
XFRX 17.0
Este comportamiento cambia desde XFRX 17.0.
El encabezado / pie de página de generación de XLS de salida se encuentra en la "página"
de informe en la hoja.
La salida XLSPLAIN genera un encabezado de página en la parte superior y un pie de
página en la parte inferior.
XFRX # INIT
XFRX # LISTENER
Si se procesan más informes, cada informe crea una hoja en el documento de salida.
Hay dos opciones que puede usar para modificar la forma en que se manejan los saltos de
página:
Para habilitar esta opción, llame al método SetOtherParams para establecer el parámetro
"SHEET_PER_PAGE" en .T .:
m.loSession.SetOtherParams("SHEET_PER_PAGE",.T.)
Esto desactivará el modo "simple" y los saltos de página se corresponderán con otras
opciones de salida. Cada página se generará como una hoja nueva en el documento de
Excel.
Para habilitar esta opción, llame al método SetOtherParams para establecer el parámetro
"SHEET_PER_NP_GROUP" en .T .:
m.loSession.SetOtherParams("SHEET_PER_NP_GROUP",.T.)
Esta opción combina el modo simple y el modo hoja por página. El informe se ejecuta en
modo simple, pero se genera una nueva hoja para cada grupo de informes con el indicador
"Iniciar cada grupo en una nueva página" configurado en .T.
El parámetro SHEET_PER_NP_GROUP funciona para XFRX # INIT con salida directa
solamente.
Estas opciones agregan saltos de página en hojas por páginas en el informe para XFRX #
INIT + TransformReport () y XFRX # LISTENER (desde XFRX 15.7).
m.loSession.SetOtherParams("SHEETPAGEBREAK",.T.)
m.loSession.SetOtherParams("DISPLAY_GRID_LINES",.F.)
Dejar el contenido de los campos en celdas de Excel
Por defecto, el contenido de los campos no estirables se corta de acuerdo con el tamaño
del campo, pero opcionalmente puede dejar el contenido completo del campo en la celda
de Excel. Para habilitar esta opción, configure el parámetro LEAVE_FULL_FIELD_CONTENT
como .T .:
m.loSession.SetOtherParams("LEAVE_FULL_FIELD_CONTENT",.T.)
2 m.loSession= xfrx("XFRX#INIT")<font></font>
3 m.loSession.initLog()<font></font>
4 m.lnRetVal = m.loSession.SetParams("output.xls",,,,,,"XLS")<font></font>
5 IF m.lnRetVal = 0<font></font>
7 m.loSession.ProcessReport("report1")<font></font>
8 m.loSession.SetOtherParams("NEXT_SHEET_NAME","second")<font></font>
9 m.loSession.ProcessReport("report2")<font></font>
10 m.loSession.finalize()<font></font>
11 ENDIF
Este ejemplo crea un documento de dos hojas. Como puede ver, el método
SetOtherParams () se puede usar para definir los nombres de las hojas. Si no se llama, los
nombres predeterminados son "hoja1", "hoja2", etc.
Es posible definir esta diferencia mínima. Cuanto mayor sea el número, menor será el
número de filas / columnas generadas, pero si el número es demasiado grande, los campos
podrían superponerse y podrían omitirse.
"Arreglar" esto es muy simple: alineamos las etiquetas "Cliente", "Lista de clientes" y el
cuadro de texto del cliente, movimos la línea debajo del encabezado un poco más arriba
para que caiga en las celdas debajo del "Cliente" y "Total" subtítulos
El documento resultante se ve mucho mejor: ( http://www.eqeus.com/xls2.xls )
USE
4. XFRX 17.3.1
5. XFRX 17.3.1 tiene mejor soporte para objetos superpuestos. El resultado es muy bonito,
pero la generación es lenta que en XFRX 17.3.0.
Es posible que apague el soporte para objetos superpuestos en XFRX 18.0.
loSession.SetOtherParams("OVERLLAPED_OBJECTS",.F.)
6.
Formato de imagen de campo numérico en Excel
La definición de formato de celdas numéricas en Excel es diferente de la sintaxis de formato
utilizada en Foxpro. XFRX ahora puede convertir las definiciones de formato simple y
permite definiciones de formato de tipo Excel implícitas y / o explícitas definidas por el
usuario.
En Visual Foxpro, el campo numérico se convierte a su representación de texto en función
de una definición de formato explícito (campo de formato en la definición de expresión del
informe) o los lugares decimales del campo y la configuración SET DECIMAL.
No olvide establecer el valor de la propiedad CallEvaluateContents en 2 si desea exportar
números como números al usar XFRX # LISTENER:
m.loSession.CallEvaluateContents = 2
Ejemplo 1:
#UR XLSF = "General"
El formateo "General" - sin formato especial, el número de decimales está determinado por
el valor del campo
Ejemplo 2:
Ejemplo 3:
Ejemplo 4:
Una tabla de conversión se puede llenar mediante programación cuando se ejecuta XFRX,
de modo que los formatos que se usan a menudo y que XFRX no puede convertir
automáticamente no requerirían una definición explícita en cada campo del informe.
m.loSession.addXLSFormatConversion("@L 999999.99","000000.00")
XFRX puede convertir definiciones de formato simples que contienen los siguientes
caracteres: '9', '#', ',', '.' y ''. Por ejemplo, 999,999.99 se convierte en ###, ###. 00.
Para definir el formato numérico XLS implícito, llame al método setDefaultXLSFormat del
objeto XFRXSession con el formato implícito como parámetro.
Examen plo 6:
m.loSession.setDefaultXLSFormat("General")
4. Si el formato numérico XLS implícito no está definido, XFRX crea una definición de
formato para mostrar el mismo número de decimales que en la salida del informe de
VFP.
Si desea especificar que un determinado campo numérico debe convertirse como una celda
de texto en la hoja de Excel, defina "TEXTO" como su formato numérico XLS explícito:
Para obtener un ejemplo en vivo del formato de las celdas de Excel, consulte el informe
"Ejemplo de celdas numéricas formateadas con XLS" en la aplicación de demostración.
Salida simple (XLSPLAIN)
El formato de salida simple de Excel es una salida alternativa a Excel que tiene como
objetivo proporcionar documentos de Excel más limpios y más pequeños. Las siguientes
son las diferencias clave de la salida estándar de Excel:
Cada informe se genera como una sola hoja con un encabezado de página única en la
parte superior del documento y un pie de página único en la parte inferior. Las secciones
de encabezado / pie de página no se insertan dentro del informe donde las páginas se
romperían normalmente.
El proceso elimina columnas y filas vacías siempre que sea posible.
El diseño del informe se ajusta automáticamente para eliminar filas y columnas estrechas.
HORIZONTAL_ADJUSTMENT y VERTICAL_ADJUSTMENT ya no son necesarios. El sistema
analiza el diseño del informe sobre la marcha e identifica los lugares donde los objetos se
pueden alinear sin afectar el resultado final.
Para invocar el formato simple de Excel, envíe la cadena "XLSPLAIN" como parámetro de
tipo de salida. Ejemplo (VFP 9.0):
1 LOCAL m.loObj, m.lnRetVal<font></font>
2 m.loObj = EVALUATE([XFRX("XFRX#LISTENER")])<font></font>
3 m.lnRetVal = m.loObj.SetParams("test.xls",,,,,,"XLSPLAIN")<font></font>
4 IF m.lnRetVal = 0<font></font>
6 ENDIF
2 m.loObj = EVALUATE([XFRX("XFRX#LISTENER")])<font></font>
3 m.lnRetVal = m.loObj.SetParams("test.xlsx",,,,,,"NATIVE_FXLSX")<font></font>
4 IF m.lnRetVal = 0<font></font>
6 ENDIF
Ejemplo:
m.loSession.setOtherParams("DEVELOP",.T.)<font></font>
m.loSession.setOtherParams("DEVELOPFOLDER","[FOLDER\]DEVELOPFOLDER")
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
Limitaciones
Las limitaciones se definen por la naturaleza del resultado de texto sin formato:
Limitaciones
Cómo funciona
Lineas horizontales
Configuración de personajes por pulgada
Caracteres de control
Texto plano compacto
Cómo funciona
Durante el proceso de generación, XFRX toma cada sección, una por una, e intenta dividirse
en líneas individuales. Luego, cada línea se agrega a la salida, respetando la posición
vertical de la línea en el papel y las posiciones horizontales de los objetos individuales. Los
objetos verticalmente desalineados se mueven hacia abajo a la línea de base más cercana,
por ejemplo:
four five<font></font>
six
Si XFRX no podrá crear líneas distintas o si los objetos se superpondrán entre sí, XFRX
intentará eliminar algunos de los objetos.
Por ejemplo:
se convertirá como:
One two<font></font>
Four<font></font>
six
Lineas horizontales
Las líneas horizontales se pueden convertir opcionalmente en una serie de guiones. Por
defecto, esta opción está activada. Para suprimir líneas horizontales, llame al método
setOtherParams del objeto XFRXSession con dos parámetros: "PLAIN_SHOW_LINES" y .F.,
Antes de llamar al método processReport ().
Ejemplo:
1 LOCAL m.loSession, m.lnRetval<font></font>
2 m.loSession= xfrx("XFRX#INIT")<font></font>
3 m.lnRetVal = m.loSession.SetParams("output.txt",,,,,,"PLAIN")<font></font>
4 IF m.lnRetVal = 0<font></font>
6 m.loSession.ProcessReport("report.frx")<font></font>
7 m.loSession.finalize()<font></font>
8 ENDIF
Configuración de personajes por pulgada
Para convertir las posiciones absolutas del objeto a posiciones de caracteres, XFRX calcula
el número de caracteres por línea y el número de líneas por página utilizando valores de
carácter por pulgada horizontal y vertical. De forma predeterminada, estos valores son 10
caracteres por pulgada horizontal y 5.2 caracteres por pulgada vertical, lo que resulta en
aproximadamente 80 caracteres x 55 líneas en un papel de tamaño carta.
Es posible que desee cambiar la densidad del carácter (por ejemplo, al usar una fuente
condensada en una impresora de matriz de puntos). Para hacer esto, envíe
PLAIN_CPI_HORIZONTAL o PLAIN_CPI_VERTICAL como el primer parámetro del método
SetOtherParams () y el valor real como el segundo parámetro.
Ejemplo:
1 LOCAL m.loSession, m.lnRetval<font></font>
2 m.loSession= xfrx("XFRX#INIT")<font></font>
3 m.lnRetVal = m.loSession.SetParams("output.txt",,,,,,"PLAIN")<font></font>
4 IF m.lnRetVal = 0<font></font>
6 m.loSession.SetOtherParams("PLAIN_CPI_HORIZONTAL",12)<font></font>
7 m.loSession.SetOtherParams("PLAIN_CPI_VERTICAL",8)<font></font>
8 m.loSession.ProcessReport("report.frx")<font></font>
9 m.loSession.finalize()<font></font>
10 ENDIF
Caracteres de control
XFRX 17.2 genera control char FF (alimentación de formulario) después de cada página,
excepto la última página. Puedes desactivar esta función:
1 LOCAL m.loSession, m.lnRetval<font></font>
2 m.loSession= xfrx("XFRX#INIT")<font></font>
3 m.lnRetVal = m.loSession.SetParams("output.txt",,,,,,"PLAIN")<font></font>
4 IF m.lnRetVal = 0<font></font>
6 m.loSession.SetOtherParams("DONTADDCONTROLCHARS",.F.)<font></font>
7 m.loSession.ProcessReport("report.frx")<font></font>
8 m.loSession.finalize()<font></font>
9 ENDIF
2 m.loSession= xfrx("XFRX#INIT")<font></font>
3 m.lnRetVal = m.loSession.SetParams("output.txt",,,,,,"CPLAIN")<font></font>
4 IF m.lnRetVal = 0<font></font>
5 m.loSession.ProcessReport("report.frx")<font></font>
6 m.loSession.finalize()<font></font>
7 ENDIF
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
XFRX puede guardar el informe generado en un archivo binario (archivo XFF). Este archivo
puede usarse en cualquier momento más tarde para:
Transforme la salida del informe almacenado a cualquiera de los formatos de destino
admitidos por XFRX (PDF, Word, HTML, Excel, TXT, etc.)
Imprimir la salida del informe almacenado
Obtenga una vista previa de la salida del informe almacenado en el previsualizador XFRX
También puede modificar el contenido de los archivos XFF existentes o crear nuevos
archivos XFF desde cero, evitando por completo el motor de informes.
1 LOCAL m.loSession<font></font>
2 m.loSession= xfrx("XFRX#INIT")<font></font>
3 IF m.loSession.SetParams("output.xff",,,,,,"XFF") = 0<font></font>
4 m.loSession.ProcessReport("report")<font></font>
5 m.loSession.finalize()<font></font>
6 ENDIF
1 LOCAL m.loObj<font></font>
2 m.loObj = xfrx("XFRX#LISTENER")<font></font>
3 iF m.loObj.SetParams("output.xff",,,,,,"XFF") = 0<font></font>
5 ENDIF
Los métodos XFRX no funcionan directamente con el archivo XFF, pero siempre a través de
la clase XFRX # DRAW, que representa un contenedor alrededor del archivo XFF. Para crear
una instancia de esta clase, llame a XFRX con el parámetro "XFRX # DRAW". Luego llame
a openDocument (tcXFFFileName) para adjuntar el objeto XFRX # DRAW a un archivo XFF
existente:
1 LOCAL m.loXFF<font></font>
2 m.loXFF = xfrx("XFRX#DRAW")<font></font>
3 IF m.loXFF.openDocument("output.xff")<font></font>
4 <font></font>
5 ELSE<font></font>
7 ENDIF
Para hacer esto, deje el nombre del archivo XFF vacío. En este caso, se creará un archivo XFF
temporal y podrá acceder a su instancia de clase XFRX # DRAW. La forma de acceder a la
instancia difiere en VFP 8.0 y VFP 9.0.
2 m.loSession= xfrx("XFRX#INIT")<font></font>
3 IF m.loSession.SetParams(,,,,,,"XFF") = 0<font></font>
4 m.loSession.ProcessReport("report")<font></font>
5 m.loXFF = m.loSession.finalize()<font></font>
6 ENDIF<font></font>
7 *<font></font>
8 * now the loXFF instance can be used as if the XFF file was opened<font></font>
10 *
2 m.loObj = xfrx("XFRX#LISTENER")<font></font>
3 <font></font>
4 m.loObj.targetType = "XFF"<font></font>
6 <font></font>
8 <font></font>
9 m.loXFF = m.loObj.oxfDocument
Enfoque VFP 8:
1 LOCAL m.loSession, m.loXFF, m.lnRetVal<font></font>
2 m.loSession= xfrx("XFRX#INIT")<font></font>
3 m.loXFF = xfrx("XFRX#DRAW")<font></font>
4 IF m.loXFF.openDocument("output.xff")<font></font>
5 m.lnRetVal = m.loSession.SetParams("output.pdf",,,,,,"PDF")<font></font>
6 IF m.lnRetVal = 0<font></font>
7 m.loSession.TransformReport(m.loXFF)<font></font>
8 ENDIF<font></font>
9 ENDIF
Enfoque VFP 9:
1 LOCAL m.loSession, m.loXFF, m.lnRetVal<font></font>
2 m.loObj = xfrx("XFRX#LISTENER")<font></font>
3 m.loXFF = xfrx("XFRX#DRAW")<font></font>
4 IF m.loXFF.openDocument("output.xff")<font></font>
5 m.lnRetVal = m.loObj.SetParams("output.pdf",,,,,,"PDF")<font></font>
6 IF m.lnRetVal = 0<font></font>
7 m.loObj.transformReport(m.loXFF)<font></font>
8 ENDIF<font></font>
9 ENDIF
Esta cadena se puede guardar como preferencia de usuario y enviarse a XFRX como el 5to
parámetro del método PrintDocument al imprimir. Esta funcionalidad es similar a SYS
(1037) introducida en VFP 9.0, con dos diferencias / mejoras:
por ref tnRetVal - El valor indica una problém (desde XFRX 15.7)
Ejemplo:
1 SET PROCEDURE TO xfrx ADDITIVE && this is required as the function is implemented insid
4 m.lcTag2 = _xfPrinterProperties(m.lcPrinter, "", .F.) && do not show the dialog, return
5 m.lcTag2 = _xfPrinterProperties(m.lcPrinter, m.lcTag2, .T.) && show the dialog box now<
7 <font></font>
8 DO CASE<font></font>
11 <font></font>
14 OTHERWISE<font></font>
15 && OK button was clicked<font></font>
16 ENDCASE
Ejemplo :
Desde XFRX 17.0 puede usar la clase _XFRX_DEVMODE_WRITER para cambiar algunas
propiedades de la impresora.
Ejemplo :
1 LOCAL m.loDEVMODE, m.lcTAG2, m.lcPrinter<font></font>
2 m.lcPrinter=SET("PRINTER",2)<font></font>
3 m.lcTAG2 = _xfPrinterProperties(m.lcPrinter, "", .F.) && do not show the dialog, return
7 m.lcTAG2 =m.loDEVMODE.cDEVMODE<font></font>
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
Los scripts de página se implementan como métodos de una clase arbitraria: puede usar
una clase personalizada que se crea una instancia antes de ejecutar XFRX, implementar los
scripts como métodos del formulario actual o cualquier otra cosa que sea conveniente en
su entorno de aplicación. Cada método de script acepta un parámetro: la referencia de
objeto XFRX # DRAW. Esta referencia se vincula al documento que se está generando.
Ejemplo:
1 DEFINE CLASS myXFRXScripts AS CUSTOM<font></font>
2 <font></font>
3 PROCEDURE drawBlueRectangle<font></font>
4 LPARAMETERS m.oXFD<font></font>
5 m.oXFD.setColor(0,0,255,-1,-1,-1)<font></font>
6 m.oXFD.drawRectangle(100,200,50,50)<font></font>
7 ENDPROC<font></font>
8 <font></font>
9 ENDDEFINE
Antes de llamar a XFRX, los scripts se registran con RegisterScript () en la instancia de clase
de sesión XFRX para que XFRX sea nuevo sobre estos scripts y los invoque según sea
necesario. Puede ejecutar los scripts en cada página, páginas impares o parciales o páginas
arbitrarias. Consulte los Métodos comunes en XFRXListener y el capítulo de clases de
XFRXSession para obtener una descripción detallada de este método y sus parámetros.
Ejemplo:
*<font></font>
*<font></font>
m.loScripts = createobject("myXFRXScripts")<font></font>
m.loXFRXSession.registerScript(loScripts,"drawBlueRectangle",0,"ALL",0)
Guiones de rectángulo
Hay dos formas de implementar los scripts: los scripts con nombre, que se implementan
como un método de una clase, o los scripts escritos directamente en el campo de
comentario del rectángulo en la definición del informe.
Scripts nombrados
Si el script se implementa como un método de una clase, debe registrarse de forma similar
a los scripts de página, pero solo se requieren los dos primeros parámetros: la referencia
del objeto y el nombre del script:
m.loScripts = createobject("myXFRXScripts")<font></font>
m.loXFRXSession.registerScript(loScripts,"drawBlueRectangle")
Para vincular el script con un rectángulo, agregue "#UR SCRIPT NAME <script name>" (sin
las comillas) como un comentario del rectángulo.
Scripts escritos en el campo de comentario de rectángulo
El script se ingresa entre las líneas #UR SCRIPT BEGIN y #UR SCRIPT END.
Estos scripts no tienen nombre ni están registrados. Se supone que el contenido entre estas
líneas acepta el parámetro de referencia del objeto XFRX # DRAW y se evalúa a través de la
función EXECSCRIPT ().
Ejemplo:
Cuando se encuentra dentro del script vinculado al rectángulo, el origen de las
coordenadas se desplaza: 0,0 representa la esquina superior izquierda del rectángulo.
La posición y el tamaño del rectángulo delimitador se pueden recuperar con
el método GetBoundingRectangle () .
La IMAGEN puede ser seguida opcionalmente por un valor DPI, que representa el DPI
(puntos por pulgada) de la imagen creada. El DPI predeterminado es 96, que es adecuado
para la vista previa en pantalla, pero es posible que desee aumentar el valor de DPI para
aumentar la calidad de la imagen.
También puede especificar el tipo de imagen agregando la cláusula TYPE seguida de uno
de los siguientes valores: BMP, JPEG (JPG), PNG, TIFF (TIF) y EMF. El tipo de imagen
predeterminado es JPG.
Las siguientes palabras clave son:
BPP - bits por píxel; el valor predeterminado es 24; los valores son 1,4,8,16,24,32; XFRX 15.5
JPEGQ - calidad jepg; el valor predeterminado es 96; XFRX 15.5
TRANSPARENTE: modo de fondo transparente para TIFF, PNG y EMF; el predeterminado es
opaco; XFRX 15.5
Los scripts nombrados pueden opcionalmente aceptar más parámetros. Los parámetros se
especifican mediante la cláusula PARAMETERS seguida de los parámetros, que se evalúan
en el momento del procesamiento del informe.
Ejemplo:
1 DEFINE CLASS myXFRXScripts as Custom<font></font>
2 PROCEDURE fancyRectangle<font></font>
4 *<font></font>
8 *<font></font>
9 IF EMPTY(m.boxwidth)<font></font>
10 m.boxwidth = 5<font></font>
11 ENDIF<font></font>
12 IF EMPTY(m.boxheight)<font></font>
13 m.boxheight = m.boxwidth<font></font>
14 ENDIF<font></font>
15 <font></font>
16 m.oXFD.setUnit("pt")<font></font>
17 m.loBox = m.oXFD.getBoundingRectangle()<font></font>
18 m.oXFD.setColor(0,0,0)<font></font>
19 <font></font>
20 LOCAL m.i<font></font>
22 m.oXFD.setColor(0,0,0,INT(RAND()*256),INT(RAND()*256),INT(RAND()*256))<font><
24 m.oXFD.setColor(0,0,0,INT(RAND()*256),INT(RAND()*256),INT(RAND()*256))<font><
25 m.oXFD.drawRectangle(m.i*m.BOXWIDTH, ;<font></font>
26 INT(m.loBox.nheight/m.boxheight-1)*m.boxheight, m.BOXWIDT
27 ENDFOR<font></font>
28 <font></font>
30 m.oXFD.setColor(0,0,0,INT(RAND()*256),INT(RAND()*256),INT(RAND()*256))<font><
32 m.oXFD.setColor(0,0,0,INT(RAND()*256),INT(RAND()*256),INT(RAND()*256))<font><
33 m.oXFD.drawRectangle(int(m.loBox.nwidth/m.BOXWIDTH-1)*m.BOXWIDTH, ;<font></fo
35 ENDFOR<font></font>
36 ENDPROC<font></font>
37 ENDDEFINE
Cada vez que dibuja algo en un documento XFF, el dibujo siempre se agrega en la parte
superior de la "página actual". La página actual se almacena en una propiedad
de solo lectura CurrentPage . El número total de páginas se almacena en
la propiedad PageCount . Para navegar por las páginas, use los métodos GoTop (),
GoBottom () y GoToPage (nPageNo) .
Agregar páginas
El método AddPage () crea una nueva página al final del documento. Puede especificar el
tamaño de la nueva página o usar el mismo tamaño que la página actual.
Unidades de coordenadas
Use el método SetColor () para establecer los colores para las siguientes llamadas al
método de dibujo, los colores predeterminados son negro para el lápiz y blanco para el
fondo.
Texto de dibujo
Dibujando imágenes
Cada texto dibujado por DrawText () o DrawTextBox () puede tener un tooltip, puede
servir como un objetivo para un marcador y puede ser un hipervínculo o un destino o un
hipervínculo. Consulte los parámetros tcLinkName, tcLinkRef, tcBookmark y tcTooltip de
los métodos DrawText () y DrawTextBox () en la referencia de clase XFRX # DRAW en la
página 92.
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
Páginas
/
Guía del desarrollador
metadata.attachments
Previsualizador de XFRX
La vista previa se implementa como un objeto contenedor, por lo que se puede agregar
fácilmente dentro de cualquier formulario de VFP.
Los archivos XFF no tienen que almacenarse como archivos físicos. También puede crear
archivos temporales XFF que se liberarán automáticamente cuando cierre la vista
previa. (Consulte Creación de archivos temporales XFF en la página 45 para obtener más
información).
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
...
/
Previsualizador de XFRX
martinajindrova
Esta sección se ha agregado para reflejar los cambios en XFRX ver. 11.3. Si está utilizando
versiones anteriores de XFRX, consulte el apartado Uso de la clase XFCont a continuación en
este capítulo.
Implementado como No Sí Sí
contenedor (se puede
incrustar en formularios
existentes)
admite la barra de Sí Sí No
herramientas integrada
XFCont es la clase de vista previa XFRX básica. Se implementa como un objeto contenedor
y admite búsquedas, hipervínculos, marcadores, impresión y exportación.
La clase cntXFRXMultiPage amplía la funcionalidad de la clase XFCont con la interfaz de
varias pestañas: puede mostrar varias pestañas de vista previa en una clase de marco de
página. También es compatible con una barra de herramientas incrustada (falsa), que es un
control similar a una barra de herramientas en la parte superior del contenedor, que es muy
útil si el formulario del previsualizador no está dentro de la pantalla principal de VFP.
frmMPPreviewer es una clase de formulario que implementa cntXFRXMultiPage y sirve
como un "proxy" para las características de la clase cntXFRXMultiPage. Si todo lo que
necesita es una vista previa del informe de pantalla completa, esta es la más fácil de
configurar.
Ejemplo:
1 m.loPreview = CREATEOBJECT("frmMPPreviewer")<font></font>
2 m.loPreview.oDisplayDefaults.StartingPage = 2<font></font>
3 m.loPreview.oDisplayDefaults.DefaultOutputFileName = "invoice15_09"<font></font>
4 m.loPreview.oDisplayDefaults.ZoomFactor = -1<font></font>
5 m.loPreview.oDisplayDefaults.PagesPerSheet = "1x1"<font></font>
7 m.loPreview.PreviewXFF(loXFF)<font></font>
8 m.loPreview.show(1)
3 m.loSession=EVALUATE([xfrx("XFRX#LISTENER")])<font></font>
5 IF m.lnRetVal = 0<font></font>
7 m.loXFF = m.loSession.oxfDocument<font></font>
8 *<font></font>
10 *<font></font>
12 m.loPreview = CREATEOBJECT("frmMPPreviewer")<font></font>
13 m.loPreview.setExtensionHandler(CREATEOBJECT("MyExtensionHandler"))<font></font>
14 m.loPreview.windowType = 0<font></font>
15 m.loPreview.iBook = 0<font></font>
16 m.loPreview.PreviewXFF(loXFF)<font></font>
17 m.loPreview.show(1)<font></font>
18 ENDIF<font></font>
19 <font></font>
20 <font></font>
22 <font></font>
23 PROCEDURE Export<font></font>
24 LPARAMETERS m.toXFF<font></font>
25 IF USED("_xfExportTypes")<font></font>
26 USE IN _xfExportTypes<font></font>
27 ENDIF<font></font>
28 *<font></font>
30 *<font></font>
35 ENDPROC<font></font>
36 <font></font>
37 PROCEDURE ExportOptions<font></font>
39 IF m.toOptions.cTarget = "XLS"<font></font>
40 *<font></font>
42 *<font></font>
43 =MESSAGEBOX("exporting to "+m.toOptions.cOutputFile)<font></font>
47 ENDIF<font></font>
48 <font></font>
49 ENDPROC<font></font>
50 <font></font>
51 ENDDEFINE
Ejemplo 2
3 <font></font>
5 <font></font>
6 m.loExtensionHandler = CREATEOBJECT("myExtensionHandler")<font></font>
7 <font></font>
8 m.loPreview = CREATEOBJECT("frmMPPreviewer")<font></font>
9 m.loSession=EVALUATE([xfrx("XFRX#LISTENER")])<font></font>
10 <font></font>
11 *<font></font>
13 *<font></font>
14 m.lnRetVal = m.loSession.SetParams(,,,,,,"XFF")<font></font>
15 IF m.lnRetVal = 0<font></font>
16 SELECT * ;<font></font>
23 ENDIF<font></font>
24 <font></font>
25 *<font></font>
27 *<font></font>
28 m.loPreview.setExtensionHandler(loExtensionHandler)<font></font>
29 *<font></font>
31 *<font></font>
32 m.loPreview.previewXFF(m.loSession.oxfdocument)<font></font>
33 m.loPreview.show(1)<font></font>
34 <font></font>
36 PROCEDURE Print<font></font>
37 LPARAMETERS m.toXFF<font></font>
39 ENDPROC<font></font>
40 <font></font>
41 PROCEDURE Export<font></font>
42 LPARAMETERS m.toXFF<font></font>
43 *<font></font>
45 *<font></font>
47 ENDPROC<font></font>
48 ENDDEFINE
Ejemplo de BeforeExport y AfterExport
3 m.loSession=EVALUATE([xfrx("XFRX#LISTENER")])<font></font>
5 IF m.lnRetVal = 0<font></font>
7 *<font></font>
9 *<font></font>
10 m.loXFF = m.loSession.oxfDocument<font></font>
11 *<font></font>
13 *<font></font>
16 m.loPreview = CREATEOBJECT("frmMPPreviewer")<font></font>
17 *<font></font>
19 *<font></font>
20 m.loPreview.oExtensionHandler = CREATEOBJECT("SampleExtensionHandler")<font></font>
21 m.loPreview.windowtype = 1 <font></font>
23 m.loPreview.PreviewXFF(m.loXFF)<font></font>
24 m.loPreview.show(1)<font></font>
25 ENDIF<font></font>
26 <font></font>
29 PROCEDURE BeforeExport<font></font>
31 <font></font>
35 ENDIF<font></font>
36 ENDPROC<font></font>
37 <font></font>
38 PROCEDURE AfterExport<font></font>
40 IF m.toOptions.cTarget = "XLS"<font></font>
42 ENDIF<font></font>
43 ENDPROC<font></font>
44 <font></font>
45 ENDDEFINE
Ejemplo de KeyPress
3 m.loSession=EVALUATE([xfrx("XFRX#LISTENER")])<font></font>
5 IF m.lnRetVal = 0<font></font>
7 *<font></font>
9 *<font></font>
10 m.loXFF = m.loSession.oxfDocument<font></font>
11 *<font></font>
13 *<font></font>
16 m.loPreview = CREATEOBJECT("frmMPPreviewer")<font></font>
17 *<font></font>
19 *<font></font>
20 m.loPreview.oExtensionHandler = CREATEOBJECT("SampleExtensionHandler")<font></font>
21 m.loPreview.windowtype = 1 <font></font>
23 m.loPreview.PreviewXFF(loXFF)<font></font>
24 m.loPreview.show(1)<font></font>
25 ENDIF<font></font>
26 <font></font>
28 <font></font>
32 m.loXFCont.Print()<font></font>
33 ENDIF<font></font>
34 ENDPROC<font></font>
35 ENDDEFINE <font></font>
Mostrar / ocultar marcadores
-1 = Inhabilitar marcadores
0 = Habilitar marcadores pero ocultarlos (los usuarios deben hacer clic en el
botón de marcador para verlos)
1 = Habilitar marcadores, mostrándolos siempre (predeterminado)
2 = Habilitar los marcadores, pero mostrarlos u ocultarlos automáticamente en
función de si hay marcadores definidos en el informe para previsualizar
(predeterminado)
Hay dos barras de herramientas en el control del previsualizador: una se coloca en la parte
inferior del control, la otra está disponible como un panel flotante de la barra de
herramientas, que por defecto se acopla en la parte superior de la ventana principal o,
alternativamente, como un "incrustado" barra de herramientas". Las tres clases
implementan las propiedades iTool y ShowStatus que controlan la visibilidad de las barras
de herramientas:
Propiedad Uso
mostrar el estado Controla la visibilidad de la barra de herramientas en la barra de estado del contenedo
previa. Los valores permitidos son:
Propiedad Uso
3 m.loScripts<font></font>
4 m.loSession=EVALUATE([xfrx("XFRX#LISTENER")])<font></font>
11 *<font></font>
12 m.loXFF = m.loSession.oxfDocument<font></font>
13 *<font></font>
15 *<font></font>
18 m.loPreview = CREATEOBJECT("frmMPPreviewer")<font></font>
19 *<font></font>
21 *<font></font>
22 m.loPreview.oExtensionHandler =
CREATEOBJECT("SampleExtensionHandler")<font></font>
23
m.loPreview.oprogress=createobject("progress")<font></font>
24
m.loPreview.PreviewXFF(loXFF)<font></font>
25
m.loPreview.show(1)<font></font>
26
ENDIF<font></font>
27
<font></font>
28
DEFINE CLASS progress AS CUSTOM<font></font>
29
PROCEURE updateProgress<font></font>
30
LPARAM m.ta,m.tb, m.tc<font></font>
31
WAIT WINDOW NOWAIT "Page #: "+ALLT(STR(m.tb))+" Report #:
32 "+ALLT(STR(m.ta))+" ("+ALLT(STR(m.tc))+"%)"<font></font>
ENDPROC<font></font>
ENDDEF<font></font>
<font></font>
Asegúrese de establecer todas las propiedades (como iTool, ShowStatus, etc.) antes de
llamar a PreviewXFF (...) de lo contrario no se usarán.
Usando la clase cntXFRXMultiPage
2 Thisform.cntXFRX.clearLink()<font></font>
3 ENDPROC
4. Llame al método PreviewXFF para obtener una vista previa de un archivo XFF, tal como se
describe en el párrafo anterior sobre Controlling multi-tab preview .
5. De forma predeterminada, cntXFRXMultiPage está utilizando una instancia de la clase
XFCont para cada página. Si desea hacer que use una clase diferente (por ejemplo, una
subclase de XFCont) ponga el nombre de la clase en la propiedad ClassPreviewPage de la
instancia cntXFRXMultiPage.
PROCEDIMIENTO
1 PROCEDURE Destroy Thisform.cntXFRX.clearLink() ENDPROC
En VFP 8.0, hay dos opciones para obtener una vista previa del informe en la vista
previa. Las opciones difieren en el mecanismo de llamada, aunque internamente ambos
funcionan exactamente igual.
El enfoque utiliza la sintaxis estándar de llamar a XFRX, sin usar explícitamente la clase XFRX
# DRAW (aunque se usa en segundo plano). No puede abrir un archivo XFF existente con
este enfoque: siempre debe ejecutar un informe que se previsualizará.
1. No envíe nada como el nombre del archivo de salida
2. Use "CNT" como parámetro de tipo de salida en la llamada al método SetParams
3. Método de restablecimiento de llamada de la clase de contenedor de vista previa
4. Llame al método SetOtherParams de la instancia de la clase XFRXSession con la referencia
de la instancia de XFCont como parámetro
Ejemplo:
LOCAL m.loSession, m.lnRetval loSession= xfrx("XFRX#INIT") m.lnRetVal = m.loSession.SetP
1 thisform.cntXFRX * Thisform.cntXFRX.reset() m.loSession.setotherparams(Thisform.cntXFRX)
La ventaja de este método es que puede previsualizar un archivo XFF existente: el archivo
XFF se abre y se "convierte" a tipo de salida "CNT" a través del método TransformReport:
Ejemplo:
LOCAL m.loSession m.loSession= xfrx("XFRX#INIT") Thisform.oReport = xfrx("XFRX#DRAW") IF
1 m.loSession.SetParams(,,,,,,"CNT") IF m.lnRetVal = 0 m.loSession.setOtherParams(Thisform
En VFP 9.0 la lógica es la misma, solo la sintaxis es un poco diferente: la referencia al objeto
XFCont se copia a la propiedad XFRXPreviewer de la instancia de la clase XFRXListener y
luego al método previewReport con la referencia XFRX # DRAW como parámetro se llama:
1 LOCAL m.loSession<font></font>
2 m.loSession= xfrx("XFRX#LISTENER")<font></font>
3 Thisform.oReport = xfrx("XFRX#DRAW")<font></font>
4 IF Thisform.oReport.openDocument("file.xff")<font></font>
5 Thisform.cntXFRX.reset()<font></font>
6 m.loSession.XFRXPreviewer = Thisform.cntXFRX<font></font>
7 m.loSession.previewReport(Thisform.oReport)<font></font>
8 ENDIF
Decoración de hipervínculo
Se ha agregado una nueva propiedad a las clases XFCont, cntXFRXMultipage y
frmMPPreviewer: UnderlineHyperlinksOnPrint. Puede usar los siguientes valores:
0 - sin decoración para hipervínculos
1 - muestra hipervínculos "normales" en azul, pero no decodifica hipervínculos de eventos
personalizados (verde)
2 - (valor predeterminado) decorar hipervínculos azules y verdes
Para apoyar esto en el imprimir salida, el método PrintDocument de la clase XFRX # DRAW
tiene un nuevo parámetro, tnUnderlineHyperlinksOnPrint, con los mismos valores y la
misma lógica.
Botones personalizados
Ejemplo:
1 USE demoreps\sales<font></font>
3 m.loSession=EVALUATE([xfrx("XFRX#LISTENER")])<font></font>
5 IF m.lnRetVal = 0<font></font>
9 *<font></font>
10 m.loXFF = m.loSession.oxfDocument<font></font>
11 *<font></font>
13 *<font></font>
16 m.loPreview = CREATEOBJECT("frmMPPreviewer")<font></font>
17 *<font></font>
19 *<font></font>
20 m.loPreview.oExtensionHandler = CREATEOBJECT("SampleExtensionHandler")<font></font>
21 m.loPreview.windowtype = 1<font></font>
24 m.loPreview.PreviewXFF(m.loXFF)<font></font>
25 m.loPreview.show(1)<font></font>
26 ENDIF<font></font>
27 <font></font>
29 <font></font>
30 oPreviewContainer = .NULL.<font></font>
31 <font></font>
32 PROCEDURE ToolbarOnInit<font></font>
33 LPARAMETERS m.toToolbar<font></font>
34 LOCAL m.button<font></font>
35 IF m.toToolbar.AddObject("mybutton", "commandbutton")<font></font>
37 m.toToolbar.mybutton.tabindex = 1<font></font>
38 m.toToolbar.mybutton.Visible = .t.<font></font>
39 IF UPPER(m.totoolbar.BaseClass)!="TOOLBAR"<font></font>
40 m.toToolbar.mybutton.left = m.toToolbar.cmdQuit.left<font></font>
42 ENDIF <font></font>
43 ENDIF<font></font>
44 ENDPROC<font></font>
45 <font></font>
46 PROCEDURE ButtonClicked<font></font>
47 LOCAL m.lcString<font></font>
53 <font></font>
54 *This.oPreviewContainer.oXFRXWriter.PrintDocument(...)<font></font>
55 *This.oPreviewContainer.oXFRXWriter.SavePicture(...)<font></font>
56 ENDPROC<font></font>
57 <font></font>
58 ENDDEFINE
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
...
Previsualizador de XFRX
martinajindrova
12 de noviembre de 2017
De forma predeterminada, cuando los usuarios hacen clic en el botón "Imprimir" en la barra
de herramientas del previsualizador ( ), se llama al método de impresión de la clase
XFCont. Este método muestra un cuadro de diálogo con una selección de impresora y
permite ingresar un rango de página:
Cuando se realiza una vista previa de un archivo XFF, se puede acceder a la referencia XFRX
# DRAW correspondiente a través de la propiedad oXFRXWriter de la instancia de la clase
de vista previa.
Consulte también: Impresión del capítulo de archivos XFF en la página 46 para obtener
más información sobre cómo imprimir el contenido de los archivos XFF.
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
...
/
Previsualizador de XFRX
martinajindrova
Modificado por última vez ene 17, 2018
De manera similar a la impresión, cuando los usuarios hacen clic en el botón "Exportar" en
la barra de herramientas del previsualizador ( ), se llama al método de exportación de
la clase XFCont. Este método muestra un cuadro de diálogo con el tipo de salida y una
selección de nombre de archivo y convierte el archivo XFF que se está previsualizando en el
documento de salida:
Parámetros:
toXFF: el controlador del archivo XFF
que se está previsualizando en
Parámetros: el objeto que contiene las
opciones de exportación
exportación real
Parámetros:
toXFF: el controlador del archivo XFF
que se está previsualizando en
Parámetros: el objeto que contiene las
opciones de exportación
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
...
/
Previsualizador de XFRX
martinajindrova
Modificado por última vez nov 12, 2017
1 LOCAL m.loPreview<font></font>
2 m.loPreview = CREATEOBJECT("frmMPPreviewer")<font></font>
3 m.loPreview.iEmail = 1 && show the email icon<font></font>
4 m.loPreview.oExtensionHandler = CREATEOBJECT("SampleExtensionHandler")<font></font>
5 m.loPreview.PreviewXFF(LOCAL m.loXFF) && preview the document <font></font>
6 m.loPreview.show(1)<font></font>
7 <font></font>
8 DEFINE CLASS SampleExtensionHandler AS CUSTOM<font></font>
9 <font></font>
10 PROCEDURE Email<font></font>
11 LPARAMETERS m.loXFF[, [m.opt[, m.oProgress]]<font></font>
12 * loXFF - XFF file reference<font></font>
13 * m.opt - email options (since XFRX 17.0.0)<font></font>
14 * m.oProgress - XFRX progress object (since XFRX 17.0.0)<font></font>
15 LOCAL m.loSession, m.lcFileName<font></font>
16 m.loSession=EVALUATE([xfrx("XFRX#INIT")])<font></font>
17 m.lcFileName = Addbs(Sys(2023))+"test.pdf" && temporary file name<font></font>
18 IF m.loSession.SetParams(m.lcFileName,,.T.,,,,"PDF") = 0 && the 3rd parameter say
19 m.loSession.TransformReport(m.loXFF)<font></font>
20 <font></font>
21 LOCAL m.sm<font></font>
22 SET PROCEDURE TO vfpwinsock ADDITIVE <font></font>
23 m.sm = Createobject("vfp_winsock_send_mail")<font></font>
24 m.sm.smtp_host = "your.smtp.server.here" &&&<<<<<<<<<<<<<<<<<<<< put your smtp
25 m.sm.From = "eqeus@eqeus.com" <font></font>
26 m.sm.To = "eqeus@eqeus.com"<font></font>
27 m.sm.subject = "Email test"<font></font>
28 m.sm.silence = .T.<font></font>
29 m.sm.attaCHMENT = m.lcFileName<font></font>
30 IF !m.sm.Send()<font></font>
31 =MESSAGEBOX(m.sm.erreur,16,"xfrx test")<font></font>
32 ELSE<font></font>
33 =MESSAGEBOX("Message was sent",0,"xfrx test")<font></font>
34 ERASE (m.lcFileName)<font></font>
35 ENDIF<font></font>
36 ENDIF <font></font>
37 RETURN .F.<font></font>
38 ENDPROC<font></font>
39 <font></font>
40 ENDDEFINE
Notificaciones de banderas
Documentación XFRX
/
...
/
Previsualizador de XFRX
martinajindrova
12 de noviembre de 2017
que creará la biblioteca de clases XFRXLIB_DE. Traduzca las dos clases de diálogo en la
biblioteca de clases.
Ejemplo:
This.cntXFRX.setLanguage("DE")
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
...
/
Previsualizador de XFRX
Registro de errores
martinajindrova
Modificado por última vez nov 12, 2017
Puede usar el método setLogFile () para crear el registro (desde XFRX 15.5).
=m.loPreview.setLogFile(<tcLogFile>)
Parámetros:
tcLogFile
el nombre del archivo de registro para crear.
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
Una página de índice de clientes seguida de una breve lista de clientes. Para cada cliente
hay una lista de los últimos tres pedidos, el número total de pedidos y la facturación total:
Cuando hace clic en el nombre del cliente, se genera un nuevo informe con los detalles del
cliente, que enumera todos los pedidos del cliente:
Cada vez que se genera un nuevo informe, se agrega como una nueva página al
contenedor de vista previa:
3 <font></font>
5 <font></font>
6 IF EMPTY(m.tnReportType)<font></font>
7 *<font></font>
10 *<font></font>
12 m.loPreview = CREATEOBJECT("frmMPPreviewer")<font></font>
13 m.tnReportType = 1<font></font>
14 m.toViewer = m.loPreview<font></font>
15 ENDIF<font></font>
16 <font></font>
17 *<font></font>
19 *<font></font>
20 m.loSession=EVALUATE([xfrx("XFRX#LISTENER")])<font></font>
21 m.lnRetval = loSession.SetParams(,,,,,,"XFF")<font></font>
22 IF m.lnRetval = 0<font></font>
23 *<font></font>
24 * now let’s see which report we want to run, select the data<font></font>
26 *<font></font>
27 DO CASE<font></font>
32 <font></font>
34 <font></font>
35 SELECT * ;<font></font>
40 <font></font>
43 <font></font>
45 SELECT * ;<font></font>
51 <font></font>
54 <font></font>
56 SELECT * ;<font></font>
63 <font></font>
66 ENDCASE<font></font>
67 ENDIF<font></font>
68 <font></font>
69 *<font></font>
70 * now preview the report<font></font>
71 *<font></font>
72 m.toViewer.previewXFF(m.loSession.oxfdocument, m.lcPageCaption)<font></font>
73 *<font></font>
75 *<font></font>
76 IF NOT loPreview.Visible<font></font>
77 *<font></font>
79 *<font></font>
80 m.loPreview.Show(1)<font></font>
81 EENDIF
Como puede ver, el código se llama primero sin parámetros, que ejecuta automáticamente
el primer informe (lista de clientes). A continuación, se llama al mismo código
(recursivamente, cuando el previsualizador está en modo modal) desde la vista previa
cuando los usuarios hacen clic en el evento personalizado con parámetros que controlan
qué informe se debe ejecutar, qué parámetros se deben usar para la instrucción de
selección y qué se debe el título de la página correspondiente en el reproductor.
Lista de Nombre del #UR A HREF = "vfpev: \\ runreport (2, '" + allt
clientes cliente (customerid_a) + "', thisviewer)"
Detalle del Número de #UR A HREF = "vfpev: \\ runreport (3," + allt (str
cliente orden (orderid_a)) + ", thisviewer)"
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
Páginas
/
Guía del desarrollador
Conversión de informes a imágenes
XFRX puede exportar páginas de informes individuales como imágenes BMP, PNG, GIF,
JPEG (JPG) y EMF, múltiples páginas se pueden exportar a formato de imagen TIFF (TIF).
La ventaja de este enfoque es que una vez que se genera el archivo XFF, es muy fácil
obtener el recuento de páginas, generar imágenes individuales en un ciclo, etc.
Puede generar los siguientes formatos de imagen: TIFF (TIF), BMP, GIF, JPEG (JPG), PNG,
EMF. El TIFF admite varias páginas, por lo que todo el informe se convierte en un único
archivo. Para otros formatos de salida, se crea un archivo por página: el nombre del archivo
se toma del parámetro tcFilename con _% PAGENO%.
La siguiente tabla muestra la asignación entre los parámetros ampliados y los parámetros
del método SavePicture ().
SetOtherParams () Guardar foto()
DE tnDe
A tnTo
BPP tnBpp
THUMBNAILHEIGHT tnThumbnailHeight
PAGESPERSHEET tnPagesPerSheet
ALLEVENODD tnAllEvenOdd
FINDSTRING laFindString
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
Páginas
/
Guía del desarrollador
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
Martin Haluza
La cantidad de registros no está limitada a 65K. El límite de Excel actual es de 1.048.576 filas
por hoja. Si el número de filas exportadas es mayor, la salida se envía a varias hojas.
El archivo generado puede tener hasta 2GB de tamaño
Opciones de formato, incluido el formateo dinámico (condicional), ancho de columna,
nombres y estilos de encabezado y recorte de texto
Nota de rendimiento
Excel: en una gran exportación de datos con 60 columnas en total, la velocidad promedia
2.500 registros por segundo. Al formatear la función de devolución de llamada está
activada, la velocidad puede ser más lenta, dependiendo del número de columnas y las
opciones de formato.
Ejecutando la exportación
Ejemplo
1 OPEN DATABASE "C:\Program Files (x86)\Microsoft Visual FoxPro 9\Samples\Northwind\Northw
2 USE "Invoices"<font></font>
5 IF m.liErr<>0<font></font>
6 ?"ERROR",m.liErr<font></font>
7 ENDIF
Barra de progreso
Opciones de formateo
Valores de fecha
ESTABLECE LA FECHA
SET CENTURY
FIJAR MARCA A
2 Tipo de campo
4 Decimales de campo
5 Indicador NULL
6 Indicador NOCPTRANS
8 Formato XLS
9 Ancho de columna en px
Ejemplo
13 <font></font>
19 <font></font>
20 <font></font>
21 ...<font></font>
23 ...<font></font>
24 <font></font>
25 PROCEDURE copytoxlsxfccallback(m.laFields)<font></font>
26 <font></font>
28 <font></font>
30 m.laFields(m.lii,XFRX_FORMATCOL_CAPTION)="Description "+;<font></font>
31 LTRIM(STR(m.lii,11))+" "+;<font></font>
32 m.laFields(m.lii,XFRX_FORMATCOL_FNAME) &&
33 * Header cell format<font></font>
34 WITH m.laFields(m.lii,XFRX_FORMATCOL_HCELLF)<font></font>
36 .font="Tahoma" <font></font>
37 .fontsize=12<font></font>
38 .bold=.T.<font></font>
39 .ital=.T.<font></font>
40 .underline=.T.<font></font>
43 .fillred=m.laColor(1)<font></font>
44 .fillgreen=m.laColor(2)<font></font>
45 .fillblue=m.laColor(3) <font></font>
47 .penred=m.laColor(1)<font></font>
48 .pengreen=m.laColor(2)<font></font>
49 .penblue=m.laColor(3)<font></font>
50 ENDWITH<font></font>
51 <font></font>
53 WITH m.laFields(m.lii,XFRX_FORMATCOL_DCELLF)<font></font>
54 .lstriked=.T.<font></font>
56 .DynamicFontBold=[IIF(UNITPRICE>50,.T.,.F.)]<font></font>
57 .DynamicForeColor=[IIF(UNITPRICE>50,RGB(255,0,0),0)]<font></font>
58 .DynamicFontItalic=[IIF(UNITPRICE>50,.T.,.F.)]<font></font>
59 .DynamicFontUnderline=[IIF(UNITPRICE>50,.T.,.F.)]<font></font>
60 .DynamicFontName=[IIF(UNITPRICE>50,'Courier New','Arial')]<font></font>
61 .DynamicFontSize=[IIF(UNITPRICE>50,12,10)]<font></font>
62 .DynamicAlignment=[IIF(UNITPRICE>50,'center','')]<font></font>
63 .DynamicBackColor=[IIF(UNITPRICE>50,RGB(192,192,192),RGB(255,255,255))]<font></fo
64 .DynamicFontStrikeThru=[IIF(UNITPRICE>50,.T.,.F.)]<font></font>
65 ENDWITH<font></font>
69 NEXT
3 * lcFCCallBack - Callback function name - please see Formatting options below (optional
6 * lcSheetName - Excel sheet name (optional); if contains %XFRX_SGV% thne will be replac
11 <font></font>
13 USE "Invoices"<font></font>
15 <font></font>
16 SET PROCEDURE TO xfrx.prg<font></font>
18 IF m.liErr<>0<font></font>
19 ?"ERROR",m.liErr<font></font>
20 ENDIF<font></font>
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
Páginas
/
Guía del desarrollador
XFRX se puede incorporar fácilmente en aplicaciones compiladas como DLL COM para
proporcionar funciones de informes en el entorno basado en web.
Hemos preparado una aplicación de muestra de esta técnica. Está disponible en línea
en http://www.eqeus.net/x.net . Si está interesado en el código fuente de esta
demostración, envíenos un correo electrónico a support@eqeus.com y se lo enviaremos.
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
Formato de texto
martinajindrova
Formatos admitidos
Actualmente, se admiten dos formatos: pseudo HTML y código BB. RTF apoya está en
desarrollo.
Formatos admitidos
5 <font></font>
6 <font></font>
13 <font></font>
23 <font></font>
27 <font></font>
28 <font></font>
29 <font></font>
En VFP 9.0 o VFP 9.0 con SP1, "Stretch with overflow" no es compatible. El texto enriquecido
se puede representar en cuadros de texto con una altura estática solamente.
En VFP 9.0 con SP2, el texto enriquecido se puede representar en el cuadro de texto con
altura dinámica o altura estática. Para que el cuadro de texto con altura dinámica funcione
correctamente, la propiedad CallEvaluateContents debe establecerse en 2:
loSession=EVALUATE([XFRX("XFRX#LISTENER")])<font></font>
loSession.CallEvaluateContents=2<font></font>
Textformat a la pantalla
La salida del formato de texto también puede dibujarse en la pantalla. Puede descargar el
paquete Textformat2Screen.zip con ejemplos para <tf> y <bb>.
DO tf2screen.prg WITH "<TF>","tf-001.txt"<font></font>
DO tf2screen.prg WITH "<BB>","bb-001.txt"<font></font>
<font></font>
<font></font>
SELECT tf<font></font>
<font></font>
<font></font>
SELECT tf <font></font>
SKIP 1<font></font>
<font></font>
<font></font>
<font></font>
SELECT tf <font></font>
SKIP 2 <font></font>
<font></font>
SELECT bb <font></font>
<font></font>
<font></font>
SELECT bb <font></font>
SKIP 1<font></font>
<font></font>
<font></font>
SELECT bb <font></font>
SKIP 1 <font></font>
Formatos admitidos
Configuración predeterminada: general
Configuración predeterminada - cita
Configuración predeterminada - lista
Configuración predeterminada - Tabla
Cómo usar el formato de texto con XFRX # LISTENER
VFP 9.0 SP0 / SP1
VFP 9.0 SP2
Textformat a la pantalla
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
...
/
Formato de texto - HTML
martinajindrova
Modificado por última vez dic 24, 2017
CRLF <br>
tamaño de
la
pestaña;
color;
nombre de
la fuente;
tamaño de
fuente;
Estilo de
fuente;
font-
weight;
texto-
decoració
n;
altura de
la línea;
color;
nombre de
la fuente;
tamaño de
fuente;
Estilo de
fuente;
font-
weight;
texto-
decoració
n;
tamaño de
la
pestaña;
color;
nombre de
la fuente;
tamaño de
fuente;
Estilo de
fuente;
font-
weight;
texto-
decoració
n; altura
de la
línea;
tamaño de
la
pestaña;
color;
nombre de
la fuente;
tamaño de
fuente;
Estilo de
fuente;
font-
weight;
texto-
decoració
n; altura
de la
línea;
tamaño de
la
pestaña;
color;
nombre de
la fuente;
tamaño de
fuente;
Estilo de
fuente;
font-
weight;
texto-
decoració
n;
tamaño de
la
pestaña;
color;
nombre de
la fuente;
fontt-size;
Estilo de
fuente;
font-
weight;
texto-
decoració
n;
<list> </list> <list style=""> list-style-
<li>First</li> image;
<li>Second</li>
</list> texto
alineado;
margen;
relleno;
ancho del
borde;
estilo de
borde; col
or de
fondo; tab
-stops;
curvatura;
guion de
texto;
dirección;
juego de
caracteres;
tamaño de
la
pestaña;
color;
font-name
font-size;
Estilo de
fuente;
font-
weight;
texto-
decoració
n;
tamaño de
la
pestaña;
color;
nombre de
la fuente;
tamaño de
fuente;
Estilo de
fuente;
font-
weight;
texto-
decoració
n;
<ul>
<li
template="alias_expression
"><vfpev>Expression</vfpev
></li>
</ul>
<p template="alias_express
ion">
<vfpev>Expression</vfpev><
/p>
Atributos de CSS
flotador izquierda | derecho | centro Para los valores que quedan | derecho
| texto arriba-abajo | texto- puede ser posición solo estática.
rectángulo Para valores text-top-bottom | texto-
rectángulo puede ser solo posición
absoluta | párrafo relativo.
Centro de valores agregado en XFRX
17.2.0.
Valores text-top-bottom | texto-
rectángulo están en desuso desde
XFRX 17.2.0.
list-style- decimal |
type decimal con corchete |
romano superior |
romano superior con soporte
|
latín superior |
latín superior con soporte |
bajo latino |
bajo latín con soporte |
romano superior |
romano superior con soporte
margen A arriba-derecha-abajo-izquierda
B arriba-abajo, derecha-izquierda
A BC arriba, derecha-izquierda, abajo
A B CD arriba, derecha, abajo izquierda
margen tamaño
superior
relleno A arriba-derecha-abajo-izquierda
AB arriba-abajo, derecha-izquierda
A BC arriba, derecha-izquierda, abajo
A B CD arriba, derecha, abajo izquierda
acolchado tamaño
superior
fondo tamaño
acolchado
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
...
/
Formato de texto
martinajindrova
Modificado por última vez abr 23, 2017
[color=CMYK(0,1,1,0)][/color]
[ul]
[li
template="alias_expression"][vfpev]F
IELD[/vfpev][/li]
[/ul]
[left
template="alias_expression"][vfpev]F
IELD[/vfpev][/left]
[ plantilla derecha =
"alias_expression"][vfpev]FIELD[
/vfpev][/right]
[block template =
"alias_expression"][vfpev]FIELD[
/vfpev][/block]
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
...
/
Formato de texto
martinajindrova
Modificado por última vez oct 13, 2017
Propiedades de párrafo
Tokens de control
Tabelat \tab
or
CRLF \line
Párrafo \par
Objetos
<p template="alias_expression">
<vfpev>Expression</vfpev></p>
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
...
/
Formato de texto
Tabla de colores
martinajindrova
Modificado por última vez mar 26, 2017
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
Páginas
/
Guía del desarrollador
metadata.attachments
Referencia
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
...
martinajindrova
Propiedades
PictureDPI Versión
XFRX
Calidad JPEG
lMultiLineLineBehavior
Active el antiguo algoritmo para la altura de los calcs del texto de 15.0.3
varias líneas
nFlowLayoutMode
cTextToImage
Propiedades
PictureDPI
DefaultPictureFormat
Calidad JPEG
lMultiLineLineBehavior
nFlowLayoutMode
cTextToImage
Métodos principales
Mensaje de error()
Setparams ()
SetOtherParams (...)
Finalizar()
initLog ()
setLogFile ()
Métodos para registrar secuencias XFF enlazadas a la página
RegisterScript ()
UnregisterAllScripts ()
Métodos de ajuste de tamaño de página
setPaperSize ()
ShrinkHeight ()
Métodos para definir el cifrado de documentos
setPasswords ()
setPermissions ()
Métodos para establecer las propiedades del documento
setAuthor ()
setCategory ()
setComments ()
setCompany ()
setCreator ()
setKeywords ()
setManager ()
setProducer ()
setSubject ()
setTitle ()
setCreationDate ()
Métodos de archivos adjuntos
AddAttachment ()
ClearAttachments ()
Métodos principales
Mensaje de error()
Sintaxis:
lnRetVal = loXFRXobj.ErrorMessage(lnErrorNo)
Este método devuelve un mensaje de error correspondiente al valor devuelto por el método SetParam
Setparams ()
<tlDeleteFileAfter>, <tuAppend>)
Valores devueltos:
0 ... todo estuvo bien, puede comenzar a procesar informes
-1 ... no puede cargar la aplicación Word o Excel
-2 ... la versión de la aplicación Word o Excel debe ser 2000 o superior
-3 ... no puede crear o abrir el archivo de salida
-4 ... destino desconocido
-5 ... hndlib.dll no se puede cargar (falta o se usa una versión anterior)
-6 ... xfrxlib.fll no se puede cargar (falta o no es válido). Por favor vea las preguntas más frecuentes si
-7 ... zlib.dll no se puede cargar
-8 ... Se usa un viejo xfrxlib.fll
-9 ... Lo sentimos, se requiere Word 2007 o superior para el formato docx.
-10 ... El documento existente está dañado o en un formato no compatible
-11 ... Archivo de firma no encontrado
-12 ... No se puede usar el archivo de firma
-13 ... La carpeta de salida no existe o no tiene acceso de escritura
-14 ... El documento existente usa transmisión de reflujo rápido - es no es posible agregar datos. (desde
cargar la aplicación de Excel. (desde XFRX 17.0) -16 ... La versión de la aplicación Excel debe ser 200
... PDFpassword no es válido. (desde XFRX 17.1) -18 ... No es posible añadir nuevos datos con contras
XFRX 17.1)
Puede recuperar el mensaje en inglés para el código devuelto con el método ErrorMessage () .
Parámetros:
tcOutputName
el nombre del documento para crear.
Directorio tcTempDirectory donde se crearán los archivos temporales. Si está en blanco, los archivos
temporal de Visual FoxPro [opcional]
tlNotOpenViewer
si se establece en .T., los documentos no se abrirán después de la generación [opcional]
tcCodePage
es una página de códigos del documento generado [opcional]. Si no especifica este parámetro, se usa
tlSilent
si se establece en .T., no se imprimirán mensajes [opcional]. Esta opción es útil si su aplicación no est
mensaje Procesando ... y los mensajes de error en su código.
tlNewSession
de forma predeterminada, el documento de Word estará abierto en la sesión de Word actual, si existe.
.T., El documento siempre estará abierto en una nueva sesión de Word. Esta opción no se usa para obje
tcTarget
El tipo de salida que se generará. Uno de los valores enumerados en Tipos de objetivos de salida XFR
tcArchive
El nombre del archivo zip que se creará. Si no está vacío, el archivo generado se agregará al archivo d
tlAdditive
Si se establece en .T. y el archivo ya existe, el archivo será agregado. (Opcional)
Tenga en cuenta: puede agregar varios archivos al archivo, pero los archivos existentes con el mismo n
archivos nuevos siempre se agregarán.
tlDeleteFileAfter
Si se establece en .T., el archivo generado se eliminará una vez que se haya copiado en el archivo. (O
tuAppend
Especifica si el documento generado se anexará a un archivo existente. Este parámetro puede ser lógic
siguiente significado:
Tipo Valor Sentido
PDF 10.1
RTF 16.1
FRTF 16.1
LLANURA 16.1
PDF 10.1
RTF 16.1
FRTF 16.1
LLANURA 16.1
PDF 10.1
RTF 16.1
FRTF 16.1
LLANURA 16.1
PDF 10.1
RTF 16.1
FRTF 16.1
PDF 10.1
RTF 16.1
FRTF 16.1
PDF 10.1
RTF 16.1
FRTF 16.1
Ejemplos:
Parámetro Sentido
"R4: 8" El informe generado se insertará entre las páginas 3 y 9, reemplazando las páginas 4,5
SetOtherParams (...)
Este método se usa para agregar varios parámetros específicos del tipo de salida. El primer parámetro e
el parámetro que se establecerá, el segundo parámetro es los valores que se establecerán.
Ejemplo:
Para establecer el siguiente nombre de la hoja en el documento XLS en "Cliente 1", llame a:
.SetOtherParams ("NEXT_SHEET_NAME", "Cliente 1")
PRINT_BOOKMARKS Lógico, Puede enviar dos parámetros con esta opción. El pri
Numérico lógico y controla si el marcador debe mostrarse (.T.)
predeterminado).
El segundo parámetro especifica qué tipo de marcad
mostrar:
Encontrará más información sobre el parámetro de texto sin formato en Convertir informes en el capít
41.
Finalizar()
Este método finaliza la generación de documentos y muestra el documento generado (a menos que la v
explícitamente suprimida).
La Finalizar () método no tiene que ser llamado en VFP 9.0, si el último comando FORM de informe
NOPAGEEJECT.
initLog ()
Parámetros:
tlSilent
no escribe el encabezado en el archivo de registro [opcional]
setLogFile ()
Este método crea un archivo de registro con el nombre < tcLogFile >.
Sintaxis
= loXFRXobj.setLogFile(<tcLogFile>, <tlSilent>)
Parámetros:
tcLogFile
el nombre del archivo de registro para crear.
tlSilent
no escribe el encabezado en el archivo de registro [opcional]
Sintaxis:
RegisterScript(toScriptObject, tcScriptMethod, tnZOrder, tcPageScope, tnNumberingTyp
Parámetros:
toScriptObject
Referencia del objeto PDFLScripts
tcMethodName
El nombre del método que contiene la secuencia de comandos
tnZIndex
0 ... imprima a continuación (antes) la página de informe
1 ... imprima arriba (después) la página de informe
tcScope
Define qué páginas invocar los scripts. Puede contener "ALL", "ODD", "EVEN" y números delimitad
con comas. Los guiones se pueden usar para definir el alcance de entrada. Ejemplos: "ODD", "1,5-19",
"ODD, 4,8"
tnPageNumberingType
Define cómo XFRX determina el número de página:
0 ... absolute - el número de página en el documento,
1 ... relativo - el número de página en el informe actual,
2 ... el valor de _PAGENO
UnregisterAllScripts ()
Sintaxis:
UnregisterAllScripts()
Si se combinan varios informes y desea aplicar scripts en un determinado informe, pero no en los sigui
llame a este método para eliminar todos los registros de scripts.
Este método no necesita ser llamado al final del procesamiento de informes.
Use este método para definir un tamaño de página definido por el usuario.
Sintaxis:
setPaperSize(nUDPaperWidth, nUDPaperHeight[,nUDPaperOrientation] )
ShrinkHeight ()
Use este método para acortar el tamaño de la página. Consulte el ajuste del tamaño
de página HTML en la estructura 34 para obtener más información.
setPermissions ()
setCategory ()
setComments ()
setCompany ()
setCreator ()
setKeywords ()
setManager ()
setProducer ()
setSubject ()
setTitle ()
setCreationDate ()
Parámetros: tdValue (date / datetime) es un valor que se usará en las propiedades del
documento.
ClearAttachments ()
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
...
Referencia
metadata.attachments
Clase XFRXListener
martinajindrova
Propiedades :
AppendToFile
Ejemplos:
Parámetro Sentido
Página de código
DoNotOpenViewer
NewViewerSession
Modo silencioso
targetFileName
tipo de objetivo
TMPFolder
Carpeta donde se crearán los archivos temporales. Si está en blanco, los archivos
temporales se crearán en la ruta temporal de Visual FoxPro
Métodos :
Los métodos comunes se describen en Propiedades y métodos comunes en las clases
XFRXListener y XFRXSession (arriba).
zipDocument ()
Puede enviar estos tres parámetros a XFRX ya sea por este método o como los
últimos tres parámetros del método SetParams. Este método está disponible para su
conveniencia de que prefiera completar las propiedades de XFRXListener y llamar a
SetParams sin parámetros.
Propiedades:
AppendToFile
Página de código
DoNotOpenViewer
lAllwaysWholePage
NewViewerSession
Modo silencioso
targetFileName
tipo de objetivo
TMPFolder
Métodos:
zipDocument ()
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
...
Referencia
metadata.attachments
Clase XFRXSession
martinajindrova
lHidePictureOutsideBand
.T. - Ocultar imagen si la línea inferior está fuera de banda (valor predeterminado)
.F. - Muestre la imagen si la línea de fondo está fuera de banda
lAbsoluteHackAllowed
.T. - XFRX detecta objetos para la posición absoluta (valor predeterminado para la compilación con VFP 9.0)
.F. - XFRX no detecta objetos para la posición absoluta
ProcessReport ()
Procesa el informe.
Sintaxis:
ProcessReport(<tcReportName>, <tcForClause>, <tlSummary>, <tcScopeClause>, <tcWhileC
Parámetros:
tcReportName
el nombre del archivo de informe
tcForClause
la cláusula FOR [opcional]
tlSummary
El interruptor de cláusula de resumen. Si se establece en .T., El informe se procesa como si se utilizar
en el comando FORM INFORMAR [opcional]
tcScopeClause
La cadena correspondiente a la cláusula de alcance del informe (como NEXT 4, REST, ALL, RECOR
predeterminado es "TODO" [opcional]
tcWhileClause
La cláusula while [opcional]
tlPlain
interruptor de formato normal. Enviar .T. como este parámetro para cambiar la salida HTML a format
simple no genera ningún salto de página en el documento; se generará una página larga. El valor prede
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
...
Referencia
metadata.attachments
martinajindrova
Propiedades:
PageCount
O
XFRXDraw::AddPage(tnPageWidth, tnPageHeight)
Parámetros:
tcPageSize
El tamaño de página de la página nueva. Valores disponibles: "A4", "carta"
tnPageWidth, tnPageHeight
El ancho y el alto de la nueva página. La unidad se puede definir mediante
el método SetUnit (). La unidad por defecto apunta (1/72 en).
Si no se especifica el tamaño de página, se utiliza el tamaño de página actual.
CreateDocument ()
Valores devueltos
.T. ... el archivo se creó con éxito
.F. ... archivo no pudo haber sido creado ()
Dibujar linea()
Parámetros:
tnXPos, tnYPos
Las coordenadas X, Y del punto de inicio de la línea.
tnXToPos, tnYPPos
Las coordenadas X, Y del punto final de la línea.
tnLineWidth
El ancho de línea en puntos. 0 representa la línea del cabello. Opcional, valor
predeterminado = 1.
tnPenPattern
El patrón de línea del borde:
0 ... sin borde
1 ... con puntos
2 ... con puntos
3 ... con puntos y rayas
4 ... punto con punto y coma
8 ... línea sólida
Opcional, valor predeterminado = 8.
Dibujar la imagen()
tcFilename[, tnAdjType<font></font>
[, llCentralHorizontaly[, tnRotate[,<font></font>
Parámetros:
tnXPos, tnYPos
Las coordenadas X, Y de la esquina superior izquierda del rectángulo delimitador.
tnWidth
El ancho del rectángulo
tnHigh
La altura del rectángulo
tcFileName
El nombre del archivo de imagen
tnAdjType
0 ... imagen de clip
1 ... estira la imagen, conserva la forma
2 ... estira la imagen, llena el cuadro
llCentralHorizontaly
Center horizontaly en el marco (desde XFRX 15.7).
tnRotate
El ángulo de rotación del texto en grados. La etiqueta se girará en el sentido
contrario a las agujas del reloj. Valor predeterminado opcional = 0 (desde XFRX
15.7).
tnRotationPoint
El punto dentro del rectángulo alrededor del cual se rota el texto. Los valores
permitidos son 0..8, opcional, valor predeterminado = 0 (izquierda, arriba). Consulte
la imagen de la derecha para las posiciones de los puntos (desde XFRX 15.7).
tcLinkName
Si se completa este parámetro, el texto será un objetivo designado de un
hipervínculo. ( Consulte elparámetro tcLinkRef ) (desde XFRX 15.7).
tcLinkRef
Si se completa este parámetro, el texto será un hipervínculo. Navegará a un
destino con el nombre tcLinkRef (desde XFRX 15.7).
DrawGeneralField ()
[, llCentralHorizontaly[, tnRotate<font></font>
[, tnRotationPoint[, tcLinkName<font></font>
[, tcLinkRef]]]]]])
Parámetros:
tnXPos, tnYPos
Las coordenadas X, Y de la esquina superior izquierda del rectángulo delimitador.
tnWidth
El ancho del rectángulo
tnHigh
La altura del rectángulo
tcFieldName
El nombre general del campo
tnAdjType
0 ... clip Imagen
1 ... estira la imagen, conserva la forma
2 ... estira la imagen, llena el cuadro
llCentralHorizontaly
Center horizontaly en el marco.
tnRotate
El ángulo de rotación del texto en grados. La etiqueta se girará en el sentido
contrario a las agujas del reloj. Opcional, valor predeterminado = 0.
tnRotationPoint
El punto dentro del rectángulo alrededor del cual se rota el texto. Los valores
permitidos son 0..8, opcional, valor predeterminado = 0 (izquierda, arriba). Por
favor, mira la imagen a la derecha para las posiciones de los puntos.
tcLinkName
Si se completa este parámetro, el texto será un objetivo designado de un
hipervínculo. (ver parámetro tcLinkRef ).
tcLinkRef
Si se completa este parámetro, el texto será un hipervínculo. Navegará a un
destino con el nombre tcLinkRef .
DrawRectangle ()
tnHeight [, tnLineWidth<font></font>
[, tnFillPattern<font></font>
[, tnPenPattern[, tnRoundFactor<font></font>
Parámetros:
tnXPos, tnYPos
Las coordenadas X, Y de la esquina superior izquierda.
tnWidth
El ancho del rectángulo
tnHigh
La altura del rectángulo
tnLineWidth
El ancho de línea en puntos. 0 representa la línea del cabello. Opcional, valor
predeterminado = 1.
tnFillPattern
El patrón de relleno:
0 ... Sin relleno
1 ... Relleno (color)
2 ... Línea horizontal
3 ... Línea vertical
4 ... Diagonal ascendente
5 ... Diagonal descendente
6 ... Cruz
7 ... Cruz Diagonal
Opcional, valor predeterminado = 0.
tnPenPattern
El patrón de línea del borde:
0 ... sin borde
1 ... con puntos
2 ... con puntos
3 ... con puntos y rayas
4 ... punto con punto y coma
8 ... línea sólida
Opcional, valor predeterminado = 8.
tnRoundFactor
El radio de la curvatura de los bordes del rectángulo. 0 hace que el rectángulo esté
en ángulo recto (sin redondeo), 99 crea una elipse. Opcional, valor predeterminado
= 0.
tnMode
El modo opaque / transparent (desde XFRX 16.0):
0 ... Opaco
1 ... Transparente
Opcional, valor predeterminado = 0.
tnRotate (desde XFRX 17.3) El ángulo de rotación del texto en grados. La etiqueta
se girará en el sentido contrario a las agujas del reloj. Opcional, valor
predeterminado = 0.
tnRotationPoint (desde XFRX 17.3)
El punto dentro del rectángulo alrededor del cual se rota el texto. Los valores
permitidos son 0..8, opcional, valor predeterminado = 0 (izquierda, arriba). Por
favor, mira la imagen a la derecha para las posiciones de los puntos.
El borde y el color de relleno deben definirse mediante el método SetColor () antes
de llamar al método DrawRectangle () .
DrawText ()
[, tnRotate[, tcLinkName[,<font></font>
tcLinkRef[, tcBookmark<font></font>
O
XFRXDraw::DrawText(tcText[, tnRotate[, <font></font>
tnmode[, liCP]]]]]]])
Parámetros:
tnLeft, tnTop
Las coordenadas donde se dibujará el texto. Si se usa la segunda sintaxis (sin las
coordenadas), el texto se dibujará en la posición actual: que es una posición definida
por el método SetPos () o un final de una salida si
la llamada anterior al método DrawText () .
tcText
El texto a dibujar
tnRotate
El ángulo de rotación del texto en grados. La etiqueta se girará en el sentido
contrario a las agujas del reloj. Opcional, valor predeterminado = 0.
tcLinkName
Si se completa este parámetro, el texto será un objetivo designado de un
hipervínculo. (ver parámetro tcLinkRef ).
tcLinkRef
Si se completa este parámetro, el texto será un hipervínculo. Navegará a un
destino en el documento local con el nombre tcLinkRef . Para navegar a una URL
http, incluya "http: //" al comienzo del parámetro.
tcBookmark
No está vacío, el parámetro contiene el nombre de un marcador que se creará y
navegará hasta este texto.
tcTooltip
La información sobre herramientas que se muestra al pasar el mouse sobre este
texto.
tnMode Modo
opaco / transparente (desde XFRX 15.7).
0 ... "opaco
1 ..." transparente "
DrawTextBox ()
[, tnRotate[,tnRotationPoint[,<font></font>
El punto dentro del rectángulo alrededor del cual se rota el texto. Los valores
permitidos son 0..8, opcional, valor predeterminado = 0 (izquierda, arriba). Por
favor, mira la imagen a la derecha para las posiciones de los puntos.
tcLinkName
Si se completa este parámetro, el texto será un objetivo designado de un
hipervínculo. (ver parámetro tcLinkRef ).
tcLinkRef
Si se completa este parámetro, el texto será un hipervínculo. Navegará a un
destino con el nombre tcLinkRef .
tcBookmark
No está vacío, el parámetro contiene el nombre de un marcador que se creará y
navegará hasta este texto.
tcTooltip
La información sobre herramientas que se muestra al pasar el mouse sobre este
texto.
modo tnMode
Opaque / transparent (desde XFRX 15.4).
0 ... "opaco
1 ..." transparente "
GetBoundingRectangle ()
Valor de retorno:
NULL : el rectángulo delimitador no está disponible
GetPageWidth ()
GetPageHeight ()
GetXPos ()
GetYPos ()
OpenDocument ()
Valores devueltos
.T. ... el archivo se abrió con éxito
.F. ... el archivo no se pudo haber abierto (el archivo no existe o está bloqueado)
Imprimir documento()
[laFindString, [lcOutput]]]]]]]])
Valores devueltos
-100 ... no se puede inicializar el dispositivo de la impresora
-101 ... no se puede inicializar el controlador de la impresora
-102 ... no se puede inicializar la estructura DEVMODE
0 ... sin errores
Parámetros:
tcPrinterName
Luego, nombre de la impresora a la que se enviará el documento
tcJobName
El nombre del trabajo de la impresora
tnDe
Si es numérico, la primera página que se imprimirá.
tnTo
La última página que se imprimirá.
tcDEVMODE
DEVMODE estructura.
tnPagesPerSheet
El número de páginas por hoja.
tnAllEvenOdd
Incluye todas las páginas, impar o par solamente. Los valores permitidos son:
1 ... todas las páginas (valor predeterminado)
2 ... páginas impares
3 ... incluso páginas
tn Copias
El número de copias.
tnUnderlineHyperlinksOnPrint
Imprimir hipervínculo ...
0 - No imprimir hipervínculo
1 - Imprimir hipervínculo en color azul
2 - Imprimir hipervínculo en color verde
Guardar foto()
El método SavePicture guarda las páginas del informe como una imagen.
Sintaxis:
XFRXDraw::SavePicture(tcFilename, tcType, tnFrom [, <font></font>
Valores devueltos
0 ... no se encontraron errores
-1 ... formato de imagen desconocido
-2 ... página fuera de rango
Parámetros:
tcFilename
El nombre del archivo que se generará.
tcType
El formato de la imagen que se guardará. Las opciones admitidas actualmente son:
BMP, GIF, JPEG (JPG), PNG, TIFF (TIF), EMF.
tnDe
El número de página que se guardará. Si se guarda el formato TIFF, el parámetro
especifica la primera página que se guardará.
tnTo
Si se guarda el formato TIFF, el parámetro especifica la última página que se
guardará. Ignorado de lo contrario.
tnBpp
Bits por píxel. Los valores admitidos actualmente son 2, 16 o 24.
tnJPEGQuality
Especifica la calidad de compresión JPEG. El rango es de 1 - la calidad más baja a
100 - la mejor calidad. El valor predeterminado es 0 - calidad
predeterminada. Ignorado para otros tipos de salida.
tnTumbnailWidth
El ancho de la imagen de salida en píxeles.
tnThumbnailHeight
La altura de la imagen de salida en píxeles.
tnPagesPerSheet
El número de páginas por hoja.
tnAllEvenOdd
Incluye todas las páginas, impar o par solamente. Los valores permitidos son:
1 ... todas las páginas (valor predeterminado)
2 ... páginas impares
3 ... incluso páginas
tn Copias
Número de copias. Este parámetro es ignorado.
laFindString (XFRX 15.4)
Una matriz contiene cadenas para resaltar (color de fondo yelow).
liBackGroundMode (XFRX 15.5)
Modo de fondo de la imagen de salida para formato TIFF, EMF y PNG
SetColor ()
Parámetros:
tfr, tfg, tfb Componentes
rojos, verdes y azules del color de primer plano
tbr, tbg, tbb Componentes
rojos, verdes y azules del color de fondo (opcional)
SetFont ()
tlStrikeThrough]]]])
Parámetros:
tcFontName
El nombre de la fuente
tnSize
El tamaño de fuente en puntos
tlBold, tlItalics, tlUnderline, tlStrikeThrough
Los atributos de la fuente. Estos parámetros son opcionales, el valor
predeterminado es .F. El parámetro tlStrikeThrough es desde XFRX 15.7
SetPos ()
Parámetros:
tnXPos, tnYPos
Las coordenadas X e Y (horizontal y vertical) de la posición. La unidad de
coordenadas se define mediante el método SetUnit () , la unidad predeterminada es
Point (pt).
SetUnit ()
Parámetros:
tcUnit
El código de unidad. Los valores permitidos son: "in" - pulgadas, "cm" -
centímetros, "pt" - puntos y "px" - píxeles.
Propiedades:
PageCount
Métodos:
AddPage ()
CreateDocument ()
Dibujar linea()
Dibujar la imagen()
DrawGeneralField ()
DrawRectangle ()
DrawText ()
DrawTextBox ()
GetBoundingRectangle ()
GetPageWidth ()
GetPageHeight ()
GetXPos ()
GetYPos ()
OpenDocument ()
Imprimir documento()
Guardar foto()
SetColor ()
SetFont ()
SetPos ()
SetUnit ()
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
...
/
Referencia
metadata.attachments
Clase XFCont
martinajindrova
Modificado por última vez mar 11, 2017
Clase de contenedor de vista previa de XFRX. Esta sección describe las propiedades que
puede modificar en su implementación personalizada de la vista previa.
yo reservo
-1 = Inhabilitar marcadores
0 = Habilitar marcadores pero ocultarlos (los usuarios deben hacer clic en el botón de
marcador para verlos)
1 = Habilitar marcadores, mostrándolos siempre
2 = Habilitar los marcadores, pero mostrarlos u ocultarlos automáticamente en
función de si hay marcadores definidos en el informe para previsualizar
(predeterminado)
iTool
Controla la visibilidad de la barra de herramientas en la parte superior. Los valores
permitidos son:
mostrar el estado
DisplayMessage ()
XFCont está utilizando este método para mostrar mensajes a través de WAIT
WINDOW. Si desea cambiar esto, puede anular este método en una subclase.
Sintaxis:
XFCont::DisplayMessage(tcMessage)
Parámetros:
tcMessage
El mensaje para mostrar
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
...
Referencia
metadata.attachments
Propiedades:
PictureDPI
DefaultPictureFormat
Calidad JPEG
Métodos:
Documento de control
attachToPDFDocument ()
Parámetros:
toSession
Instance del objeto XFRX # INIT.
EndPage ()
CreateDocument ()
Valores devueltos
0 ... el archivo se creó correctamente
-1 ... el archivo no pudo haberse creado ()
FinishDocument ()
NewPage()
Parámetros:
tnPageWidth, tnPageHeight
El ancho y el alto de la nueva página.
SetOtherParams ()
Este método se usa para agregar varios parámetros específicos del tipo de salida. El primer parámetro e
valor de cadena que representa el parámetro que se establecerá, el segundo parámetro es los valores qu
establecerán. Ver para SetOtherParams (...)
Sintaxis:
PDFL::SetOtherParams(..)
ShowDocument ()
setVersion ()
setEmbeddingType ()
setPDFA ()
setOutline ()
setSubject ()
setKeywords ()
Establecer palabras clave para el archivo de salida. Ver para setKeywords ().
setCreator ()
Establecer creador para el archivo de salida. Ver para establecer el Creador ().
setProducer ()
setCreationDate ()
Establecer la fecha de creaciones para el archivo de salida. Ver para setCreationDate ().
setComments ()
Establecer comentarios para el archivo de salida. Ver para establecer los comentarios ().
setCategory ()
setManager ()
setCompany ()
Establecer compañía para el archivo de salida. Ver para establecer compañía ().
setAuthor ()
setTitle ()
setPermissions ()
Establezca los permisos de usuario en el documento PDF. Ver para establecer Permissions ().
setPasswords ()
Establecer contraseña para el archivo de salida. Ver para establecer contraseñas ().
DigitalSignature()
Establecer la firma digital para el archivo de salida. Consulte las características específicas de PDF #Señas
digitales en PDF .
Métodos de dibujo
AddBox ()
Parámetros:
X0, Y0
Las coordenadas X, Y de la esquina superior izquierda.
nWidth
El ancho del rectángulo
nAlto
La altura del rectángulo
nSize
El ancho de línea en puntos. 0 representa la línea del cabello. Opcional, valor predeterminado = 1.
tnRellene
el patrón de relleno:
0 ... Sin relleno
1 ... Relleno (color)
2 ... Línea horizontal
3 ... Línea vertical
4 ... Diagonal ascendente
5 ... Diagonal descendente
6 ... Cruz
7 ... Cruz Diagonal
Opcional, valor predeterminado = 0.
tnPenPat
El patrón de línea de borde:
0 ... sin borde
1 ... con puntos
2 ... con puntos
3 ... punto y con puntos
4 ... punto-con-puntos
8 ... línea sólida
Opcional, valor predeterminado = 8.
nOffset
El radio de la curvatura de los bordes del rectángulo. 0 hace que el rectángulo esté en ángulo recto (si
redondeo), 99 crea una elipse. Opcional, valor predeterminado = 0.
tnMode
El modo opaque / transparent (desde XFRX 16.0):
0 ... Opaco
1 ... Transparente
Opcional, valor predeterminado = 0.
tnRotate (desde XFRX 17.3) El ángulo de rotación del texto en grados. La etiqueta se girará en el se
contrario a las agujas del reloj. Opcional, valor predeterminado = 0.
tnRotationPoint (desde XFRX 17.3)
El punto dentro del rectángulo alrededor del cual se rota el texto. Los valores permitidos son 0..8, opc
valor predeterminado = 0 (izquierda, arriba). Por favor, mira la imagen a la derecha para las posiciones
los puntos.
El borde y el color de relleno deben definirse mediante el método SetColor () antes de llamar al
método AddBox () .
Añadir línea()
[, m.lnPattern[, m.tnRotation]])
Parámetros:
X0, Y0
Las coordenadas X, Y del punto de inicio de la línea.
X1, Y1
Las coordenadas X, Y del punto final de la línea.
lnWidth
El ancho de línea en puntos. 0 representa la línea del cabello. Opcional, valor predeterminado = 1.
lPenPattern
El patrón de línea de borde:
0 ... sin borde
1 ... con puntos
2 ... con puntos
3 ... punto y con puntos
4 ... punto-con-puntos
8 ... línea sólida
Opcional, valor predeterminado = 8.
tnRotación Ángulo de rotación. Opcional, valor predeterminado = 0.
El color del borde debe definirse mediante el método SetForeColor () antes de llamar al método Add
() .
AppendLine ()
Parámetros:
tnX, tnY
Las coordenadas X, Y del punto final de la línea.
AppendBezier ()
Parámetros:
tnX, tnY
Las coordenadas X, Y de la esquina superior izquierda del rectángulo delimitador.
tnX1, tnY1
Las coordenadas X, Y del punto final de la línea.
tnX1, tnY1
A puntos de control de Bézier.
[, m.lcLinkName[, m.lcLinkHref<font></font>
Parámetros:
tcPic
El nombre del archivo de imagen
tnLeft, tnTop
Las coordenadas X, Y de la esquina superior izquierda del rectángulo delimitador.
tnWidth
El ancho del rectángulo
tnHigh
La altura del rectángulo
tnAdjType
0 ... imagen de clip
1 ... estira la imagen, conserva la forma
2 ... estira la imagen, llena el cuadro
tnRotate
El ángulo de rotación del texto en grados. La etiqueta se girará en el sentido contrario a las agujas del
reloj. Opcional, valor predeterminado = 0.
tnRotationPoint
El punto dentro del rectángulo alrededor del cual se rota el texto. Los valores permitidos son 0..8, opc
valor predeterminado = 0 (izquierda, arriba). Por favor, mira la imagen a la derecha para las posiciones
los puntos.
lcLinkName
Si se completa este parámetro, el texto será un objetivo designado de un hipervínculo. (ver
el parámetro l cLinkRef ).
lcLinkRef
Si se completa este parámetro, el texto será un hipervínculo. Navegará a un destino con
el nombre l cLinkRef .
lcmyk
.T. o .F. si la imagen de JEG usa CMYK ...
lNeg
.T. o .F. si la imagen usa colores negativos.
tcMask
Color de máscara transparente para ver la imagen transparente .
AddGenPicture ()
Parámetros:
tcField
El nombre general del campo
tnLeft, tnTop
Las coordenadas X, Y de la esquina superior izquierda del rectángulo delimitador.
tnWidth
El ancho del rectángulo
tnHigh
La altura del rectángulo
tnAdjType
0 ... imagen de clip
1 ... estira la imagen, conserva la forma
2 ... estira la imagen, llena el cuadro
tnRotate
El ángulo de rotación del texto en grados. La etiqueta se girará en el sentido contrario a las agujas del
reloj. Opcional, valor predeterminado = 0.
tnRotationPoint
El punto dentro del rectángulo alrededor del cual se rota el texto. Los valores permitidos son 0..8, opc
valor predeterminado = 0 (izquierda, arriba). Por favor, mira la imagen a la derecha para las posiciones
los puntos.
lcLinkName
Si se completa este parámetro, el texto será un objetivo designado de un hipervínculo. (ver
el parámetro l cLinkRef ).
lcLinkRef
Si se completa este parámetro, el texto será un hipervínculo. Navegará a un destino con
el nombre l cLinkRef .
lcmyk
.T. o .F. si la imagen de JEG usa CMYK ...
lNeg
.T. o .F. si la imagen usa colores negativos.
tcMask
Color de máscara transparente para ver la imagen transparente .
nueva línea()
outText ()
Parámetros:
tc
Texto de salida de texto.
tnRotación
El ángulo de rotación del texto en grados. La etiqueta se girará en el sentido contrario a las agujas del
reloj. Valor predeterminado opcional = 0.
lnRotationPoint
Punto dentro del rectángulo alrededor del cual se gira el texto. Los valores permitidos son 0..8, opcio
valor predeterminado = 0 (izquierda, arriba). Por favor, mira la imagen a la derecha para las posiciones
los puntos.
llAddBackColor
Agrega color de fondo debajo del texto.
lcLinkName
Si se completa este parámetro, el texto será un objetivo designado de un hipervínculo. (ver
el parámetro l cLinkRef ).
lcLinkHref
Si se completa este parámetro, el texto será un hipervínculo. Navegará a un destino con
el nombre l cLinkRef .
SetBackColor ()
Parámetros:
tbr, tbg, tbb Componentes
rojos, verdes y azules del color de fondo (opcional)
SetColor ()
Parámetros:
tfr, tfg, tfb Componentes
rojos, verdes y azules del color de primer plano
tbr, tbg, tbb Componentes
rojos, verdes y azules del color de fondo (opcional)
SetFont ()
Establece el nombre y los atributos de la fuente para las siguientes llamadas a DrawText () o DrawText
().
Sintaxis:
PDFL::SetFont(tcFontName, tnSize[, tlBold[, tlItalic[, tlUnderline
Parámetros:
tcFontName
El nombre de la fuente
tnSize
El tamaño de fuente en puntos
tlBold, tlItalics, tlUnderline
Los atributos de la fuente. Estos parámetros son opcionales, el valor predeterminado es .F.
tnEmbed Insertar
fuente
0 - la fuente no se incrustará.
1 - la fuente se incluirá como subconjunto
2 - la fuente se incluirá como todos los caracteres
3 - la fuente se incluirá como subíndice UNICODE en la página Código de página de códigos.
SetForeColor ()
Parámetros:
tfr, tfg, tfb Componentes
rojos, verdes y azules del color de primer plano
SetPos ()
Establece la posición donde el texto será dibujado por la llamada al método DrawText () posterior .
Sintaxis:
PDFL::SetPos(tnXPos, tnYPos)
Parámetros:
tnXPos, tnYPos
Las coordenadas X e Y (horizontal y vertical) de la posición. La unidad de coordenadas se define me
el método SetUnit () , la unidad predeterminada es Point (pt).
Propiedades:
PictureDPI
DefaultPictureFormat
Calidad JPEG
Métodos:
Documento de control
attachToPDFDocument ()
EndPage ()
CreateDocument ()
FinishDocument ()
NewPage()
SetOtherParams ()
ShowDocument ()
Propiedades del documento
setVersion ()
setEmbeddingType ()
setPDFA ()
setOutline ()
setSubject ()
setKeywords ()
setCreator ()
setProducer ()
setCreationDate ()
setComments ()
setCategory ()
setManager ()
setCompany ()
setAuthor ()
setTitle ()
setPermissions ()
setPasswords ()
DigitalSignature()
Métodos de dibujo
AddBox ()
Añadir línea()
AppendLine ()
AppendBezier ()
Añade una foto()
AddGenPicture ()
nueva línea()
outText ()
SetBackColor ()
SetColor ()
SetFont ()
SetForeColor ()
SetPos ()
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
...
Referencia
metadata.attachments
Clase eqZip
martinajindrova
Modificado por última vez may 10, 2017
Parámetros:
m.tcZipName
El archivo de archivo ZIP.
m.tnAppen
Un indicador de agregar.
Valores devueltos
.T. - Archivar crear / abrir con éxito.
.F. - Archivo no crear / abrir con éxito.
CloseArchive ()
Parámetros:
m.tcComment
Comentario de archivo ZIP.
OpenNewFile ()
Parámetros:
m.tcFileName
Nombre de archivo en archivo ZIP.
m.ttCreated
Fecha y hora creada.
m.llIWontUTF8
Un deseo usa UTF-8 para codificar el nombre del archivo.
Para la codificación UTF-8 o la contraseña es needy zlib.dll versión 1.25 o superior .
m.lcPassword
Contraseña de archivo
m.liCRC32
Archivo de suma de comprobación CRC32. es obligatorio para m.lcPassword . Checksum es para todos los dato
Valores devueltos
0 - Archivo anexado al archivo ZIP.
-102 - ZIP_PARAMERROR
-103 - ZIP_BADZIPFILE
-104 - ZIP_INTERNALERROR
AppendFile ()
Parámetros:
m.tcFileName
El nombre del archivo de origen.
m.tcNameInArchive
Nombre de archivo en archivo ZIP.
m.llIWontUTF8
Un deseo usa UTF-8 para codificar el nombre del archivo.
Para la codificación UTF-8 o la contraseña es needy zlib.dll versión 1.25 o superior .
m.lcPassword
Contraseña de archivo
Valores
devueltos -1 - El archivo fuente no existe
-2 - El archivo fuente no puede abrir
0 - Archivo anexar al archivo ZIP
-102 - ZIP_PARAMERROR
-103 - ZIP_BADZIPFILE
-104 - ZIP_INTERNALERROR
WriteData ()
Parámetros:
m.tcData
Datos que se escribirán en el identificador del archivo.
Valores de retorno
-102 - ZIP_PARAMERROR
-103 - ZIP_BADZIPFILE
-104 - ZIP_INTERNALERROR
Cerrar el archivo()
SYS2007 ()
Parámetros:
m.lcData
Datos que calculan la suma de comprobación CRC32.
Archivo abierto()
CloseArchive ()
OpenNewFile ()
AppendFile ()
WriteData ()
Cerrar el archivo()
SYS2007 ()
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
...
/
Referencia
metadata.attachments
martinajindrova
Propiedades:
lReadObjectData
cCursorName
Métodos:
openDocument ()
Parámetros:
m.tcFile
El archivo PDF.
Valores devueltos
.T. - Archivo PDF abierto con éxito.
.F. - El archivo PDF no se abre con éxito.
ReadDocument ()
Valores devueltos
0 - OK
-10 - El documento existente está dañado o en un formato
no compatible
-17 - PDFpassword no es válido.
CloseDocument ()
SetPasswords ()
Parámetros:
m.tcOwner
La contraseña del propietario
m.tcUser
La contraseña del usuario.
Ejemplo
m.pdfReader = EVALUATE([xfrx("PDF#READER")])<font></font>
m.pdfReader.lReadObjectData=.T.<font></font>
<font></font>
lcfile="BASE-UNI.pdf"<font></font>
RETURN<font></font>
ENDIF<font></font>
m.pdfReader.ReadDocument()<font></font>
SELE (m.pdfreader.cCursorName)<font></font>
BROWSE NORMAL<font></font>
m.pdfReader.closeDocument()
Propiedades:
lReadObjectData
cCursorName
Métodos:
openDocument ()
ReadDocument ()
CloseDocument ()
SetPasswords ()
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
...
Referencia
metadata.attachments
martinajindrova
Propiedades:
PageCount
Métodos:
AddPage ()
O
XFRXDraw::AddPage(tnPageWidth, tnPageHeight)
Parámetros:
tcPageSize
El tamaño de página de la página nueva. Valores disponibles: "A4", "carta"
tnPageWidth, tnPageHeight
El ancho y el alto de la nueva página. La unidad se puede definir mediante
el método SetUnit (). La unidad por defecto apunta (1/72 en).
Si no se especifica el tamaño de página, se utiliza el tamaño de página actual.
CreateDocument ()
Valores devueltos
.T. ... el archivo se creó con éxito
.F. ... archivo no pudo haber sido creado ()
Parámetros:
tnXPos, tnYPos
Las coordenadas X, Y del punto de inicio de la línea.
tnXToPos, tnYPPos
Las coordenadas X, Y del punto final de la línea.
tnLineWidth
El ancho de línea en puntos. 0 representa la línea del cabello. Opcional, valor
predeterminado = 1.
tnPenPattern
El patrón de línea del borde:
0 ... sin borde
1 ... con puntos
2 ... con puntos
3 ... con puntos y rayas
4 ... punto con punto y coma
8 ... línea sólida
Opcional, valor predeterminado = 8.
Dibujar la imagen()
tcFilename[, tnAdjType<font></font>
[, llCentralHorizontaly[, tnRotate[,<font></font>
Parámetros:
tnXPos, tnYPos
Las coordenadas X, Y de la esquina superior izquierda del rectángulo delimitador.
tnWidth
El ancho del rectángulo
tnHigh
La altura del rectángulo
tcFileName
El nombre del archivo de imagen
tnAdjType
0 ... imagen de clip
1 ... estira la imagen, conserva la forma
2 ... estira la imagen, llena el cuadro
llCentralHorizontaly
Center horizontaly en el marco (desde XFRX 15.7).
tnRotate
El ángulo de rotación del texto en grados. La etiqueta se girará en el sentido contrario a las
agujas del reloj. Valor predeterminado opcional = 0 (desde XFRX 15.7).
tnRotationPoint
El punto dentro del rectángulo alrededor del cual se rota el texto. Los valores permitidos son
0..8, opcional, valor predeterminado = 0 (izquierda, arriba). Consulte la imagen de la derecha
para las posiciones de los puntos (desde XFRX 15.7).
tcLinkName
Si se completa este parámetro, el texto será un objetivo designado de un
hipervínculo. ( Consulte el parámetro tcLinkRef ) (desde XFRX 15.7).
tcLinkRef
Si se completa este parámetro, el texto será un hipervínculo. Navegará a un destino con
el nombre tcLinkRef (desde XFRX 15.7).
DrawGeneralField ()
Dibuja una imagen en la página actual en un rectángulo delimitador dado. (desde XFRX 16.1)
Sintaxis:
XFRXDraw::DrawGeneralField(tnXPos, tnYPos, tnWidth, <font></font>
[, llCentralHorizontaly[, tnRotate<font></font>
[, tnRotationPoint[, tcLinkName<font></font>
[, tcLinkRef]]]]]])
Parámetros:
tnXPos, tnYPos
Las coordenadas X, Y de la esquina superior izquierda del rectángulo delimitador.
tnWidth
El ancho del rectángulo
tnHigh
La altura del rectángulo
tcFieldName
El nombre general del campo
tnAdjType
0 ... clip Imagen
1 ... estira la imagen, conserva la forma
2 ... estira la imagen, llena el cuadro
llCentralHorizontaly
Center horizontaly en el marco.
tnRotate
El ángulo de rotación del texto en grados. La etiqueta se girará en el sentido contrario a las
agujas del reloj. Opcional, valor predeterminado = 0.
tnRotationPoint
El punto dentro del rectángulo alrededor del cual se rota el texto. Los valores permitidos son
0..8, opcional, valor predeterminado = 0 (izquierda, arriba). Por favor, mira la imagen a la
derecha para las posiciones de los puntos.
tcLinkName
Si se completa este parámetro, el texto será un objetivo designado de un
hipervínculo. (ver parámetro tcLinkRef ).
tcLinkRef
Si se completa este parámetro, el texto será un hipervínculo. Navegará a un destino con
el nombre tcLinkRef .
DrawRectangle ()
tnHeight [, tnLineWidth<font></font>
[, tnFillPattern<font></font>
[, tnPenPattern[, tnRoundFactor<font></font>
Parámetros:
tnXPos, tnYPos
Las coordenadas X, Y de la esquina superior izquierda.
tnWidth
El ancho del rectángulo
tnHigh
La altura del rectángulo
tnLineWidth
El ancho de línea en puntos. 0 representa la línea del cabello. Opcional, valor
predeterminado = 1.
tnFillPattern
El patrón de relleno:
0 ... Sin relleno
1 ... Relleno (color)
2 ... Línea horizontal
3 ... Línea vertical
4 ... Diagonal ascendente
5 ... Diagonal descendente
6 ... Cruz
7 ... Cruz Diagonal
Opcional, valor predeterminado = 0.
tnPenPattern
El patrón de línea del borde:
0 ... sin borde
1 ... con puntos
2 ... con puntos
3 ... con puntos y rayas
4 ... punto con punto y coma
8 ... línea sólida
Opcional, valor predeterminado = 8.
tnRoundFactor
El radio de la curvatura de los bordes del rectángulo. 0 hace que el rectángulo esté en ángulo
recto (sin redondeo), 99 crea una elipse. Opcional, valor predeterminado = 0.
tnMode
El modo opaque / transparent (desde XFRX 16.0):
0 ... Opaco
1 ... Transparente
Opcional, valor predeterminado = 0.
tnRotate (desde XFRX 17.3) El ángulo de rotación del texto en grados. La etiqueta se girará
en el sentido contrario a las agujas del reloj. Opcional, valor predeterminado = 0.
tnRotationPoint (desde XFRX 17.3)
El punto dentro del rectángulo alrededor del cual se rota el texto. Los valores permitidos son
0..8, opcional, valor predeterminado = 0 (izquierda, arriba). Por favor, mira la imagen a la
derecha para las posiciones de los puntos.
El borde y el color de relleno deben definirse mediante el método SetColor () antes de llamar
al método DrawRectangle () .
DrawText ()
[, tnRotate[, tcLinkName[,<font></font>
tcLinkRef[, tcBookmark<font></font>
O
XFRXDraw::DrawText(tcText[, tnRotate[, <font></font>
tnmode[, liCP]]]]]]])
Parámetros:
tnLeft, tnTop
Las coordenadas donde se dibujará el texto. Si se usa la segunda sintaxis (sin las
coordenadas), el texto se dibujará en la posición actual: que es una posición definida por
el método SetPos () o un final de una salida si la llamada anterior al método DrawText () .
tcText
El texto a dibujar
tnRotate
El ángulo de rotación del texto en grados. La etiqueta se girará en el sentido contrario a las
agujas del reloj. Opcional, valor predeterminado = 0.
tcLinkName
Si se completa este parámetro, el texto será un objetivo designado de un
hipervínculo. (ver parámetro tcLinkRef ).
tcLinkRef
Si se completa este parámetro, el texto será un hipervínculo. Navegará a un destino en el
documento local con el nombre tcLinkRef . Para navegar a una URL http, incluya "http: //" al
comienzo del parámetro.
tcBookmark
No está vacío, el parámetro contiene el nombre de un marcador que se creará y navegará
hasta este texto.
tcTooltip
La información sobre herramientas que se muestra al pasar el mouse sobre este texto.
tnMode Modo
opaco / transparente (desde XFRX 15.7).
0 ... "opaco
1 ..." transparente "
DrawTextBox ()
[, tnRotate[,tnRotationPoint[,<font></font>
El punto dentro del rectángulo alrededor del cual se rota el texto. Los valores permitidos son
0..8, opcional, valor predeterminado = 0 (izquierda, arriba). Por favor, mira la imagen a la
derecha para las posiciones de los puntos.
tcLinkName
Si se completa este parámetro, el texto será un objetivo designado de un
hipervínculo. (ver parámetro tcLinkRef ).
tcLinkRef
Si se completa este parámetro, el texto será un hipervínculo. Navegará a un destino con
el nombre tcLinkRef .
tcBookmark
No está vacío, el parámetro contiene el nombre de un marcador que se creará y navegará
hasta este texto.
tcTooltip
La información sobre herramientas que se muestra al pasar el mouse sobre este texto.
modo tnMode
Opaque / transparent (desde XFRX 15.4).
0 ... "opaco
1 ..." transparente "
GetBoundingRectangle ()
Valor de retorno:
NULL : el rectángulo delimitador no está disponible
GetPageWidth ()
GetPageHeight ()
GetXPos ()
OpenDocument ()
Valores devueltos
.T. ... el archivo se abrió con éxito
.F. ... el archivo no se pudo haber abierto (el archivo no existe o está bloqueado)
SetColor ()
Parámetros:
tfr, tfg, tfb Componentes
rojos, verdes y azules del color de primer plano
tbr, tbg, tbb Componentes
rojos, verdes y azules del color de fondo (opcional)
SetFont ()
Establece el nombre y los atributos de la fuente para las siguientes llamadas a DrawText () o
DrawTextBox ().
Sintaxis:
XFRXDraw::SetFont(tcFontName, tnSize[, tlBold[, <font></font>
tlStrikeThrough]]]])
Parámetros:
tcFontName
El nombre de la fuente
tnSize
El tamaño de fuente en puntos
tlBold, tlItalics, tlUnderline, tlStrikeThrough
Los atributos de la fuente. Estos parámetros son opcionales, el valor predeterminado es
.F. El parámetro tlStrikeThrough es desde XFRX 15.7
SetPos ()
Establece la posición donde el texto será dibujado por la llamada al método DrawText
()posterior .
Sintaxis:
XFRXDraw::SetPos(tnXPos, tnYPos)
Parámetros:
tnXPos, tnYPos
Las coordenadas X e Y (horizontal y vertical) de la posición. La unidad de coordenadas se
define mediante el método SetUnit () , la unidad predeterminada es Point (pt).
SetUnit ()
Parámetros:
tcUnit
El código de unidad. Los valores permitidos son: "in" - pulgadas, "cm" - centímetros, "pt" -
puntos y "px" - píxeles.
Propiedades:
PageCount
Métodos:
AddPage ()
CreateDocument ()
Dibujar linea()
Dibujar la imagen()
DrawGeneralField ()
DrawRectangle ()
DrawText ()
DrawTextBox ()
GetBoundingRectangle ()
GetPageWidth ()
GetPageHeight ()
GetXPos ()
GetYPos ()
OpenDocument ()
SetColor ()
SetFont ()
SetPos ()
SetUnit ()
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
Páginas
/
Guía del desarrollador
martinajindrova
Modificado por última vez mar 01, 2018
hndlib.dll
- nueva función
zipFile ()
- nuevos parámetros en
dobmp ()
nueva función
en _xfBmp2 ()
- nueva función
agregada
_xfAddProperty
()
- changed
_xfSaveImage ()
11.2 111 98
11.1 111 98
11.0 102 98
10.2 102 98
10.1 _ 98
10.0 _ 98
9.8 _ 98
9.7 _ 96
9.6 _ 96
9.5 _ 95
9.0 _ 95
8.3 _ 81
dll / fllcomplist
Notificaciones de banderas
Documentación XFRX
/
Páginas
/
Guía del desarrollador
martinajindrova
Modificado por última vez feb 14, 2018
WIN32API
kernel32.dll
zlib.dll
gdi32.dll
OLE32.DLL
psapi
WIN32API
shell32.Dll
ADVAPI32.DLL
winspool.drv
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
Páginas
/
Guía del desarrollador
Licencia XFRX
El software y la información provista por Eqeus.com se proporcionan "tal cual", sin garantía
alguna. Usted utiliza el software bajo su propio riesgo. Eqeus.com renuncia a todas las
garantías y condiciones, ya sean expresas o implícitas, incluidas, entre otras, las garantías de
comerciabilidad e idoneidad para un fin determinado. En ningún caso Eqeus.com será
responsable de ningún daño, incluidos, entre otros, daños directos, indirectos, especiales,
incidentales o consecuentes de ningún tipo, incluso si Eqeus.com ha sido advertido de la
posibilidad de dichos daños. Usted acepta no obtener o usar el software en ningún estado
o país que no permita la exclusión o limitación de responsabilidad por daños incidentales o
consecuentes.
2. XFRX y PDF Library o cualquier parte del mismo NO debe distribuirse como herramienta
de software o como parte de una herramienta de software proporcionada a desarrolladores
de aplicaciones para ser incorporada en sus productos, incluidos, entre otros, marcos de
software y herramientas de generación de informes.
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
Páginas
/
Guía del desarrollador
Tao de XFRX
martinajindrova
Modificado por última vez jul 25, 2015
Cómo exportar datos a XLSX con filas máximas - 65535 para MS Excel 2003
Cómo establecer un nombre de hoja personalizado para XLS, XLSPLAIN, ODS, FODS,
PFODS, NATIVE_FDOCX y NATIVE_PFDOCX
Cómo configurar el área de impresión, ajustar al ancho en la configuración de página y el
índice de tamaño de papel para NATIVE_FXLSX y NATIVE_PFXLSX
Cómo exportar texto como imagen a PDF o cambia otro atributo de fuente
Cómo agregar estilo personalizado en el documento MS Word 2007
XFRX # INIT e imágenes / documentos en el campo General
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
...
/
Tao de XFRX
martinajindrova
Modificado por última vez ago 15, 2015
Los parámetros del método CopyToXLSX () son los mismos en Exportación de datos a XLSX
y ODS .
SET PROCEDURE TO xfrx.fxp<font></font>
m.loXLSX=CREATEOBJECT("_TOXLSX")<font></font>
m.loXLSX.nMaxRow=65535 && 1048576, 65535<font></font>
liErr=m.loXLSX.CopyToXLSX(m.lcAlias, m.lcFile, m.lcFCCallBack, m.lcSheetName, ;<font></fo
m.llAddHeader, m.llShowGrid, m.loProgress, m.lcSheetExpressionG
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
...
/
Tao de XFRX
martinajindrova
&& if each report has only one page, you can suppress page number in sheet name <font></
loSession.setOtherParams("NEXT_SHEET_NAME","First Report")<font></font>
loSession.ProcessReport(lcPath+"_reports\basetext") <font></font>
loSession.ProcessReport(lcPath+"_reports\baseshapes")...
loXFF.OpenDocument("out.xff")<font></font>
loSession=EVALUATE([xfrx("XFRX#INIT")]) <font></font>
loSession.TransformReport(loXFF)<font></font>
XFRX # LISTENER
loSession=EVALUATE([XFRX("XFRX#LISTENER")])<font></font>
lnRetVal = loSession.SetParams("temp.xls",,,,,,"XLS")<font></font>
IF lnRetVal = 0<font></font>
loSession.setOtherParams("ADDPAGENUMBERTOSHEETDISPLAYNAME",.F.)<font></font>
loHACK=CREATEOBJECT("_XFRXHACK",loSession)<font></font>
RELE loHACK<font></font>
ENDIF
Clase HACK
DEFINE CLASS _XFRXHACK AS CUSTOM<font></font>
oEWriter=.NULL.<font></font>
oEDoc=.NULL.<font></font>
nPageno=0<font></font>
nReportno=0<font></font>
cTarget=""<font></font>
nVersion=0<font></font>
lXLS=.F.<font></font>
<font></font>
PROCEDURE GetReportName(m.tnReportNo)<font></font>
RETURN IIF(This.nReportNo=1,"First Report",IIF(This.nReportNo=2,"Second Report",;<f
ENDPROC<font></font>
<font></font>
ROCEDURE Init(m.loSession)<font></font>
m.loSession=IIF(TYPE("m.loSession.oxfSession")="O",m.loSession.oxfSession,m.loSessi
This.nVersion=VAL(CHRTRAN(m.loSession.GetVersion(),;<font></font>
CHRTRAN(m.loSession.GetVersion(),"0123456789",""),""))<font></fon
This.cTarget=m.loSession.cTarget<font></font>
This.lXLS=This.cTarget=="XLS" OR This.cTarget=="XLSPLAIN"<font></font>
=BINDEVENT(m.loSession.oDocumentWriter,"NewPage",This,"NewPage",0)<font></font>
=BINDEVENT(m.loSession.oDocumentWriter,"NewReport",;<font></font>
This,"NewReport",;<font></font>
IIF(This.cTarget=="XLS" OR This.cTarget=="XLSPLAIN",0,1))<font></font>
This.oEWriter=m.loSession.oDocumentWriter<font></font>
This.oEDoc=m.loSession.oDocument<font></font>
ENDPROC<font></font>
<font></font>
This.nPageno=0<font></font>
This.nReportno=m.tnReportNo<font></font>
IF This.lXLS<font></font>
This.oEWriter.cNextSheetName=This.GetReportName(This.nReportNo)<font></font>
ELSE<font></font>
This.oEDoc.cNextSheetName=This.GetReportName(This.nReportNo)<font></font>
IF This.nVersion<1560000<font></font>
IF TYPE("This.oEWriter.oOXML")="O"<font></font>
This.oEWriter.oOXML.lAddPageNumberToSheetDisplyName=.F.<font></font>
ELSE<font></font>
IF TYPE("This.oEWriter.oOO")="O"<font></font>
This.oEWriter.oOO.lAddPageNumberToSheetDisplyName=.F.<font></font>
ENDIF<font></font>
ENDIF<font></font>
ENDIF<font></font>
ENDIF<font></font>
ENDPROC<font></font>
<font></font>
This.nPageno=This.nPageno+1<font></font>
IF This.lXLS<font></font>
This.oEWriter.cNextSheetName=This.GetReportName(This.nReportNo)+ ;<font></font>
IIF(This.nPageno=1,""," "+LTRIM(STR(This.nPageno))
ELSE<font></font>
This.oEDoc.cNextSheetName=This.GetReportName(This.nReportNo)+ ;<font></font>
IIF(This.nPageno=1,""," "+LTRIM(STR(This.nPageno)))<
ENDIF<font></font>
ENDPROC<font></font>
ENDDEFINE<font></font>
Usar NEXT_SHEET_NAME_EXPR
Soporte completo para XLS / XLSPLAIN y XFRX # INIT + TranformReport () o XFRX #
LISTENER desde XFRX 15.6
loSession=EVALUATE([XFRX("XFRX#LISTENER")])<font></font>
IF lnRetVal = 0 <font></font>
loSession.setOtherParams("NEXT_SHEET_NAME_EXPR","_HACKSHEETNAME(this)")<font></font>
REPORT FORM (lcPath+"_reports\firstreport") NOPAGEEJECT object loSession <font></font>
<font></font>
ENDIF<font></font>
<font></font>
PROCEDURE _HACKSHEETNAME(m.loReport)<font></font>
IIF(m.loReport.tnReportNumber=2,"Second Report",;<font></font>
IIF(m.loReport.nCurrentReportPageNo=1,""," "+;<font></font>
LTRIM(STR(m.loReport.nCurrentReportPageNo)))<font></font>
ENDPROC
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
...
Tao de XFRX
Cómo configurar el área de impresión, ajustar
al ancho en la configuración de página y el
índice de tamaño de papel para
NATIVE_FXLSX y NATIVE_PFXLSX
martinajindrova
m.lnRetVal = m.loSession.SetParams("test.xlsx",,,,,,"NATIVE_FXLSX")<font></font>
IF m.lnRetVal=0<font></font>
m.loHACK=CREATEOBJECT("_XFRXHACK",m.loSession)<font></font>
m.loSession.ProcessReport("_reports\basetext")<font></font>
m.loSession.Finalize()<font></font>
RELE m.loHACK<font></font>
END IF
m.loXFF.OpenDocument("out.xff")<font></font>
m.loSession=EVALUATE([xfrx("XFRX#INIT")]) <font></font>
m.lnRetVal = m.loSession.SetParams("test.xlsx",,,,,,"NATIVE_FXLSX")<font></font>
IF m.lnRetVal=0<font></font>
m.loHACK=CREATEOBJECT("_XFRXHACK",m.loSession)<font></font>
m.loSession.TransformReport(m.loXFF)<font></font>
RELE m.loHACK<font></font>
END IF
XFRX # LISTENER
m.loSession=EVALUATE([xfrx("XFRX#LISTENER")]) <font></font>
IF m.lnRetVal=0<font></font>
m.loHACK=CREATEOBJECT("_XFRXHACK",m.loSession)<font></font>
END IF
Clase HACK
DEFINE CLASS _XFRXHACK AS CUSTOM<font></font>
oEWriter=.NULL.<font></font>
cTarget=""<font></font>
nVersion=0<font></font>
DIMENSION aps(256,3)<font></font>
PROCEDURE Init(m.loSession)<font></font>
m.loSession=IIF(TYPE("m.loSession.oxfSession")="O",m.loSession.oxfSession,m.loSessi
This.nVersion=VAL(CHRTRAN(m.loSession.GetVersion();<font></font>
,CHRTRAN(m.loSession.GetVersion(),"0123456789",""),""))<font></fon
This.cTarget=m.loSession.cTarget<font></font>
DO CASE<font></font>
=BINDEVENT(m.loSession.oDocumentWriter,"RenderPage",This,"RenderPageAfter",
ENDCASE<font></font>
This.oEWriter=m.loSession.oDocumentWriter<font></font>
This.InitPaperSize() <font></font>
ENDPROC<font></font>
<font></font>
LOCAL m.liSele<font></font>
m.liSele=SELECT()<font></font>
WITH This.oEWriter.oOXML<font></font>
GO TOP<font></font>
IF NOT EOF()<font></font>
'<sheetPr><pageSetUpPr fitToPage="1"/></sheetPr>'+CHR(13)+CHR(10)+;<font></f
[<dimension ref="A1:]+.CIToC(.nColNo)+LTRIM(STR(.nRowNo,11))+["/>])<font></f
ENDIF<font></font>
<font></font>
[">']+StrTranHTMLStringOO(STRTRAN(.cPageDisplayName,"'","''"))+;<font></fon
['!$A$1:$]+.CIToC(.nColNo)+[$]+LTRIM(STR(.nRowNo,11))+[ </definedName>]<fon
ENDWITH<font></font>
<font></font>
SELECT (m.liSele)<font></font>
ENDPROC<font></font>
<font></font>
m.liSele=SELECT()<font></font>
m.loEWriter=This.oEWriter<font></font>
WITH m.loEWriter.oOXML<font></font>
SELECT (loEWriter.rpivotsalias)<font></font>
GO BOTTOM<font></font>
m.lnYY=YY<font></font>
GO TOP<font></font>
IF NOT EOF()<font></font>
[fitToHeight="]+LTRIM(STR(MAX(INT(m.lnYY/(m.loEWriter.nPageHeight-m.loEWr
ENDIF<font></font>
ENDWITH<font></font>
SELECT (m.liSele)<font></font>
ENDPROC<font></font>
<font></font>
EXIT<font></font>
ENDIF<font></font>
NEXT<font></font>
RETURN m.lnPaperSize<font></font>
ENDPROC<font></font>
<font></font>
PROCEDURE InitPaperSize()<font></font>
STORE 0 TO This.aps<font></font>
This.aps(1,2) = 85000<font></font>
This.aps(1,3) = 110000<font></font>
This.aps(2,2) = 85000<font></font>
This.aps(2,3) = 110000<font></font>
This.aps(3,2) = 110000<font></font>
This.aps(3,3) = 170000<font></font>
This.aps(4,2) = 170000<font></font>
This.aps(4,3) = 110000<font></font>
This.aps(5,2) = 85000<font></font>
This.aps(6,2) = 55000<font></font>
This.aps(6,3) = 85000<font></font>
This.aps(7,2) = 72500<font></font>
This.aps(7,3) = 10500<font></font>
This.aps(8,2) = 116929<font></font>
This.aps(8,3) = 165354<font></font>
This.aps(9,2) = 82677<font></font>
This.aps(9,3) = 116929<font></font>
This.aps(10,2) = 82677<font></font>
This.aps(10,3) = 116929<font></font>
This.aps(11,2) = 58268<font></font>
This.aps(11,3) = 82677<font></font>
This.aps(12,2) = 98425<font></font>
This.aps(12,3) = 139370<font></font>
This.aps(13,2) = 71654<font></font>
This.aps(13,3) = 101181<font></font>
This.aps(14,2) = 85000<font></font>
This.aps(14,3) = 130000<font></font>
This.aps(15,2) = 84646<font></font>
This.aps(15,3) = 108268<font></font>
This.aps(16,2) = 100000<font></font>
This.aps(16,3) = 140000<font></font>
This.aps(17,2) = 110000<font></font>
This.aps(17,3) = 170000<font></font>
This.aps(18,2) = 85000<font></font>
This.aps(18,3) = 110000<font></font>
This.aps(19,2) = 38750<font></font>
This.aps(19,3) = 88750<font></font>
This.aps(20,2) = 41250<font></font>
This.aps(20,3) = 85000<font></font>
This.aps(21,2) = 45000<font></font>
This.aps(21,3) = 103750<font></font>
This.aps(22,2) = 45000<font></font>
This.aps(22,3) = 110000<font></font>
This.aps(23,2) = 50000<font></font>
This.aps(23,3) = 115000<font></font>
This.aps(24,2) = 45000<font></font>
This.aps(24,3) = 103750<font></font>
This.aps(25,2) = 47500<font></font>
This.aps(25,3) = 110000<font></font>
This.aps(26,2) = 50000<font></font>
This.aps(26,3) = 115000<font></font>
This.aps(27,2) = 43307<font></font>
This.aps(27,3) = 86614<font></font>
This.aps(28,2) = 63779<font></font>
This.aps(28,3) = 90157<font></font>
This.aps(29,2) = 127559<font></font>
This.aps(29,3) = 180315<font></font>
This.aps(30,2) = 90157<font></font>
This.aps(30,3) = 127559<font></font>
This.aps(31,2) = 44881<font></font>
This.aps(31,3) = 63779<font></font>
This.aps(32,2) = 44881<font></font>
This.aps(32,3) = 90157<font></font>
This.aps(33,2) = 98425<font></font>
This.aps(33,3) = 138976<font></font>
This.aps(34,2) = 69291<font></font>
This.aps(34,3) = 98425<font></font>
This.aps(35,2) = 69291<font></font>
This.aps(35,3) = 49212<font></font>
This.aps(36,2) = 43307<font></font>
This.aps(36,3) = 90551<font></font>
This.aps(37,2) = 38750<font></font>
This.aps(37,3) = 75000<font></font>
This.aps(38,2) = 36250<font></font>
This.aps(38,3) = 65000<font></font>
This.aps(39,2) = 148750<font></font>
This.aps(39,3) = 110000<font></font>
This.aps(40,2) = 85000<font></font>
This.aps(40,3) = 120000<font></font>
This.aps(41,2) = 85000<font></font>
This.aps(41,3) = 130000<font></font>
<font></font>
ENDPROC<font></font>
ENDDEFINE
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
...
/
Tao de XFRX
martinajindrova
Modificado por última vez sep 18, 2015
XFRX puede exportar texto como imagen si la fuente no existe, para XFRX 15.6. Pero
puedes cambiar un indicador para una fuente específica.
m.loSession=EVALUATE([xfrx("XFRX#INIT")]) <font></font>
m.lnRetVal = m.loSession.SetParams("test.pdf",,,,,,"PDF") <font></font>
IF m.lnRetVal=0 <font></font>
m.loHACK=CREATEOBJECT("_XFRXHACK",m.loSession) <font></font>
m.loSession.ProcessReport("_reports\basetext") <font></font>
m.loSession.Finalize() <font></font>
RELE m.loHACK <font></font>
END IF<font></font>
<font></font>
DEFINE CLASS _XFRXHACK AS CUSTOM<font></font>
oEDoc=.NULL.<font></font>
cTarget=""<font></font>
nVersion=0<font></font>
<font></font>
PROCEDURE Init(m.loSession)<font></font>
m.loSession=IIF(TYPE("m.loSession.oxfSession")="O",m.loSession.oxfSession,m.loSessi
This.nVersion=VAL(CHRTRAN(m.loSession.GetVersion(),CHRTRAN(m.loSession.GetVersion()
This.cTarget=m.loSession.cTarget<font></font>
IF This.cTarget=="PDF" <font></font>
IF This.nVersion<1570000<font></font>
=BINDEVENT(m.loSession.oDocument,"addFont",This,"addFont156",1)<font></font>
ELSE<font></font>
=BINDEVENT(m.loSession.oDocument,"addFont",This,"addFont",1)<font></font>
ENDIF<font></font>
This.oEDoc=m.loSession.oDocument<font></font>
ENDIF<font></font>
ENDPROC<font></font>
<font></font>
PROCEDURE addFont156(m.tcFontName, m.llBold, m.llItal, m.lnEmbed, m.lnSymbol, m.lnCode
WITH This.oEDoc <font></font>
IF .aFonts(.nFont,7) AND ATC("+MDD-ISO-15223-1",.aFonts(.nFont,1))>0 && font is sym
.aFonts(.nFont,11)=.F. && .F. - Font not exist, .T. - Font exist<font></font>
*.aFonts(.nFont,9)=1252 && Code page from 42 to 1252<font></font>
ELSE<font></font>
.aFonts(.nFont,10)=.F. && .F. - Do not covert to UNICODE, .T. - Convert to UNICO
ENDIF<font></font>
ENDWITH<font></font>
ENDPROC<font></font>
<font></font>
PROCEDURE addFont(m.tcFontName, m.llBold, m.llItal, m.lnEmbed, m.lnCodePage)<font></fo
WITH This.oEDoc <font></font>
IF .aFonts(.nFont,7) AND ATC("+MDD-ISO-15223-1",.aFonts(.nFont,1))>0 && font is sym
.aFonts(.nFont,11)=.F. && .F. - Font not exist, .T. - Font exist<font></font>
*.aFonts(.nFont,9)=1252 && Code page from 42 to 1252<font></font>
ELSE<font></font>
.aFonts(.nFont,10)=.F. && .F. - Do not covert to UNICODE, .T. - Convert to UNICO
ENDIF<font></font>
ENDWITH<font></font>
ENDPROC<font></font>
<font></font>
<font></font>
ENDDEFINE<font></font>
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
...
Tao de XFRX
martinajindrova
Para VFP 8/9
Para VFP 5/6/7
m.lnRetVal = m.loSession.SetParams("test.docx",,,,,,"NATIVE_FDOCX")<font></font>
IF m.lnRetVal=0 <font></font>
m.loHACK=CREATEOBJECT("_XFRXHACK",m.loSession)<font></font>
m.loSession.ProcessReport("_reports\basetext")<font></font>
m.loSession.Finalize()<font></font>
RELE m.loHACK<font></font>
END IF <font></font>
<font></font>
oEWriter=.NULL.<font></font>
cTarget=""<font></font>
nVersion=0<font></font>
<font></font>
PROCEDURE Init(m.loSession)<font></font>
m.loSession=IIF(TYPE("m.loSession.oxfSession")="O",m.loSession.oxfSession,m.loSessi
This.nVersion=VAL(CHRTRAN(m.loSession.GetVersion();<font></font>
,CHRTRAN(m.loSession.GetVersion(),"0123456789",""),""))<font></fon
This.cTarget=m.loSession.cTarget<font></font>
DO CASE<font></font>
=BINDEVENT(m.loSession.oDocumentWriter,"Finalize",This,"Finalize",0)<font><
ENDCASE<font></font>
This.oEWriter=m.loSession.oDocumentWriter<font></font>
ENDPROC<font></font>
<font></font>
<font></font>
m.liSele=SELECT()<font></font>
m.loEWriter=This.oEWriter<font></font>
WITH m.loEWriter.oOXML<font></font>
<font></font>
.addParagraphStyle("Normal","YourStyle",.ToTWIP(100),"0","","",.F.)<font></font>
<font></font>
SELECT (.Alias)<font></font>
<font></font>
m.lcPom=;<font></font>
[ <w:rPr>]+CHR(13)+CHR(10)+;<font></font>
[ <w:lang w:eastAsia="en-US"/>]+CHR(13)+CHR(10)+;<font></font>
[ </w:rPr>]+CHR(13)+CHR(10)<font></font>
<font></font>
<font></font>
m.lihFile=.GetFileHandle("word\styles.xml")<font></font>
m.lcPom=""<font></font>
=FSEEK(m.lihFile,0)<font></font>
m.lcPom=m.lcPom+FREAD(m.lihFile,65000)<font></font>
ENDDO<font></font>
<font></font>
** Font name<font></font>
m.liStart=ATC("<w:rFonts",m.lcPom)+10<font></font>
m.lcPom2=SUBSTR(m.lcPom,m.liStart)<font></font>
m.liEnd=m.liStart+ATC("/>",m.lcPom2)-1<font></font>
<font></font>
m.liStart=ATC("<w:sz ",m.lcPom)<font></font>
m.lcPom=STUFF(m.lcPom,m.liStart,0,m.lcPom2)<font></font>
<font></font>
** Font size<font></font>
m.liStart=ATC([<w:sz w:val="],m.lcPom)+13<font></font>
m.lcPom2=SUBSTR(m.lcPom,m.liStart)<font></font>
m.liEnd=m.liStart+ATC(["],m.lcPom2)-1<font></font>
<font></font>
m.liStart=ATC([<w:szCs w:val="],m.lcPom)+15<font></font>
m.lcPom2=SUBSTR(m.lcPom,m.liStart)<font></font>
m.liEnd=m.liStart+ATC(["],m.lcPom2)-1<font></font>
<font></font>
=FSEEK(m.lihFile,0)<font></font>
DO WHILE LEN(m.lcPom)>0<font></font>
=FWRITE(m.lihFile,LEFT(m.lcPom,65000))<font></font>
m.lcPom=SUBSTR(m.lcPom,65001)<font></font>
ENDDO <font></font>
ENDWITH<font></font>
SELECT (m.liSele)<font></font>
ENDPROC <font></font>
ENDDEFINE
m.lnRetVal = m.loSession.SetParams("test.docx",,,,,,"NATIVE_FDOCX")<font></font>
IF m.lnRetVal=0 <font></font>
m.loSession.setOtherParams("NEXT_PAGE_NAME_EXPR","_HACKPAGENAME(this)")<font></font>
m.loSession.ProcessReport("_reports\basetext")<font></font>
m.loSession.Finalize()<font></font>
END IF <font></font>
<font></font>
PROCEDURE _HACKPAGENAME(m.loReport)<font></font>
m.liSele=SELECT()<font></font>
<font></font>
WITH loreport.odocumentwriter.ooxml<font></font>
<font></font>
<font></font>
IF .npageno=1<font></font>
.cEntityStyle="w:styles"<font></font>
.addParagraphStyle("Normal","YourStyle",.ToTWIP(100),"0","","",.F.)<font></font>
<font></font>
SELECT (.Alias)<font></font>
<font></font>
m.lcPom=;<font></font>
[ <w:rPr>]+CHR(13)+CHR(10)+;<font></font>
[ <w:lang w:eastAsia="en-US"/>]+CHR(13)+CHR(10)+;<font></font>
[ </w:rPr>]+CHR(13)+CHR(10)<font></font>
<font></font>
<font></font>
<font></font>
m.lihFile=.GetFileHandle("word\styles.xml")<font></font>
m.lcPom=""<font></font>
=FSEEK(m.lihFile,0)<font></font>
m.lcPom=m.lcPom+FREAD(m.lihFile,65000)<font></font>
ENDDO<font></font>
<font></font>
m.liStart=ATC("<w:rFonts",m.lcPom)+10<font></font>
m.lcPom2=SUBSTR(m.lcPom,m.liStart)<font></font>
m.liEnd=m.liStart+ATC("/>",m.lcPom2)-1<font></font>
<font></font>
m.liStart=ATC("<w:sz ",m.lcPom)<font></font>
m.lcPom=STUFF(m.lcPom,m.liStart,0,m.lcPom2)<font></font>
<font></font>
** Font size<font></font>
m.liStart=ATC([<w:sz w:val="],m.lcPom)+13<font></font>
m.lcPom2=SUBSTR(m.lcPom,m.liStart)<font></font>
m.liEnd=m.liStart+ATC(["],m.lcPom2)-1<font></font>
m.liStart=ATC([<w:szCs w:val="],m.lcPom)+15<font></font>
m.lcPom2=SUBSTR(m.lcPom,m.liStart)<font></font>
m.liEnd=m.liStart+ATC(["],m.lcPom2)-1<font></font>
<font></font>
<font></font>
=FSEEK(m.lihFile,0) <font></font>
=FWRITE(m.lihFile,LEFT(m.lcPom,65000)) <font></font>
m.lcPom=SUBSTR(m.lcPom,65001) <font></font>
ENDDO<font></font>
ENDIF <font></font>
<font></font>
<font></font>
ENDWITH<font></font>
SELECT (m.liSele)<font></font>
RETURN lcPage<font></font>
ENDPROC <font></font>
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
/
...
/
Tao de XFRX
metadata.attachments
XFRX # INIT e imágenes / documentos en el
campo General
martinajindrova
Modificado por última vez feb 20, 2018
El soporte completo para campos generales y XFRX # INIT es desde XFRX 16.0.2 / XFRX
16.1. Pero para XFRX 15.7 y XFRX 16.0 es el paquete extendido. Usar es muy simple.
File extractfromgf.FXP copia en la misma carpeta con XFRX o en cualquier otro lugar (pero
no olvides utilizar SET PROCEDURE TO ... ADDITIVE)
Copia de archivo xfrxlib.fll a la misma carpeta con XFRX
Establezca la fuente de control para control consolidado de imagen / ole:
VFP 6.0 VFP 9.0
Como la salida PDF no admite imágenes con fondo transparente, agregue las siguientes
dos filas en su programa (antes de llamar a XFRX)
PUBLIC m.tnTC<font></font>
m.tnTC=RGB(255,255,255)
XFRX Enlazar
Sin etiquetas
Notificaciones de banderas
Documentación XFRX
Páginas
/
Obsoleto
martinajindrova
Formato de texto
<TF>
XFRX 15.3
PDF no
DOC2PDF sí
FDOC2PDF sí
XPS no
DOC sí
FDOC sí
NATIVE_DOCX no
NATIVE_FDOCX no
RTF sí
FRTF sí
ODT no
Formato de texto
calzado no
SAO no
PIE no
PFODS no
XLS sí
XLSPLAIN sí
NATIVE_FXLSX no
NATIVE_PFXLSX no
LLANURA -
HTML sí
HTMLPLAIN no
MHT sí
CNT / previewer no
XFF sí
XML sí
Impresión no
CRLF <br>
XFRX si 1)
#
INIT
XFRX si 1)
#
LIST
ENE
R
XFF sí 2)
XML sí 2)
HTM sí sí sí sí sí sí sí sí sí sí sí sí
L
HTM no
LPLA
IN
MHT sí sí sí sí sí sí sí sí sí sí sí sí
DOC sí sí sí sí sí sí sí sí sí sí sí sí
RTD sí sí sí sí sí sí sí sí sí sí sí sí
DOC sí sí sí sí sí sí sí sí sí sí sí sí
X
DOC sí sí sí sí sí sí sí sí sí sí sí sí
2PD
F
PDF no
XLS sí sí sí sí sí sí no sí sí sí sí sí
3)
XLSP sí sí sí sí sí sí no sí sí sí sí sí
LAIN 3)
RTF sí sí sí sí sí sí sí sí sí sí sí sí
FDO sí sí sí sí sí sí sí sí sí sí sí sí
C
FDO sí sí sí sí sí sí sí sí sí sí sí sí
CX
FDO sí sí sí sí sí sí sí sí sí sí sí sí
C2P
DF
FRTF sí sí sí sí sí sí sí sí sí sí sí sí
LLAN no
URA 4)
ODT no
calza no
do
SAO no
PIE no
PFO no
DS
XPS no
NATI no
VE_
DOC
X
NATI no
VE_F
DOC
X
NATI no
VE_F
XLSX
NATI no
VE_P
FXLS
X
Imág no
enes
2) Guardar información
Notificaciones de banderas