FinerEdge Publisher Support Documents

FinerEdge Publisher IDE Manual.
FinerEdge Publisher Reference Manual (this document).
FinerEdge Publisher Demonstration Tutorial.
FinerEdge Publisher Author's Guide.
FinerEdge Publisher Programmer's Guide.
FinerEdge Publisher Updates and Acknowledgments.

FinerEdge® Publisher Reference Manual
Version 4.5.160301.0
FinerEdge Software

Copyright © 2016 FinerEdge Software. All rights reserved.

All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior written permission of FinerEdge Software.

The information in this manual is furnished for informational use only, is subject to change without notice, and should not be construed as a commitment by FinerEdge Software. FinerEdge Software assumes no responsibility or liability for any errors or inaccuracies that may appear in this manual. The software described in this manual is furnished under license and may only be used or copied in accordance with the terms of such license.

FinerEdge Publisher is a trademark of FinerEdge Software. Windows, .NET, C#, and Visual Basic are registered trademarks of Microsoft Corporation. Java is a registered trademark of Sun Microsystems, Inc. PostScript is a registered trademarks of Adobe Systems Incorporated. HTML is a trademark of the World Wide Web Consortium (W3C). XML and CSS are trademarks of the Massachusetts Institute of Technology (MIT) and are used by the World Wide Web Consortium (W3C). All other brand or product names are the trademarks or registered trademarks of their respective owners.


Contents


Contents

Chapter 1 - Introduction
  Overview
  Distributed Document Processing

Chapter 2 - Entities and Catalogs
  XML Entities in FinerEdge Publisher
  Catalogs in FinerEdge Publisher

Chapter 3 - FinerEdge Publisher Tags
  Overview
  br
  case
  chart
  col
  colbr
  colgroup
  content
  div
  document
  else
  elseif
  exit
  file
  footer
  for
  foreach
  header
  if
  import
  mark
  method
  outline
  outlineitem
  outlineitemclose
  pagebr
  plot
  querydata
  recordset
  select
  seriesdata
  set
  span
  style
  svg
  table
  tbody
  td
  tfoot
  thead
  tr
  use
  var
  while
  xmldata

Chapter 4 - Style Sheet Properties and Page Rules
  Overview
  Style properties
  Document references
  background-color
  background-container
  background-image
  background-position
  background-repeat
  background-presize
  background-size
  background-type
  border-color
  border-style
  border-width
  bottom
  clear
  color
  colspan
  content
  decoration-align
  float
  font-family
  font-size
  font-style
  font-weight
  gutter
  height
  left
  line-height
  margin
  model
  OPI
  overflow
  padding
  page-break-after
  page-break-before
  page-break-inside
  position
  ref-keys
  ref-level
  ref-level-key
  ref-link
  ref-search
  ref-text
  right
  rotate
  rowspan
  size
  text-align
  text-decoration
  text-indent
  top
  vertical-align
  width
  word-spacing
  z-index
  Page rules

Chapter 5 - Expressions and Functions
  Constants and Variables
  Expression Elements and Operators
  Late evaluation expressions
  Regular Expressions
  anum
  chr
  collection
  cvt
  date
  directory
  env
  find
  first
  float
  format
  if
  len
  match
  mid
  mode
  null
  number
  ord
  parse
  pattern
  picture
  record
  refget
  refsearch
  refset
  refsort
  rgb
  round
  repeat
  replace
  rsrecord
  rsrecords
  scan
  time
  translate
  trim
  type
  val
  xmlatt

Chapter 6 - Data Interface Overview
  Overview
  Defining recordsets and external variables
  Creating external variables
  Creating and populating global variables
  Using FinerEdge Publisher recordset parameters passed from documents
  Single-record recordsets (one-to-one relationships)
  Multiple-record recordsets (one-to-many relationships)
  Database Query Data Sources
  XML Data Files

Chapter 7 - Application Data Interface
  Overview
  AdjustLinks
Interfaces: FPWriterCPP
  AppendRecord
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet
  AppendRecordParam
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet
  AppendVariable
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet
  Catalog
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  ChartServer
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  Clear
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  Close
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  CloseDocument
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPJNI, FPServerNet
  CloseRecord
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPJNI, FPServerNet
  ControlPanel
Interfaces: FPWriterNET, FPWriter
  CreatedDocument
Interfaces: FPWriterWPF
  CreateDocument
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  CreateDOCX
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  CreateEPUB
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  CreateHTMLPaged
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  CreateText
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  CurrencyDelim
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  DateDelim
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  DateFormat
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  DecimalDelim
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  Display
Interfaces: FPWriterNET, FPWriter, FPWriterCPP
  DocCreated
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  DocCreatedVal
Interfaces: FPServer
  Document/DocName
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  Error
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  ErrorVal
Interfaces: FPServer
  FindParam
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet
  FindVar
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet
  FireMark
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet
  FPReadPreferences
Interfaces: FPUtility, FPUtilityNet
  FPSetDllDirectory
Interfaces: FPUtility, FPUtilityNet
  GeneratePDF
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  GeneratePostScript
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  GeneratePrint
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  GenerateView
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP
  GenerateXPS
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  GetErrorEntity
Interfaces: FPJNI, FPServer
  GetErrorFile
Interfaces: FPJNI, FPServer
  GetErrorLine
Interfaces: FPJNI, FPServer
  GetErrorCol
Interfaces: FPJNI, FPServer
  GetErrorMsg
Interfaces: FPJNI, FPServer
  GetErrorText
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPServerNet
  GetOutline
Interfaces: FPWriterCPP
  GetParam
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet
  GetParamKey
Interfaces: FPJNI
  GetParamValue
Interfaces: FPJNI
  GetVar
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet
  GetRecord
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPJNI, FPServerNet
  GetRefSearch
Interfaces: FPJNI
  GetRefText
Interfaces: FPJNI
  GetRefPage
Interfaces: FPJNI
  GetRefRealPage
Interfaces: FPJNI
  GetRefOffset
Interfaces: FPJNI
  GetRefIndex
Interfaces: FPJNI
  HaveBackwardLinks
Interfaces: FPWriterWPF, FPWriterCPP
  HaveForwardLinks
Interfaces: FPWriterWPF, FPWriterCPP
  InitDocument
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPJNI, FPServerNet
  InitOutline
Interfaces: FPWriterCPP
  InitRecord
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPJNI, FPServerNet
  LoadHoliday
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  Mark
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPJNI, FPServerNet
  Media
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  MinHDSpace
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  NewPage
Interfaces: FPWriterWPF, FPWriterNET, FPWriter
  NewZoom
Interfaces: FPWriterWPF, FPWriterNET, FPWriter
  OutlineShow
Interfaces: FPWriterWPF, FPWriterNET, FPWriter
  Page
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP
  Pages
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  PageEnd
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  PageHeight
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  PageOffset
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  PageSegment
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  PageStart
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  ProcessFile
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  ProcessMode
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  RefGet
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPServerNet
  RefSearch
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet
  RegisterFireCloseDocument
Interfaces: FPWriterCPP
  RegisterFireCloseRecord
Interfaces: FPWriterCPP
  RegisterFireGetRecord
Interfaces: FPWriterCPP
  RegisterFireInitDocument
Interfaces: FPWriterCPP
  RegisterFireInitRecord
Interfaces: FPWriterCPP
  RegisterFireMark
Interfaces: FPWriterCPP
  RegisterFireNewPage
Interfaces: FPWriterCPP
  RegisterFireNewZoom
Interfaces: FPWriterCPP
  ResultFile
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  SetVarDate
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  SetVarDouble
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  SetVarLong
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  SetVarString
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  SetVarTime
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  ThousandDelim
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  TimeDelim
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  TimeFormat
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  VersionInfo
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer
  WndProc
Interfaces: FPWriterCPP
  Zoom
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP

Chapter 8 - FPServices and FPServicesApp
  Overview
  CreateDocument (SOAP)
  CreateDocument (REST)
  FPRequestCreateDoc (Data Contract)
  FPReplyCreateDoc (Data Contract)
  FPReplyCreateDocElem (Data Contract)

Chapter 9 - FPForm and FPFormNET
  Overview
  Catalog
Interfaces: FPFormNET, FPForm
  CtlGotFocus
Interfaces: FPFormNET, FPForm
  CtlLostFocus
Interfaces: FPFormNET, FPForm
  DLLX86DIR
Interfaces: FPFormNET, FPForm
  DLLX64DIR
Interfaces: FPFormNET, FPForm
  Error
Interfaces: FPFormNET, FPForm
  FieldChanged
Interfaces: FPFormNET, FPForm
  FieldHelp
Interfaces: FPFormNET, FPForm
  FieldIndex
Interfaces: FPFormNET, FPForm
  FieldName
Interfaces: FPFormNET, FPForm
  FieldType
Interfaces: FPFormNET, FPForm
  FieldUser
Interfaces: FPFormNET, FPForm
  FieldValue
Interfaces: FPFormNET, FPForm
  FormHeight
Interfaces: FPFormNET, FPForm
  FormLoaded
Interfaces: FPFormNET, FPForm
  FormName
Interfaces: FPFormNET, FPForm
  FormWidth
Interfaces: FPFormNET, FPForm
  GenFormASPX
Interfaces: FPFormNET, FPForm
  GenFormCSHTML
Interfaces: FPFormNET, FPForm
  GenFormHTML
Interfaces: FPFormNET, FPForm
  GetField
Interfaces: FPFormNET, FPForm
  LoadForm
Interfaces: FPFormNET, FPForm
  Resize
Interfaces: FPFormNET, FPForm
  SetFieldUser
Interfaces: FPFormNET, FPForm
  SetFieldValue
Interfaces: FPFormNET, FPForm
  ShowForm
Interfaces: FPFormNET, FPForm
  UnloadForm
Interfaces: FPFormNET, FPForm

Chapter 10 - FPFileWatcher
  Overview
  Configuration File

Appendix A
  Syntactical Conventions

Appendix B
  Output Format Compatibilities

Appendix C
  HTML Import Translation

Appendix D
  FPChart Definitions

Appendix E
  FPChartServer Process

Chapter 1 - Introduction
Overview
FinerEdge Publisher is an XML-based document rendering engine that is built from the ground up based upon common industry standards. The FinerEdge Publisher system is specifically designed for server-side automated cross-media publishing of high-quality document productions. Note: All FinerEdge Publisher components and interfaces are multi-threaded capable (i.e., thread-safe).

FinerEdge Publisher documents are XML-based entities that encompass the concepts of conditional processing and conditional formatting to any degree that document authors may require. Thus, FinerEdge Publisher was created to embrace the ever-expanding automation and personalization requirements of competitive businesses today.

FinerEdge Publisher is capable of creating precise, high-quality output for a broad range of document types from "compliant" business documents and documents that require a high-degree of personalization to large catalogs and even sub-catalogs delivered through the Web. FinerEdge Publisher can fully automate most document-related tasks saving a company both time and money from having to repetitively produce documents manually using traditional Desktop publishing systems.

The benefits derived from investing in an automated solution such as FinerEdge Publisher versus traditional desktop publishing systems for high-volume and high-content repetitive tasks are:

Greatly reduced cost and time to produce documents.
Virtually eliminate all production errors resulting in lost revenue.
Take advantage of new opportunities such as automatically "on-the-fly" producing fully compliant and printable business documents and sub-catalogs that are delivered over the Web.

FinerEdge Publisher consists of a number of "interface components" which, in turn, call the FinerEdge Publisher document rendering engine to create output in cross-platform, industry standard formats. Some of the interface components of FinerEdge Publisher are:

Web Services (WCF Library and IIS Application).
Document Writer Interfaces (WPF, .NET, COM and C++).
Document Server Interfaces (.NET and COM).
Java Native Interface.

The cross-platform industry, standard output formats of FinerEdge Publisher are:

Portable Document Format (PDF).
XML Paper Specification (XPS).
PostScript (PS).
Paged HTML.
EPUB and KF8 formats.
DOCX format.
Text and tagged text.
Direct Printing.
WPF Viewing.
DirectX Viewing.
GDI+ Viewing.
GDI Viewing.

The standard data input formats of FinerEdge Publisher are:
ODBC Data Sources.
OLEDB Data Links.
ADO Data Links.
XML Data Files.
HTML Files.
Text Data Files.
Application Data.

FinerEdge Publisher minimally requires a Window 7 or Windows 2008 operating system, but has been qualified under the Windows 10 and Server 2012 (or above) operating systems.

» Back to the Table of Contents. «

Distributed Document Processing
FinerEdge Publisher performs document processing in 3 distinct sequential phases. The three sequential phases used to process all documents are:

1. Primary parsing and data collection.
2. Document generation and rendering.
3. Driver interpretation and output.

FinerEdge Publisher can capture the output (and resources) from phase 1 processing. The captured output is known as a FinerEdge Publisher Process file and has an ".fpp" extension. If the captured output (and resources) were sent to another server in another part of the network for example, the FinerEdge Publisher Process file could then be used as input for phase 2 and 3 generation.

Consequently, all data collection could be performed inside a higher security zone with the results then being sent to a less restricted zone for document generation and rendering in various output formats. Another use of this facility is to be able to create a snapshot of a document at a given point in time that can then be subseqently replayed with 100% reproduction as many times as needed.

When a FinerEdge Publisher Process file is set with the Document or DocName properties, phase 1 processing is automatically bypassed and the file contents are instead used as input for phase 2 and phase 3 processing. FinerEdge Publisher Process files are created by setting the ProcessFile and ProcessMode properties as described by this document.

Within the IDE, the ProcessFile and ProcessMode properties can be set from the View/Update Preferences dialog in the Form Process area.

» Back to the Table of Contents. «


Chapter 2 - Entities and Catalogs
XML Entities in FinerEdge Publisher
XML external entities play a large role in the development of FinerEdge Publisher documents. External entities are files that are included in a document by the XML parser and processed exactly as if they were part of the base "document entity". External entities are also referred to as "module entities" in contrast to the base document entity.

The difference between a document entity and a module entity is that a document entity additionally contains an XML prolog and Document Type Definition (DTD), while the module entity contains only methods. FinerEdge Publisher can easily transform a document entity into a module entity or visa versa.

Even though according to XML rules, all external entities must be declared within the document's DTD, FinerEdge Publisher module entities support a hierarchical structure that emulates the way an individual naturally thinks. FinerEdge Publisher automatically resolves the document hierarchy into the "flat" structure needed for XML processing without involving the document author.

Anytime a document author includes a module entity into either a document entity or another module entity in order to use it's methods ("methods" are discussed later in this chapter), FinerEdge Publisher stores a special XML Processing Instruction (PI) tag at the beginning of the entity. When FinerEdge Publisher automatically builds the DTD and includes it in a document, the special PI tags are located and processed within the applicable entities.

An example of a valid XML FinerEdge Publisher Processing Instruction (PI) in a document entity or module entity is shown below. "Test_Mod1" refers to an catalog entry that is discussed in the next section of this chapter. Module entities may be defined in the catalog or referenced directly.

<?FPINCLUDE Test_Mod1?>
<?FPINCLUDE Test_Mod2 = "C:\mods\mod2.fpm"?>

The Processing Instructions within an entity can also refer to other external entities and so on until a hierarchical "map" is formed. The hierarchical map and the applicable methods are displayed to the document author within the IDE's entity pane for easy navigation between a document's primary elements. From the hierarchical map, duplicate entities are automatically eliminated and the DTD and associated references to the external entities are stored into the document entity.

All FinerEdge Publisher processing is done from within methods. The base document entity declares one method to be the "main" method that is called first by FinerEdge Publisher. When the main method is exited, document processing is complete. All other methods are called directly or indirectly (i.e., through other methods) from the main method. Any method can call any other method; however, methods cannot be embedded within other methods.

Methods can declare "local" variables for their own use. When the method is exited, the local variables are automatically discarded. Methods can also employ global document variables and external variables that were exposed by the query (database) interface, XML data files, application, or calling process.

An example of a document hierarchy is shown in the following diagram:


» Back to the Table of Contents. «

Catalogs in FinerEdge Publisher
A catalog file is a simple ASCII file that contains catalog entries. Each line of a catalog file contains a different catalog entry and is terminated by a carriage return and linefeed. Each entry within a catalog file contains a keyword followed by a value for that keyword.

Catalogs allow indirect references to be used that represent the actual names for external entities or element in a document. By using a catalog file, if the location of the physical entity changes, only the contents of the catalog file need be updated. The documents themselves and all corresponding module entities will not require any modification.

Each document can have it's own catalog file or all documents can share the same catalog file. Typically though, a related group of documents share the same catalog file while another group of documents would utilize a different catalog file.

All catalog entries begin with the keyword "ENTITY". FinerEdge Publisher defines three different variations of the ENTITY keyword that can be utilized within the catalog file as described by the following text.

ENTITY file -

The first variation of the ENTITY keyword relates an internal mnemonic to its corresponding absolute or relative file name. Relative file names are with respect to the document entity's directory path. An example of a FinerEdge Publisher catalog file is as follows:

ENTITY FPMod1 "C:\FP\Mods\fpmod1.fpm"
ENTITY FPMod2 "..\Mods\fpmod2.fpm"

ENTITY font -

The second variation of the ENTITY keyword is used to define fonts. All font entities must be defined in the corresponding catalog file, by utilizing the catalog editor of the IDE, prior to using them in a document. An example of the font variation of the ENTITY keyword is as follows:

ENTITY FONT_MyFont "'Arial','Helvetica',
  'Helvetica-Bold','Helvetica-Oblique','Helvetica-BoldOblique'"

The prefix "FONT_" identifies the catalog entry as a font variation of the ENTITY keyword. "MyFont" is the internally defined name that is referenced from within the documents. The five components of the text that follow the internally defined name are the Windows font name and the PDF/PostScript normal, bold, italic, and bold-italic fonts names. These names will be substituted for the internally defined name depending upon the FinerEdge Publisher output format being generated and options selected.

Either TrueType or Type 1 fonts are supported for embedding into both PDF and PostScript output formats. TrueType fonts are supported for embedding into the XPS output format. TrueType fonts must allow embedding as determined by their respective copyright licenses. If a TrueType font does not allow embedding, FinerEdge Publisher will indicate this to the document author in the IDE's font editor. It is the responsibility of the document author using a particular font to adhere to the published font license regarding font embedding.

Adobe Type 1 fonts must be available in Printer Font Binary (PFB) format as is typical for all Type 1 fonts residing on a Windows platform. FinerEdge Publisher automatically converts PFB files into Printer Font ASCII (PFA) files when embedding a font into PDF or PostScript output.

Note: There is no need to define standard Base 14 font names. Base 14 fonts are present in all PDF and PostScript viewers and interpreters. However, defining a Base 14 font yourself will cause the font to be embedded in a document. The Base 14 fonts consist of Courier, Helvetica (i.e., Arial), Times-Roman, Symbol, and ZapfDingbats.

To disallow a font from being embedded into a document, prefix each applicable PDF/PostScript field with a caret (i.e., "^"). This will cause a font reference to be formatted into the document instead of actually embedding the font. This has no effect upon XPS documents as fonts are required to be embedded. (Warning: The referenced font must be available to the PDF viewer or PostScript interpreter, otherwise font substitution will occur.)

ENTITY image -

The third variation of the ENTITY keyword is used to define images. Like entities, it's recommended that commonly used images be defined in the FinerEdge Publisher catalog file as an internally known name instead referencing them directly from a document. If the image location ever needs to be changed, it could simply be updated in the catalog file without directly modifying any documents. An example of the image variation of the ENTITY keyword is as follows:

ENTITY IMAGE_MyImage1 "C:\FP\FPTest\fp1.jpg"
ENTITY IMAGE_MyImage2 "..\MyImages\fp2.png"
ENTITY IMAGE_MyImage3 "http://www.mysite.com/fp3.tif"

The prefix "IMAGE_" identifies the catalog entry as an image variation of the ENTITY keyword. For example, "MyImage1" is the internally defined name that is referenced from within documents. The text that follows the internally defined name can be an absolute file name, a relative file name, or a url. Relative names are with respect to the document entity's directory path.

Note: It's recommended that an individual use the FinerEdge Publisher Integrated Development Environment (IDE) catalog editor to create and modify catalog entries for a FinerEdge Publisher catalog file.

» Back to the Table of Contents. «


Chapter 3 - FinerEdge Publisher Tags
Overview
The FinerEdge Publisher Markup Language (FPML) is specifically designed to utilize well-known HTML elements and CSS styles while allowing conditional processing to occur to any extent that the document author may require, and to accommodate the unique needs of paged and precisely formatted documents. Instead of having a large number of physical documents for given document type, the document author can maintain a much smaller number of physical documents that each have the ability to alter themselves based upon the external data made available to the document.

In addition to conditional processing, FPML is designed to inherently make use of external data that is made available to the document. Data is organized into "recordsets" of information that may be arbitrarily large or small as needed. Also, "drilldowns" can be used with recordsets to enable one-to-many relationships to any nesting level desired. External variables, recordsets, and drilldowns are built-in elements of FPML and, as such, are relatively easy and intuitive for a document author to use.

The external data could come from a number of different sources, including the calling application itself. When the external data comes from the calling application, an individual has complete control over what is accessible and how it's accessed and presented to FinerEdge Publisher.

FinerEdge Publisher stores external variables in its symbol table. Unless variables are purposely cleared (i.e., by fetching the next record of a recordset), a document author can reuse the external variables in a document as many times as desired without incurring the overhead of repeated data fetches.

The majority of all formatting in FinerEdge Publisher is accomplished through style properties. Because of the conditional processing capabilities of FinerEdge Publisher and the ability to use conditional expressions directly with style properties, FinerEdge Publisher also embodies the concept of conditional formatting. For example, a table could enlarge itself or add more columns based upon external data or, alternatively, images could change or be added based upon still other external data.

All tags, except document, must occur within a method tag pair. methods are the most fundamental component of FinerEdge Publisher and are callable by other methods either from within the same entity or another external entity. In addition, methods may or may not be defined with formal parameters that may pass variables, expressions, etc. Method parameters may also be bi-directional and return data to the caller.

When input is read from a document or module entity, FinerEdge Publisher interprets carriage returns and linefeeds as spaces. In addition, multiple spaces are usually compressed into a single space (the string mnemonic " " may be used to force an absolute space in the output if desired). Finally, spaces prior to a new line of output are also discarded.

Standard XML comments (i.e., "<!-- ... -->") and cdata sections (i.e., "<![cdata[ ... ]]>") can be freely included within any FinerEdge Publisher (FPML) document. One of the common uses of a cdata section within a FinerEdge Publisher document might be to embed it within an html tag pair. The FinerEdge Publisher Integrated Development Environment (IDE) supports both XML comments and cdata sections as well as the html tag pair from within the cdata editor.

Within a document, non-paired tags (i.e., those tags that do not have an ending tag) are terminated with the character sequence "/>". This syntax is a requirement of XML rules and FinerEdge Publisher strictly adheres to this convention. By utilizing the FinerEdge Publisher IDE visual designer (i.e., WYSIWYG) or markup editors to create and modify FPML elements, styles, and expressions, the document author need not be concerned with syntactical issues.

» Back to the Table of Contents. «

br
<br/>

Examples:

<br/>

Attributes:

None.

Description:

Perform a line break (i.e., end this line and begin a new line). This causes the accumulated line to be formatted and output depending upon the measurements of font sizes, embedded spans, etc. The new insertion point is moved to the beginning of the next line within the current element as determined by the calculated overall line-height.

If no text has been accumulated for a line, the br tag will use the default line-height of the current element's style and font to position to the next line.

» Back to the Table of Contents. «

case
<case expr = "<expressions>|ELSE"/>

<expressions>:

<expression> [, <expression>]...

Examples:

<select expr = "intVar">
<case expr = "1,2,3"/>
  ...
<case expr = "'aaa','bbb','ccc'"/>
  ...
<case expr = "ELSE"/>
  ...
</select>

Attributes:

expr
Specifies valid FinerEdge Publisher <expression>s.
Description:

One or more case tags are embedded within a select tag pair. When the select tag is encountered, its <expression> is first evaluated. The result of the select tag's expression is then successively compared to each case tag's <expression>s within the select tag pair.

When a match is found, the tags and text following the case tag are processed until another case tag is encountered or the corresponding end select tag is seen. Subsequent case tags within the select tag will not be processed. If no matching case tag is encountered, then no tags and text within the select tag pair will be processed.

A special form of the case tag (i.e., "case ELSE") may be used to provide default processing should no match occur. In this case, the <case expr = "ELSE"/> must be the last case tag within the select tag pair.

Select and case tag <expression>s can evaluate to either a <number> (i.e., whole number) or a <string>. However, both the select tag's <expression> and the embedded case tag's <expression>s must evaluate to be of the same type (i.e., <number> or <string>).

» Back to the Table of Contents. «

chart
<chart name = "<expression>"
  var = "<variable>"
  type = "<expression>"
  [params = "<expression>"]
  [dpix = "<expression>"]
  [dpiy = "<expression>"]
  [log = "<expression>"]/>

Examples:

<chart name = "MyChart.xml" var = "strMyChart" type = "jpeg"/>

Description:

The chart tag invokes the charting engine with the designated chart definition to produce a temporary image file that can be subsequently used with the style property background-image. Any temporary image files created with the chart tag are automatically removed when the session's thread local storage is released (i.e., the current session is terminated).

For additional information, please see the applicable appendix in this manual.

Attributes:

name
Designates the name of an existing chart definition file.
var
The variable name that will contain the automatically created temporary image file name set by this tag. If the variable name does not exist it will be created.
type
Designates the output image type, which can be either "bmp", "gif", "jpeg", "png", or "tiff".
params
Optional attribute specifies additional parameters that are specified within the chart definition as replacement parameters. The parameter string has the format:

<name>: <value> [ ; <name>: <value> ]
dpix
Optional x-direction resolution of the produced chart. If a value is not given or is less than x-direction standard screen resolution, then the standard screen resolution is assumed.
dpiy
Optional y-direction resolution of the produced chart. If a value is not given or is less than y-direction standard screen resolution, then the standard screen resolution is assumed.
log
Optionally create a log file that describes the chart creation process, including any possible exceptions.

» Back to the Table of Contents. «

col
<col [align = "Normal|Adjust|Left|Center|Right"]
   [span = "<number constant>"]
   [width = "<number constant>|(<expression>)
    *|<length unit>|<percentage unit>"]
   [id = "<ID selector>"]
   [class = "<Class selector>"]
   [style = "<Style properties>"]/>

Examples:

<col/>

Attributes:

align
Normal, adjust columns, left, center, or right aligned columns.
span
Include number of columns (default 1).
width
The column width. An asterisk ("*") indicates a variable width column, which may be preceded by a <number constant> multiplier (the default multiplier is 1). FinerEdge Publisher adds the widths for all known table columns first and then subtracts that sum from the width of the parent element. The result is then evenly distributed over the table's variable width columns with respect to their multiplers.
id
A style "id" previously defined with the style tag.
class
A style "class" previously defined with the style tag.
style
Inline style properties.
Description:

The col tag in FinerEdge Publisher is modeled after the col tag in HTML and defines ordered table columns within a table that have no semantic meaning.

» Back to the Table of Contents. «

colbr
<colbr [height = "<number constant>|(<expression>)
  <length unit>|<percentage unit>"]/>

Examples:

<table cols = "50%,50%">
  ...
  <colbr/>
  ...
</table>

Attributes:

height
When this attribute is used with the colbr tag, a colbr action will only occur if the specified height is greater than the remaining height for the table or for the page (if the height was not explicitly indicated for the table). The remaining height within the current column of the table or page is calculated with respect to formatted boxes, the footer, etc. The "height" attribute is not compatible with HTML generation and is therefore ignored.
Description:

This tag can only be used within a table tag pair. Since tables can be nested within each other, the colbr applies to the table at the same level as itself. Alternatively, the HTML tr/td model may be used within a table element. In that case, no colbr tags should appear with the table element.

The colbr tag causes the next defined column within the current table to be made active (see the "cols" attribute of the table tag). Any subsequent processing is done within the new column until another colbr tag is encountered or the end table tag is seen.

When a colbr tag is used in the last column of a table, the first column is again wrapped around and made active. If column wraparound occurs, all of the column heights within the table are normally synchronized with the height of the longest column (i.e., the "rows" can be variable in length but all of the columns within each row start at the same vertical point). This gives a normal table style appearance where the columns for a row are synchronized with each other.

» Back to the Table of Contents. «

colgroup
<colgroup [align = "Normal|Adjust|Left|Center|Right"]
   [span = "<number constant>"]
   [width = "<number constant>|(<expression>)
    *|<length unit>|<percentage unit>"]
   [id = "<ID selector>"]
   [class = "<Class selector>"]
   [style = "<Style properties>"]>
  ...
</colgroup>

Examples:

<colgroup class = "coltype1">
  ...
</colgroup>

Attributes:

align
Normal, adjust columns, left, center, or right aligned columns.
span
Include number of columns (default 1).
width
The column width. An asterisk ("*") indicates a variable width column, which may be preceded by a <number constant> multiplier (the default multiplier is 1). FinerEdge Publisher adds the widths for all known table columns first and then subtracts that sum from the width of the parent element. The result is then evenly distributed over the table's variable width columns with respect to their multiplers.
id
A style "id" previously defined with the style tag.
class
A style "class" previously defined with the style tag.
style
Inline style properties.
Description:

The colgroup tag in FinerEdge Publisher is modeled after the colgroup tag in HTML and defines ordered table columns within a table that have semantic meaning.

» Back to the Table of Contents. «

content
<content var = "<string>"
   [delims = "<string>"]
   [names = "<string>"]>
  ...
</content>

Examples:

<content var = "strContent">
  ...
</content>

Attributes:

var
By default, designates a string variable name where the content of this tag will be placed.
delims
When the attribute "delims" is given, each character in delims represents a "level" of tokenization, starting from 1.
names
When the attribute "names" is given, optional names can be applied to the levels of tokenization instead of numeric array indexing.
Description:

The content tag can contain any type of content including tags or text, with the exception of an ending content tag content tags may not be embedded within other content tags). By default, this content is placed within a string designated by the "var" attribute. For example, the content tag can be utilized with the svg tag to create an SVG XML name for the background-image style.

When the attribute "delims" is given, each character in delims represents a "level" of tokenization, starting from 1. For each level of tokenization, the delimiter character is used to parse the individual tokens. The next level of tokenization is applied to each of the previous level's list of tokens, and so on.

Whitespace is trimmed from the ends of the tokens at each level. In addition if tokens are surrounded by apostrophe characters (single quotes), a type of string is assumed. In all other cases, token types are automatically determined by the content, which are then used to set the types of the resulting elements.

Each level of tokenization (starting from 1) will result in another level of array indexing as applied to the name specified by the "var" attribute. For example if "var" was "MyAry", two (2) delimiter characters would imply two levels of tokenization, which would also imply the array elements "MyAry[1,1] to MyAry[m,n]" (array indexes start from 1).

When the attribute "names" is given, optional names can be applied to the levels of tokenization instead of the numeric array indexing described above. Each level of tokenization is separated by semicolons, whereas individual names within a level of tokenization are separated by commas as follows:

[<name> [, <name>]] [; [<name> [, <name>]]]...

For example if "var" was "MyAry" and "names" was ";Name1,Name2", two (2) delimiter characters would imply the array elements "MyAry[1,'Name1'] to MyAry[n,'Name1']" and "MyAry[1,'Name2'] to MyAry[n,'Name2']".

» Back to the Table of Contents. «

div
<div [id = "<ID selector>"]
   [class = "<Class selector>"]
   [style = "<Style properties>"]>
  ...
</div>

Examples:

<div class = "boxtype1">
  ...
</div>

Attributes:

id
A style "id" previously defined with the style tag.
class
A style "class" previously defined with the style tag.
style
Inline style properties.
Description:

The div tag in FinerEdge Publisher is modeled after the div tag in HTML and is a general purpose block-level element. The div tag has much of the same properties as the HTML div tag except when it comes to physical page breaks and the page break checkpoint mechanism. div tags may be nested within other div tags or table tags. Conversely, table tags may be nested within div tags. However, div tags may not be nested within span tags.

» Back to the Table of Contents. «

document
<document [dateformat = "<string constant>"]
   [timeformat = "<string constant>"]
   [datedelim = "<string constant>"]
   [timedelim = "<string constant>"]
   [dpdelim = "<string constant>"]
   [thdelim = "<string constant>"]
   [curdelim = "<string constant>"]
   [defchar = "<string constant>"]
   [deflength = "<number constant>"]
   [staticrefs = "Yes|No"]
  ...
</document>

Examples:

<document>
  ...
</document>

Attributes:

dateformat
us
Use user specified date.
mm
Use MM/DD/YY date.
dd
Use DD/MM/YY date.
yy
Use YY/MM/DD date.
jj
Use YY/DDD Julian date.
nn
Use straight number of days.
cm
Use MM/DD/YYYY date.
cd
Use DD/MM/YYYY date.
cy
Use YYYY/MM/DD date.
cj
Use YYYY/DDD Julian date.
timeformat
us
Use user specified time.
mm
Use HH:MM 24-hour time.
ss
Use HH:MM:SS 24-hour time.
am
Use HH:MMa/p 12-hour time.
as
Use HH:MM:SSa/p 12-hour time.
datedelim
A single character date delimiter.
timedelim
A single character time delimiter.
dpdelim
A single character decimal point delimiter.
thdelim
A single character thousands delimiter.
curdelim
A single character currency delimiter.
defchar
The default character used by the var tag when the resulting expression is an empty string (i.e., ""). Please refer to the var tag for more information.
deflength
The default length used by the var tag when the resulting expression is an empty string (i.e., ""). Please refer to the var tag for more information.
staticrefs
Creates a static reference table (normally used with a Table of Contents).
Description:

There are two types of external entities in FinerEdge Publisher: document entities and module entities. Document entities contain an XML Prolog, FinerEdge Publisher Document Type Definition (DTD), and the document tag. Within the document tag exist one or more methods. One of the methods is designated to be the "main" method and is processed first. All other methods are either called directly or indirectly (i.e., through another method) from the main method.

In contrast, module entities contain only methods, each of which may contain any or all FinerEdge Publisher tags, styles, etc. with the exception of the document tag. Also, module entities do not contain an XML prolog or a Document Type Definition (DTD).

The document tag is not directly visible in the FinerEdge Publisher IDE. All manipulation of the document tag is done via the document tag editor. While working in the FinerEdge Publisher IDE, it's easy to turn a document entity into a module entity and visa-versa (in fact, a single checkbox within the document tag editor accomplishes this).

The "staticrefs" attribute is used to direct FinerEdge Publisher to perform a simple scan of the document, prior to any actual processing, looking for static references (i.e., those references having a constant value in the ref-search property). For each static reference found, the ref-search constant value is stored into an array called "Reference".

The first reference stored into the Reference array is at index 1 while the last reference stored into the Reference array is specified by a preset variable called "RefCount". For example, this allows a "Table of Contents", to be created anytime during document processing for all static references.

Additionally, when the "staticrefs" attribute of the document tag is used with an HTML generation, anchor tags (i.e., "A" tag) are also inserted at the reference locations within the document. The anchor tag's "name" attribute is set to the value of the ref-search property.

» Back to the Table of Contents. «

else
<else/>

Examples:

<if expr = "dblVar > 8.5">
  ...
<else/>
  ...
</if>

Attributes:

None.

Description:

This tag provides a final "else" part to an "if" tag pair. The "else" tag must be embedded within an "if" tag pair and is associated with the IF tag at the same level (i.e., "if" tags may be nested within other "if" tags). This tag is optional within an "if" tag and must follow all other elseif tags at the same level (if they exist).

All tags and text that follow the "else" tag and are prior to the end "if" tag will be processed if the <expression> to the preceding "if" and elseif tags are false.

» Back to the Table of Contents. «

elseif
<elseif expr = "<expression>"/>

Examples:

<if expr = "dblVar > 8.5">
  ...
elseif expr = "dblVar > 7.5"/>
  ...
</if>

Attributes:

expr
Specifies a valid FinerEdge Publisher <expression>.
Description:

This tag provides an intermediate conditional "else" part to an "if" tag pair. The elseif tag must be embedded within an "if" tag pair and is associated with the "if" tag at the same level.

All tags and text that follow the elseif tag and are prior to another elseif tag, "else" tag or the end "if" tag will be processed if the <expression> to the preceding "if" and elseifs are false and the <expression> to this elseif tag is true.

» Back to the Table of Contents. «

exit
<exit tag = "LOOP|METHOD"/>

Examples:

<exit tag = "LOOP"/>

<exit tag = "METHOD"/>

Attributes:

tag
The type of tag to be exited (i.e., LOOP or METHOD).
Description:

The exit tag allows for a premature exit from either a loop (for tag or while tag) or a method. If LOOP is specified for the "tag" attribute, the currently active loop (for or while) is terminated and control passes to the next tag or text following the end for or end while tag respectively.

When method is specified for the "tag" attribute, the currently active method is terminated. If any loops (for or while) are active when the exit tag is invoked for a method, they are also terminated.

When the currently active method is the main method, the document is then completed. If the currently active method is not the main method, the method is exited normally passing back the values for any parameters specified as "ByRef" to the calling method (please refer to the method tag for more information on this subject).

» Back to the Table of Contents. «

file
<file action = "New|Open|Read|Write|Close|Exists|Delete|Rename|Copy"
   [slot = "<number constant>"]
   [value = "<string constant>|(<expression>)"]
   [value2 = "<string constant>|(<expression>)"]
   [temp = "Yes|No"]/>

Examples:

<file action = "Open" slot = "1"
  value = "C:\MyFile.txt"/>
<file action = "Read" slot = "1"
  value = "strLine"/>
<file action = "Write" slot = "1"
  value = "Test line one"/>
<file action = "Close" slot = "1"/>
<file action = "Exists" value = "C:\MyFile.txt"
  value2 = "numResult"/>
<file action = "Delete" value = "C:\MyFile.txt"/>
<file action = "Rename" value = "C:\MyFile.txt"
  value2 = "C:\NewFile.txt"/>

Attributes:

action
New
Create a new file identified by the "slot" attribute with the path given in the "value" attribute. If a file already exists with the given name, the original file is deleted prior to creating the new file. Optionally open the file with the code page "ANSI" (default value), "OEM", or "UTF8" given in the "value2" attribute.
Open
Open an existing or new file identified by the "slot" attribute with the path given in the "value" attribute. Optionally open the file with the code page "ANSI" (default value), "OEM", or "UTF8" given in the "value2" attribute.
Read
Read from a previously opened file identified by the "slot" attribute into a <string variable> given in the "value" attribute. Since an empty record will return a zero-length string, the constant "<EOF>" is returned when the end-of-file is seen.
Write
Write to a previously opened file identified by the "slot" attribute with the text given in the "value" attribute.
Close
Close a previously opened file identified by the "slot" attribute.
Exists
Determines if the file given in the "value" attribute exists and places the result (0=Does not exist, 1=Exists) into a <number variable> given in the "value2" attribute.
Delete
Delete an existing file given in the "value" attribute.
Rename
Rename an existing file given in the "value" attribute to the new name given in the "value2" attribute. The Rename action can be used to move a file between directories.
Copy
Copy an existing file given in the "value" attribute as the new name given in the "value2" attribute.
slot
A number ranging from 1 to N (typically 10) that identifies a particular file for Open, Read, Write, and Close actions.
value
Depending upon the action chosen, the content of this attribute varies (see the "action" attribute for additional information).
value2
Depending upon the action chosen, the content of this attribute varies (see the "action" attribute for additional information).
temp
When specified with an action of "New" or "Open" and the temp mmnemonic is "Yes", the file will be automatically removed after the current document has been created. The default temp mnemonic is "No".
Description:

Performs various actions to include opening, reading, writing, closing, checking the existence of, deleting, and renaming text files. Read actions input the next record of text following the current file position. Write actions output text at the end of the file, which is then terminated by an appropriate newline sequence.

» Back to the Table of Contents. «

footer
<footer [action = "DEFINE"]
   [measure = "Yes|No"]
   [format = "Yes|No"]>
  ...
</footer>

Examples:

<table cols = "50%,50%">
  <footer>
   <div>Column 1</div>
   <colbr/>
   <div>Column 2</div>
   <colbr/>
  </footer>
  ...
</table>

Attributes:

action
A value of DEFINE creates an element footer.
measure
A value of "Yes" will include the footer when automatically measuring the width for an Adjustable, Left, Center, or Right table column. A value of "No" will not include the footer when automatically measuring a column's width.
format
A value of "Yes" will format the footer like a Left, Center, or Right table column. A value of "No" will format the footer in the usual manner.
Description:

The footer tag pair may be used within either table or div elements in order to supply content that will be automatically regenerated over page breaks. A good example of this is a table that spans more than one page. In this case, the table footer will be regenerated and redisplayed following each page break and prior to continuing with the formatting of the table.

When employed, the beginning footer tag should appear just after the beginning table or div element tag. When used in a table, the content of the footer tag pair must populate an entire row (i.e., all columns for a row). If elements are embedded within each other that each declare footer tag pairs, all of the table block footers will be regenerated in the proper order following a page break.

» Back to the Table of Contents. «

for
<for var = "<number variable>"
   start = "<expression>"
   end = "<expression>"
   [step = "<expression>"]>
  ...
</for>

Examples:

<for var = "intVar" start = "1" end = "100">
  ...
</for>

<for var = "intVar" start = "100" end = "1" step = "-5">
  ...
</for>

Attributes:

var
A <number variable> to be assigned a new value each time through the loop.
start
Specifies a valid FinerEdge Publisher <expression> to start the loop.
end
Specifies a valid FinerEdge Publisher <expression> to end the loop.
step
Specifies an optional FinerEdge Publisher <expression> to step the loop.
Description:

The for tag is a conditional processing loop tag within a FinerEdge Publisher document (please refer to the if, select, and while tags for additional conditional processing tags). For tags may be nested within other for tags.

All tags and text following the for tag and prior to the end for tag are processed each time through the loop. The content of the "var" attribute must be a <number variable>. If the <number variable> has not been previously declared (i.e., with the set tag), it is automatically declared.

The attributes "start", "end", and optional "step" each specify an expression that is evaluated when the loop is first encountered and must result in a positive or negative whole number. The result of the "start" attribute is initially assigned to the <number variable> as it's beginning value. If the optional "step" attribute is not included, a step value of 1 is used.

The value of the <number variable> is compared to the value of the attribute "end" each time through the loop including the first time the loop is encountered. If the step value is positive, the loop is ended when the start value is greater than the end value. If the step value is negative, the loop is ended when the start value is less than the end value.

When the end for tag is seen, the <number variable> is incremented or decremented by the step value. Processing then continues at the beginning of the loop where the "end" attribute condition is again evaluated to determine if the loop will proceed or not. If the loop is terminated, processing continues following the end for tag.

» Back to the Table of Contents. «

foreach
<foreach name = "<alphanumeric>"
   [mark = "<expression>"]
   [params = "<expression>"]>
  ...
</foreach>

Examples:

<foreach name = "MyRecordset">
  ...
</foreach>

Description:

The foreach tag represents a compact way of iterating through a recordset (please refer to the recordset tag for additional information). Each foreach tag is equivalent of the following tag sequence (which can provide a greater level of control when required):

<recordset name = "MyRecordset" action = "New">
<for var = "numMyRecordset" start = "1" end = "rerecords()">
  <recordset name = "MyRecordset" action = "Record"
   expr = "numMyRecordset">
  ...
</for>
<recordset name = "MyRecordset" action = "Delete">

Attributes:

name
Designates the name of the recordset to be iterated.
mark
Optional attribute specifies the <Processing Interval>, <Rendering Interval>, and <Generating Interval> of the mark tag's "Initialize" type "expr" attribute (please refer to the mark tag for more information).
params
Optional attribute specifies the recordset tag's "New" action "expr" attribute (please refer to the recordset tag for additional information).

» Back to the Table of Contents. «

header
<header [action = "DEFINE|NEXT"]
   [measure = "Yes|No"]
   [format = "Yes|No"]>
  ...
<header>

Examples:

<table cols = "50%,50%">
  <header>
   <div>Column 1</div>
   <colbr/>
   <div>Column 2</div>
   <colbr/>
  </header>
  ...
</table>

Attributes:

action
A value of DEFINE creates an element header, whereas a value of NEXT specifies formatting elements that will appear on subsequent pages. A header tag with a value of NEXT may only appear within a header tag with a value of DEFINE.
measure
A value of "Yes" will include the header when automatically measuring the width for an Adjustable, Left, Center, or Right table column. A value of "No" will not include the header when automatically measuring a column's width.
format
A value of "Yes" will format the header like a Left, Center, or Right table column. A value of "No" will format the header in the usual manner.
Description:

The header tag pair may be used within either table or div elements in order to supply content that will be automatically regenerated over page breaks. A good example of this is a table that spans more than one page. In this case, the table header will be regenerated and redisplayed following each page break and prior to continuing with the formatting of the table.

When employed, the beginning header tag should appear just after the beginning table or div element tag. When used in a table, the content of the header tag pair must populate an entire row (i.e., all columns for a row). If elements are embedded within each other that each declare header tag pairs, all of the table block headers will be regenerated in the proper order following a page break.

» Back to the Table of Contents. «

if
<if expr = "<expression>">
  ...
</if>

Examples:

<if expr = "dblVar > 8.5">
  ...
</if>

Attributes:

expr
Specifies a valid FinerEdge Publisher <expression>.
Description:

The "if" tag is a conditional processing tag within a FinerEdge Publisher document (please refer to the for, select, and while for additional conditional processing tags). The elseif and else tags may be embedded within this tag to provide optional processing when the result of the "if" tag's <expression> is false. "If" tags may be nested within other "if" tags.

All tags and text that follow the "if" tag and are prior to an elseif tag, else tag or the end "if" tag at the same level will be processed if the <expression> to this tag is true.

» Back to the Table of Contents. «

import
<import type = "HTML-Base|HTML-Exp"
  source = "String|File"
  expr = "<expression>"
  [error-result = "<variable>"]
  [error-action = "None|Include"]/>

Examples:

<import type = "HTML-Base" source = "String"
  expr = "strHTML"/>

<import type = "HTML-Exp" source = "File"
  expr = "'MyHTMLFragment.html'"
  error-result = "strImportError"
  error-action = "Include"/>

Description:

The import tag translates an external format into valid FPML and inserts the fragment into the document generation flow (i.e., phase II). When the "HTML" types are used, the import tag can translate an entire HTML document or just an HTML fragment. If a DOCTYPE, processing instruction, or html tag is initially detected, a complete HTML document is assumed for input.

During the subsequent generation of the fragment, the document is protected against faults that occur in the fragment (i.e., if an error occurs generating the fragment, the remainder of the fragment is skipped prior to continuing document generation). Any variables that were declared prior to the fragment being generated are likewise available for use within the fragment.

For additional information, please see the applicable appendix in this manual.

Attributes:

type
The type of import action. The value "HTML-Base" performs a base HTML-to-FPML import translation, where FPML tags are not allowed. The value "HTML-Exp" performs an expanded HTML-to-FPML import translation where FPML tags are allowed in addition to the base HTML tags. Any tags that are not recognized are not processed (i.e., they are discarded) to include all content of those tags.
source
The source of the import input, which may be either "String" for a string variable or "File" for a file name or url.
expr
When the source is "String", designates the input string. When the source is "File", designates the name of an input file or uri.
error-result
A variable name that contains the error text (if any) from the translation. An empty string after translation signifies no error.
error-action
If an error occurs while subsequently generating the fragment, a value of "None" (the default value) will not show the error text in the document output whereas a value of "Include" will show the error text in the document output.

» Back to the Table of Contents. «

mark
<mark [ type = Fire|Initialize|Increment ]
  expr = "<expression>"/>

Examples:

<mark expr = "'Mark12'"/>

<mark expr = "strMark"/>

Attributes:

type
Fire, Initialize, or Increment (see below).
expr
Specifies a FinerEdge Publisher <expression>.
Description:

Various actions are performed depending on the value of the "type" attribute as follows:

Fire -

The default type of Mark Event is fired during document rendering to inform a calling application of a significant document processing event. However, the "FireMark" property can additionally control when the Mark Event is fired.

Initialize -

To initialize FinerEdge Publisher's document generation status mechanism and receive processing, rendering, and generating events, each participating document must include a Mark tag with a "type" attribute value of "Initialize". In addition, the calling application must also be willing to participate in reporting these status events (Note: The IDE is always enabled to participate in status events).

The "expr" attribute must contain four whole numbers, each of which may specify a sub-expression, as follows:

<Processing Maximum>, <Processing Interval>,
  <Rendering Interval>, <Generating Interval>

When the <Processing Maximum> or the <Processing Interval> has a value of zero, processing Mark events will not be sent to the application. Likewise, if <Rendering Interval> or <Generating Interval> have values of zero, rendering Mark events and generating Mark events will not be sent to the application respectively.

The value of <Processing Maximum> is the maximum number of increments that will be performed during document processing. The value of <Processing Interval> is the percentage interval between processing events sent to the application (e.g., if the <Processing Interval> is 10, a processing event will be sent to the application for every 10% of the document processed).

Like the <Processing Interval>, the value of <Rendering Interval> is the percentage interval between rendering events sent to the application (e.g., if the <Rendering Interval> is 10, a rendering event will be sent to the application for every 10% of the document rendered).

Also like the <Processing Interval>, the value of <Generating Interval> is the percentage interval between generating events sent to the application (e.g., if the <Generating Interval> is 10, a generating event will be sent to the application for every 10% of the document generated).

Increment -

The "expr" attribute determines the number of increments that are made. When the number of increments reaches the value set by the <Processing Maximum>, the processing event will report 100%. The default for the "expr" attribute is 1.

» Back to the Table of Contents. «

method
<method name = "<alphanumeric>"
   [params = "<parameter> [, <parameter>]..."]
   [main = "Yes|No"]>
  ...
</method>

<parameter>:

[ByRef] <number variable>|<float variable>|<string variable> =
  <number constant>|<float constant>|<string constant>|*

Examples:

<method name = "Account_Summary" main = "Yes">
  ...
</method>

<method name = "Section_12"
   params = "strName = 'Default Name', intCons = 2, ByRef dblTotal = 0.0">
  ...
</method>

Attributes:

name
The name of the method.
params
The optional parameters of the method. For each parameter specified, an initialization value (i.e., following the "=") must be supplied, even if the initialization value is specified as being "any type" ("*").
main
"Yes" indicates the main method, "No" indicates a standard method.
Description:

A method tag pair encapsulates a group of tags and text in a FinerEdge Publisher document. Any tags or text except document and method may appear in the body of a method. Methods can use other methods which, in turn, can use still other methods and so on (please refer to the "use" tag for more information on this subject). However, method tags cannot be embedded within other method tags.

One such method within a document entity must be declared as the main METHOD by using the attribute "main". The main method may also declare parameters with initialization values. If the main method includes parameters, corresponding variables will be created for each parameter as "@Global_<parameter name>.

The main method is entered first when a FinerEdge Publisher document is processed. All other methods are used either directly or indirectly from this method. When the end method tag is reached for the main method, document processing is complete.

All other methods may or may not be declared within the same document entity as the main method. In order to modularize common document sections or routines, methods may be declared in module entities. Module entities are entities that consist of only methods and their respective tags and text (i.e., module entities have no XML Prolog, Document Type Definition, or document tag).

Parameters -

Methods may have parameters as specified by the "params" attribute. Parameters are local variables that are declared at the same level as the method. When the end method tag is seen or the exit tag exits the method, any parameters or local variables declared at the same level as the method are discarded.

Initialization values ("=") are required for each parameter specified. Apart from the special usage for the main method (see above), initialization values serve three important purposes. First, initialization values define the parameter as either a type of number, float, string, or "any type" ("*"). With the exception of "any type" ("*"), if the "use" tag's corresponding parameter does not have the same type, an error will be generated. Second, the "use" tag can also specify an asterisk ("*") to indicate that the initialization value should be used for any optional "By Value" parameter. (Note: A parameter of "any type" will initially be seen as an empty string.) Third, the visual designer (WYSIWYG) view in the IDE uses the initialization values to apply a type other than string to parameters and to also supply default values for display purposes while editing a document.

By default, the parameter are passed from the caller to the method "By Value". That is, copies of the data from the "use" tag's parameters are created so that any modification to the methods parameters will not affect the caller. When a parameter is preceded by the optional keyword "ByRef", it is declared "By Reference" (i.e., when the method is exited, the updated value of the parameter variable is copied back to the corresponding "use" tag's variable prior to discarding it). If a "ByRef" parameter variable changes it's type within a method (via a "set" tag), that change is reflected back to the corresponding "use" tag's parameter variable.

Any parameters that are declared as "ByRef" by the method must be passed as actual variables (i.e., not <expression>s) by the "use" tag calling the method. In addition, the same number of parameters must exist in the "use" tag as are declared in the called method unless an asterisk "*" optional parameter is given in the "use" tag.

» Back to the Table of Contents. «

outline
<outline
   [refsearch = "<string constant>|(<expression>)"]
   [refsort = "<string constant>|(<expression>)"]>
  ...
</outline>

Examples:

<outline refsearch = "^TOC">
  ...
</outline>

Attributes:

refsearch
Uses the reference items in the outline that match the regular expression given by this attribute. A value of "^OLDef" will use the default outline items.
refsort
Specifies a sort order for the reference items to be retrieved for this outline. Must be in the same format as described by the refsort function.
Description:

The outline tag specifies one or more outlineitems. Relative to the refsearch constraint, an outline heirarchy of reference items is created with respect to their ref-level style property. For each reference item in the heirarchy, the ref-level style property is used to locate the corresponding outlineitem and format its contents into the document.

» Back to the Table of Contents. «

outlineitem
<outlineitem
   [level = "<number constant> [, <number constant>]..."
   [level-key = "<string constant>"]>
  ...
</outlineitem>

Examples:

<outlineitem level = "2">
  ...
</outlineitem>

<outlineitem level = "1,2">
  ...
</outlineitem>

Attributes:

level
Specifies one or more candidate levels for the outline item separated by comma characters, where 1 is the top-most level.
level-key
Specifies the optional key for this level for the outline item. The optional level-key allows multiple outlineitems for an outline to be declared at the same level with different keys. The appropriate outlineitem is selected based upon the corresponding ref-level-key style property of the reference items.

Description:

Relative to the refsearch constraint, an outline heirarchy of reference items is created with respect to their ref-level style property. For each reference item in the heirarchy, the ref-level style property is used to locate the first outlineitem definition having a corresponding candidate level and format its contents into the document.

In order to create an outline item definition, the outlineitem tag can specify any tags or styles except header, footer, chart, foreach, import, mark, method, outline, plot, querydata, recordset, seriesdata, style, and xmldata. In addition, the following variables are declared and populated when each outline item is invoked while processing an outline:

strOLSearch
The reference table search for this outline item.
strOLText
The reference table text for this outline item.
strOLID
The reference table ID of this outline item.
strOLLevel
The level of this outline item.
strOLPage
The real page number of this outline item.
strOLCount
The number of outline item children at the next outline level below this outline item.
» Back to the Table of Contents. «

outlineitemclose
<outlineitemclose/>

Examples:

<outline>
  <outlineitem>
   ...
  <outlineitemclose/>
   ...
  </outlineitem>
  ...
</outline>

Attributes:

None.

Description:

Usually all of the tags and styles the appear within a particular outlineitem tag pair are processed when a new outline item is "opened" within the outline heirarchy. However at times it may also be necessary to process additional tags and styles when an outline item is correspondingly "closed" within the outline heirarchy.

When the outlineitemclose tag appears within an outlineitem tag pair, all tags and styles that appear prior to the outlineitemclose tag are process when the outline item is opened. In constrast, all tags and styles that appear after the outlineitemclose tag are process when the outline item is closed.

» Back to the Table of Contents. «

pagebr
<pagebr [height = "<number constant>|(<expression>)"
  <length unit>|<percentage unit>"]
  [next = "Auto|Odd|OddBlank|Even|EvenBlank"]
  [page = "<number constant>|(<expression>)"]/>

Examples:

<pagebr/>

<pagebr height = "25%"/>

<pagebr next = "Odd"/>

<pagebr page = "1"/>

Attributes:

height
Specifies an optional height that must remain on the page otherwise a logical page break will occur.
next
If the "next" attribute is set to "Auto" (default), the next page will immediately follow the current page. However, if the "next" attribute is set to "Odd", "OddBlank" or "Even", "EvenBlank", the next page will start on an odd or even page boundary respectively. The values "OddBlank" and "EvenBlank" will not format any page areas on blank pages (otherwise, page areas are formatted on blank pages).
page
Changes the document page number for display purposes.
Description:

The pagebr tag performs a "logical" page break which may or may not result in a physical page break. If the attribute "height" is used, the logical page break will only occur if the specified height is greater than the remaining height on the page. The remaining height within the current column on the page is calculated with respect to box elements, footers, etc.

When a percentage unit is used to specify a logical page break, the available height of the page is first calculated with respect to the page areas, margins, etc. Then, if the specified percentage is greater than the remaining height within the current column divided by the available height of the page (in terms of a percentage), a logical page break will occur.

When "logical" page breaks are encountered (either implicitly or explicitly by invoking the pagebr tag) within a table element, a "checkpoint" is taken of the current location, styles, etc. and the next column of the table element is processed if it exists. This procedure is repeated until all of the tags and text that can be formatted on the page have been processed (including all embedded TABLE elements or other elements).

Then, the active box elements are closed, the footer (if any) is formatted, and a physical page break is performed. On the next page, the header (if any) is taken into account, the box elements are reopened, and the "checkpoints" are resumed. The checkpoints themselves are dynamic and may span several pages prior to being closed.

The "next" attribute insures that after a physical page break occurs, the next page begins on either an odd or even page boundary. When a blank page is inserted to start the next page on an odd or even page boundary, the blank page is normally formatted with the current page areas prior to being output. However, if the new "OddBlank" or "EvenBlank" options are used with the "next" attribute, blank pages are formatted and output without the current page areas.

The "page" attribute of the pagebr tag may be utilized to dynamically change the "displayed" page number during document processing. This feature allows, for example, a document author to specify multiple sections within a single document, with each section beginning at page one. The "page" attribute may only be used with the pagebr tag at the outermost element level (i.e., the pagebr tag using the "page" attribute cannot be nested within another element).

» Back to the Table of Contents. «

plot
<plot name = "<expression>"
  var = "<variable>"
  type = "<expression>"
  [params = "<expression>"]
  [dpix = "<expression>"]
  [dpiy = "<expression>"]
  [set = "<expression>"]/>

Examples:

<plot name = "MyPlot.plt" var = "strMyPlot" type = "jpeg"/>

Description:

The plot tag invokes the plotting engine with the designated plot definition to produce a temporary image file that can be subsequently used with the style property background-image. Any temporary image files created with the plot tag are automatically removed when the session's thread local storage is released (i.e., the current session is terminated).

Attributes:

name
Designates the name of an existing plot definition file.
var
The variable name that will contain the automatically created temporary image file name set by this tag. If the variable name does not exist it will be created.
type
Designates the output image type, which can be either "gif", "jpeg", or "png".
params
Optional attribute specifies additional parameters that are specified within the plot definition as replacement parameters. The parameter string has the format:

<name>: <value> [ ; <name>: <value> ]
dpix
Optional x-direction resolution of the produced chart. If a value is not given or is less than x-direction standard screen resolution, then the standard screen resolution is assumed.
dpiy
Optional y-direction resolution of the produced chart. If a value is not given or is less than y-direction standard screen resolution, then the standard screen resolution is assumed.
set
Optional attribute specifies additional parameters that are used with the plotting engine to initialize the output type set by the "type" attribute.

» Back to the Table of Contents. «

querydata
<querydata name = "<file name>|(<expression>)"/>

Examples:

<querydata name = "C:\MyDirectory\MyFile.fsq"/>

<querydata name = "..\Data\MyFile.fsq"/>

<querydata name = "(strFile)"/>

Attributes:

name
Specifies the absolute or relative name of a FinerEdge Publisher SQL file. Relative names are with respect to the document entity's directory path.
Description:

The querydata tag causes the contents of a FinerEdge Publisher SQL file to be processed in preparation for database information to be subsequently extracted. The individual unique query names that are defined within FinerEdge Publisher SQL files are referred to recordset tags.

More than one FinerEdge Publisher SQL file may be specified via multiple querydata tags within a document entity or module entity. However, all connection and query element names must be unique so that they can be accurately referenced from recordset tags (otherwise an error will be generated). If the same FinerEdge Publisher SQL file is specified more than once by a querydata tag, it will be ignored.

Please refer to the topic "Database Query Data Sources" within the chapter "Application Data Interface" for more information.

» Back to the Table of Contents. «

recordset
<recordset name = "<alphanumeric>"
  action = "Select|New|Delete|Record"
  [expr = "<expression>"]/>
  [fetch = "Now|Later"]

Examples:

<recordset name = "General_Info" action = "Select"
  expr = "access:Summary"/>

<recordset name = "Detail_Info" action = "New"/>

recordset name = "Detail_Info" action = "Record"
  expr = "intRecord"/>

<recordset name = "Detail_Info" action = "Delete"/>

Attributes:

name
The name of an application, query (database), or XML data defined recordset.
action
Specifies the action that is to be performed, which can be the values "Select", "New", "Delete", or "Record".
expr
Specifies a valid FinerEdge Publisher <expression>.
fetch
Controls when the recordset's variables are populated after positioning to a record. The "fetch" attribute is only valid when the "action" attribute is "Record".

After positioning to a record using the recordset tag with the "action" attribute set to "Record", the external variables belonging to the recordset can be populated immediately ("Now") or when the first variable of the recordset is used ("Later"). The value of "Later" might be employed to reduce overhead when the variables of the recordset might not be accessed in certain cases.
Description:

Prior to referencing this tag, it is presumed that the individual has read and understood the chapter "Application Data Interface". The chapter "Application Data Interface" gives a detailed explanation of the interaction between an application, documents, and FinerEdge Publisher in creating and populating external variables. (The term "application" refers to the query (database), XML data, and calling Application interfaces.)

The recordset tag is the primary communication vehicle between an application and a FinerEdge Publisher document. Application data in FinerEdge Publisher is represented by external variables that may contain whole numbers, floating point values, strings of text, dates, and times.

External variables are organized into functional groups called recordsets. Each recordset is created and named by the application including all of the external variables that belong to that recordset. The "name" attribute must refer to the application defined name that identifies a particular recordset when using the recordset tag.

Recordsets can be broken down into two categories: single-record recordsets and multiple-record recordsets (i.e., one-to-many relationships). In addition, one-to-many relationships are represented by a dynamic "drilldown" mechanism in FinerEdge Publisher that is superimposed upon the applicable recordsets.

Single-record recordsets and global external variables do not require the use of the recordset tag. Once the external variables are created and populated by the application, they are intrinsically available to the document author simply by referring to their names.

However, a document author and the application administrator must mutually agree upon a handshake for passing information from the document to the application. This is accomplished by setting parameters through the "expr" attribute for a particular recordset. For an action "Select" or action "New", the "expr" attribute syntax is as follows:

<keyword>:<value> [; <keyword>:<value>]...

The <keyword> must be in <alphanumeric> format. The <value> can be any characters except a semicolon. Only the application administrator and document author know the meaning of the <keyword> and <value> pairs. Alternatively, parameters may be defined and passed from an outer recordsets to inner recordsets from within the FinerEdge Publisher query (database) mechanism as described in the IDC manual. In this case, parameters are not needed from the document. Also, parameters are not applicable to XML data recordsets.

When the action "Select" is used to set parameters for a single-record recordset, the corresponding external variables of that recordset are also "cleared". This action, in turn, forces the application to re-fetch the data from possibly a different source.

Multiple-record recordsets require the use of the recordset tag. First, a drilldown is created for a particular recordset by using the attribute action "New". The optional attribute "expr" may be used to provide information from the document to the application regarding the records requested in the drilldown (the "expr" attribute must be in the <keyword> and <value> pair format described above).

The application then creates one or more <keyword> and <value> pairs for each record that describes (to itself) how to efficiently fetch the data for each record. To the document, each record in a drilldown is indexed by a whole number starting from 1 and continuing until the last record requested. The FinerEdge Publisher functions "rsrecord" and "rsrecords" can be used with the currently active recordset drilldown to assist in looping through all of the records within a drilldown.

In order to fetch a particular record, the document specifies action "Record" for the particular recordset name (usually within a loop). The record number is given to the application by the document through the "expr" attribute. In this case, the result of the "expr" attribute must evaluate to be a <number>.

FinerEdge Publisher then accesses the <keyword> and <value> pairs for the requested record of the drilldown and passes them to the application. The application, in turn, fetches the physical data based upon the <keyword> and <value> pairs and populates the external variables of the recordset.

When a document has finished with a drilldown, it must discard it by using the action "Delete" for the particular recordset. This, in turn, returns the application to the previously active drilldown (if a previously active drilldown was active).

» Back to the Table of Contents. «

select
<select expr = "<expression>">
  ...
</select>

Examples:

<select expr = "strVar">
<case expr = "'CA','WA'"/>
  ...
<case expr = "ELSE"/>
  ...
</select>

Attributes:

expr
Specifies a valid FinerEdge Publisher <expression>.
Description:

The select tag is a conditional processing tag within a FinerEdge Publisher document (please refer to the for, if, and while tags for additional conditional processing tags). One or more case tags are embedded within a select tag pair. When the select tag is encountered, its <expression> is first evaluated. The result of the select tag's expression is then compared to each case tag's <expression>s within the select tag pair.

When a match is found, the tags and text following the case tag are processed until another case tag is encountered or the corresponding end select tag is seen. Subsequent case tags within the select tag will not be processed. If no matching case tag is encountered, then no tags and text within the select tag pair will be processed.

Select and case tag <expression>s can evaluate to either a <number> (i.e., whole number) or a <string>. However, both the select tag's <expression> and the embedded case tag's <expression>s must evaluate to be of the same type (i.e., <number> or <string>).

A special form of the case tag (i.e., "ELSE") may be used to provide default processing should no match occur. In this case, the <case expr = "ELSE"/> should be the last case tag within the select tag pair.

» Back to the Table of Contents. «

seriesdata
<seriesdata name = "<alphanumeric>"
  value = "<expression>"
  expr = "<expression>"
  [mark = "<expression>"]
  [params = "<expression>"]
  [temp = "Yes|No"]/>

Examples:

<seriesdata name = "MyRS" value = "MySample.txt"
  expr = "format('{0} {1}',@MyRS_XVal,@MyRS_YVal)"/>

Description:

The seriesdata tag represents a compact way of creating a series data file for a subsequent chart or plot definition invocation designated by a chart or plot tag. Each seriesdata tag is equivalent of the following tag sequence (which can provide a greater level of control when required):

<file action = "New" slot = "<MaxSlot>"
   value = "MySample.txt" temp = "Yes"/>
<foreach name = "MySample">
  <file action = "Write" slot = "<MaxSlot>" value = "<Expr>"/>
</foreach>
<file action = "Close" slot = "<MaxSlot>"/>

Attributes:

name
Designates the name of the recordset to be iterated.
value
Specifies the name of the data file that will be created.
expr
Designates the expression that will be used to write each record of the data file. This corresponds to the file tag's "value" attribute (please refer to the file tag for more information).
mark
Optional attribute specifies the <Processing Interval>, <Rendering Interval>, and <Generating Interval> of the MARK tag's "Initialize" type "expr" attribute (please refer to the mark tag for more information).
params
Optional attribute specifies the recordset tag's "New" action "expr" attribute (please refer to the recordset tag for additional information).
temp
When the mnemonic is "Yes", the data file will be automatically removed after the current document has been created. A value of "No" will retain the data file and can be useful when testing a chart or plot definition. The default temp mnemonic is "Yes".

» Back to the Table of Contents. «

set
<set var = "[?]<variable> [, <variable>]"
  expr = "[?]<expression>"
  [sum = "<variable>"]
  [null = "Yes|No"]/>
  [external = "Yes|No"]/>

Examples:

<set var = "intVar1,intVar2" expr = "1"/>

<set var = "intVar[1],intVar[2]" expr = "IntVar1+1"/>

<set var = "strVar[intInx]" expr = "'Robert Smith'"/>

<set var = "!strVar" expr = "!strVar+' (Partnership)'"/>

<set var = "strPage" expr = "?format(numPage)"/>

<set var = "?strText" expr = "'A'+'B'"/>

Attributes:

var
One or more variable names are assigned the value of the <expression>. An optional prefix consisting of a question mark ("?") character is used to specify a late evaluation expression. Please refer to the topic "Late evaluation expressions" within the chapter "FinerEdge Publisher Expressions" for more information on this subject.
expr
Specifies a valid FinerEdge Publisher <expression> to assign to the variables. An optional prefix consisting of a question mark ("?") character is used to specify a late evaluation expression. Please refer to the topic "Late evaluation expressions" within the chapter "FinerEdge Publisher Expressions" for more information on this subject.
sum
When an optional variable name is given, a running sum is stored in a variable name that is suffixed by "Sum" (e.g., if "Abc" was the variable given, the name would be "AbcSum"). The type of the variable will either be a <number> or <float> depending upon the resulting type of the expression. If the expression is a <string>, a <number> or <float> will be parsed from the contents.

In addition, the current number of times that the variable was summed is stored in a variable name that is suffixed by "Count". The Sum and Count variables are typically used within the header and footer tags.
null
"Yes" sets the variables to a data source null state, whereas "No" resets the variables to a non-null state.
external
"Yes" additionally sets the variable into the output variables list. If the variable already exists in the list, its value is updated. Output variables can be accessed after document processing is complete via the FPFindVar and FPGetVar API methods.
Description:

The set tag assigns one or more variables specified by the attribute "var" to the result of the <expression> specified by the "expr" attribute. The variables indicated by the attribute "var" are always set to the resulting <expression>'s type (i.e., <number>, <float>, or <string>). Dates and time can be represented as either <number>s (internal form) or <string>s (external form) depending upon the resulting <expression>'s type.

The set tag is used to declare local or global variables and to further modify the contents of local or global variables already declared. If the local or global variables or array elements specified by the attribute "var" are not currently declared, they are initially declared to be the same type as the resulting <expression> specified by the attribute "expr".

» Back to the Table of Contents. «

span
<span [id = "<ID selector>"]
   [class = "<Class selector>"]
   [style = "<Style properties>"]>
  ...
</span>

Examples:

<span style = "font-weight:bold">...</span>

<span style = "border-style:solid; width:1in">
  ...
</span>

Attributes:

id
A style "id" previously defined with the style tag.
class
A style "class" previously defined with the style tag.
style
Inline style properties.
Description:

The span tag in FinerEdge Publisher is modeled after the span tag in HTML and is a general-purpose "inline" element. Span tags may be either categorized as "inline" spans or "box" spans. If the "width" style property was not specified or has a resulting value of 0, an inline span is formatted. However, if the "width" style property is greater than 0, a box span is formatted.

As previously stated, both types of spans (inline and box) are considered "inline" elements. Inline elements are formatted within the current line. Also, inline elements affect the formatting of the current line in terms of line-height, wraparound, etc.

Inline SPANs are typically used to change a style property. Like all content tag pairs, when the end tag is encountered, the current style again reverts back to the parent element's style properties. Changing the font-family, font-size, and font-weight are just some of the common uses of an inline span.

Box spans are typically used to format a fixed size field on a form that may or may not have a visible border. Another use of box spans is to format a multi-line box within the current line (that also may or may not have a visible border). With a box span, since there is no baseline, it is by default aligned to the bottom of the current line.

» Back to the Table of Contents. «

style
<style [href = "<expression>"]>
  <style props>
  [<style props>]...
</style>

<style props>:

<Class selector>|<ID selector> { <Style properties> }

Examples:

<style>
  table { width: 80% }
  .COLORBLUE { background-color: blue }
  div.smallbox { border-style:solid; width:1in }
  #element101 { font-family:'Courier'; font-size:10pt }
</style>

Attributes:

href
Optionally specifies the name of an input file or uri that typically has an extension of "css". The file is expected to contain valid css specifications in a UTF-8 encoding.
Description:

The style tag in FinerEdge Publisher is modeled after the style tag in HTML and allows one or more <Class selector> or <ID selector> styles to be defined for later use in the document. The styles either add to an internally known list of styles or change any existing styles that have the same names as in the internally known list of styles. The styles can be subsequently used many times throughout a document.

Since FinerEdge Publisher supports the concept of callable methods, a number of styles can be defined for use in many documents by creating a module entity with methods that contain one or more style tags, each defining one or more styles within them. When the document is processed, a document can call the applicable methods containing the style tags prior to using any of the declared styles.

Please refer to the chapter "Style Sheet Properties" for an explanation of <Class selector>, <ID selector>, and how to create styles.

» Back to the Table of Contents. «

svg
<svg source = "String|File"
  expr = "<expression>"
  var = "<variable>"
  type = "<expression>"
  [params = "<expression>"]
  [dpix = "<expression>"]
  [dpiy = "<expression>"]
  [sizex = "<expression>"]
  [sizey = "<expression>"]/>

Examples:

<svg source = "String"
  expr = "strInputText"/
  var = "strOutputName"/>

Description:

The svg tag prepares SVG input, from a string or file source, for subsequent processing by the Scaleable Vector Graphics engine. It produces a temporary SVG file that can be subsequently used with the style property background-image. Any temporary image files created with the svg tag are automatically removed when the session's thread local storage is released (i.e., the current session is terminated).

Note: It is not necessary to use this tag if the SVG XML already exists as a file or url and attributes such as params, dpix, dpiy, sizex, and sizey are not utilized. In this case, the file or url can be directly used with the background-image style.

Attributes:

source
The source of the import input, which may be either "String" for a string variable or "File" for a file name or url.
expr
When the source is "String", designates the input string. When the source is "File", designates the name of an input file or uri.
var
The variable name that will contain the automatically created temporary image file name set by this tag. If the variable name does not exist it will be created.
params
Optional attribute specifies additional parameters that are specified within the SVG definition as replacement parameters. The parameter string has the format:

<name>: <value> [ ; <name>: <value> ]

The <name> must be in <alphanumeric> format. The <value> can be any characters except a semicolon. Alternatively the <value> can be surrounded by apostophes (single quotes) in which case it may contain semicolon characters.
dpix
Optional x-direction resolution of the produced SVG. If a value is not given or is less than x-direction standard screen resolution, then the standard screen resolution is assumed. The final image is also affected by the prescale style property, which is performed by the SVG engine.
dpiy
Optional y-direction resolution of the produced SVG. If a value is not given or is less than y-direction standard screen resolution, then the standard screen resolution is assumed. The final image is also affected by the prescale style property, which is performed by the SVG engine.
sizex
Optional width of the canvas surface in pixels, which overrides all other values either set by the svg tag (via a constant or parameter) or implied.
sizey
Optional height of the canvas surface in pixels, which overrides all other values either set by the svg tag (vai a constant or parameter) or implied.

SVG XML Parameter Syntax -

Within SVG XML, parameters may be used with any attributes as follows:

<attribute> = "(param <name>) <default value>"

The <name>s above correspond to the <name>s given as optional parameters to this function. The <default value> is that value that is applied to the attribute if the <name> is not given in the optional parameters.

» Back to the Table of Contents. «

table
<table [id = "<ID selector>"]
   [class = "<Class selector>"]
   [style = "<Style properties>"]
   [cellstyle = "<Style properties>"]
   [cols = "<column> [,<column>]..."]
   [type = "Normal|Adjust|Left|Center|Right|AutoCOLBR"]>
  ...
</table>

<column>:

[D|S|V|A|L|C|R:] <number constant>|(<expression>)
  *|<length unit>|<percentage unit>

Examples:

<table cols = "*,8cm,*">
  ...
</table>

<table cols = "48%,D:4%,48%">
  ...
</table>

Attributes:

id
A style "id" previously defined with the style tag.
class
A style "class" previously defined with the style tag.
style
Inline style properties.
cellstyle
Inline style properties applied to the cells of the table whenever a td element is seen. A special case arises when the border-style property is set to the single value of "solid" (i.e., as applicable to all four sides). In this case the borders of adjacent td cells will be displayed only once.
cols
The number of columns in the table and their respective dimensions. See the col and colgroup tags for an alternative way of specifying table columns.

When a "D" (Divider) is specified, the column will be skipped when performing an explicit or implicit colbr action. In addition, a centered vertical divider line is drawn from the top border to the bottom border for that column. The line is drawn with the same width and color that is currently set for the right border of the table. This option cannot be used with the first or last column of a table. (In this case, the standard border and padding styles should be employed.)

When an "S" (skip) is specified, the column will be skipped when performing an explicit or implicit colbr action. No additional drawing will take place within the column with the exception of filling in the skipped area with the currently set background color. This option cannot be used with the first or last column of a table. (In this case, the standard border and padding styles should be employed.)

When a "V" (variable) is specified, the column is explicitly designated as being variable. When a column is variable, only the initial steps are performed as discussed in the paragraph regarding a "variable width column" below.

When an "A" (adjust) is specified, the content of each column is measured to determine it's maximum line width. The maximum line widths for all variable width columns are then added together to determine the total maximum line width. Next, the maximum line width for each column is divided by the total maximum line width resulting in a fraction of the total. Finally, each fraction is then applied to the remaining width of the table element thus yielding the adjusted width for each variable column.

When either a "L" (left), "C" (center), or "R" (right) is specified, the content of each column is measured to determine it's maximum line width and recorded. For these types of columns, when table model includes an inner div element (i.e., table, div, div), the recorded value is applied to the inner element's width. Inner elements are additionally aligned to the "L" (left), "C" (center), "R" (right) of the parent element.

An asterisk ("*") for any table column indicates a variable width column, which may be preceded by a <number constant> multiplier (the default multiplier is 1). FinerEdge Publisher adds the widths for all known table columns first and then subtracts that sum from the width of the parent element. The result is then evenly distributed over the table's variable width columns with respect to their multiplers. Additionally, when an individual column is formatted with an "A", "L", "C", or "R" option, a number of additional steps are performed as discussed in the respective option above.
type
Most of the time, a table will operates within the constraints of FinerEdge Publisher's tr/td table model (i.e., where cells are represented as individual td elements). In this case, the synchronization of variable heights rows are automatically handled by FinerEdge Publisher.

If the table's "type" attribute has a value of "Adjust", "Left", "Center", or "Right", it will be applied as a default to any columns that have not been specified with an explicit formatting option. Additionally, If the table's "type" attribute has a value of "Left", "Center", or "Right", and the tr/td table model is used, an inner div is automatically added with a text-align style of "Right" for the "Left" and "Center" column options, and a text-align style of "Left" for the "Right" column option.

When the table's "type" attribute has a value of "AutoCOLBR", then automatic column breaks are performed on the columns of the table. With this type of table, the div/colbr model must be used but without any colbr tags being specified. AutoCOLBR tables operate well with embedded elements and with respect to styles such as page-break-inside being set to "avoid". If dynamic column breaks are also needed, the colbr tag along with the height attribute can additionally be be used.
Description:

The table tag is a general-purpose multi-column block-level element that is modeled after the HTML table element. Table tags may be nested within other table or div tags. The dimensions of a table's columns are always with respect to their parent element's width or column width (in the case of parent table elements). Table tags may not be nested within span tags.

The columns of a table may be arbitrarily long without regard to physical page breaks. Page breaks are automatically handled by the FinerEdge Publisher dynamic checkpoint mechanism. Please refer to the pagebr tag for an explanation of what occurs when an implicit or explicit page break is encountered.

TABLE elements may employ either an HTML tr/td model or the more flexible div/colbr model. However, the tr/td model is often used unless dynamically injecting colbrs or colbrs with the height attribute are needed.

» Back to the Table of Contents. «

tbody
<tbody [id = "<ID selector>"]
   [class = "<Class selector>"]
   [style = "<Style properties>"]>
  ...
</tbody>

Examples:

<tbody class = "parttype1">
  ...
</tbody>

Attributes:

id
A style "id" previously defined with the style tag.
class
A style "class" previously defined with the style tag.
style
Inline style properties.
Description:

The tbody tag in FinerEdge Publisher is modeled after the tbody tag in HTML and defines the body section within a table.

» Back to the Table of Contents. «

td
<td [id = "<ID selector>"]
   [class = "<Class selector>"]
   [style = "<Style properties>"]>
  ...
</td>

Examples:

<td>
  ...
</td>

Attributes:

id
A style "id" previously defined with the style tag.
class
A style "class" previously defined with the style tag.
style
Inline style properties.
Description:

The td tag in FinerEdge Publisher is modeled after the td tag in HTML and is a block-level element that must be embedded within a table element. The td element represents a single cell in a table and is the equivalent of a div tag pair followed by a colbr tag. As such, tr elements are not strictly required (i.e., following the last column of a row, a new row is automatically started at the first column.

The td tag inherits any inline style properties that are defined by the cellstyle attribute of the table element. Furthermore, the td tag also inherits any inline style properties that are defined by an enclosing tr element. In addition, if the td tag does not define an id or class attribute, any id or class attributes that are defined by a tr element are also inherited.

» Back to the Table of Contents. «

tfoot
<tfoot [id = "<ID selector>"]
   [class = "<Class selector>"]
   [style = "<Style properties>"]>
  ...
</tfoot>

Examples:

<tfoot class = "parttype1">
  ...
</tfoot>

Attributes:

id
A style "id" previously defined with the style tag.
class
A style "class" previously defined with the style tag.
style
Inline style properties.
Description:

The tfoot tag in FinerEdge Publisher is modeled after the tfoot tag in HTML and defines the footer section within a table that is repeated over page breaks and at the end of the table.

» Back to the Table of Contents. «

thead
<thead [id = "<ID selector>"]
   [class = "<Class selector>"]
   [style = "<Style properties>"]>
  ...
</thead>

Examples:

<thead class = "parttype1">
  ...
</thead>

Attributes:

id
A style "id" previously defined with the style tag.
class
A style "class" previously defined with the style tag.
style
Inline style properties.
Description:

The thead tag in FinerEdge Publisher is modeled after the thead tag in HTML and defines the header section within a table that is repeated over page breaks and at the beginning of the table.

» Back to the Table of Contents. «

tr
<tr [id = "<ID selector>"]
   [class = "<Class selector>"]
   [style = "<Style properties>"]
   [block = "None|Header|Footer"]>
  ...
</tr>

Examples:

<tr>
  ...
</tr>

Attributes:

id
A style "id" previously defined with the style tag.
class
A style "class" previously defined with the style tag.
style
Inline style properties.
block
A value of "Header" designates this row as a table header whereas a value of "Footer" designates this row as a table footer. A value of "None" is the same as not specifying an option and designates this as a standard table row.
Description:

The tr tag in FinerEdge Publisher is modeled after the tr tag in HTML and is a block-level element that must be embedded within a table element. The tr element represents a single row in a table. One or more td elements are normally defined within a tr tag to represent the cells of a row. If the number of td elements within a tr tag is less than the number of columns, as defined by the "cols" attribute of the enclosing table tag, empty td elements are automatically generated with appropriate styles for the table and row.

All td elements within an enclosing tr tag inherit any inline style properties that are defined by the cellstyle attribute of the table element. Furthermore, the td tag also inherits any inline style properties that are defined by the tr element. In addition, if the td tag does not define an id or class attribute, any id or class attributes defined by the tr element are also inherited.

» Back to the Table of Contents. «

use
<use name = "<alphanumeric>"
  [params = "<parameter> [, <parameter>]..."]/>

<parameter>:

<number>|<float>|<string>|*

Examples:

<use name = "Section_1"/>

<use name = "Section_12"
  params = "'John Smith', intBase+2, dblTotal"/>

Attributes:

name
The name of the method to use.
params
The parameters passed to the method.
Description:

A "use" tag calls a corresponding method that has the same "name" attribute as the "use" tag itself (please refer to the method tag for an explanation of declaring and using methods). The called method may or may not be declared within the same entity as the "use" tag.

USE tags may or may not have parameters as specified by the "params" attributes. An asterisk ("*") for a "By Value" parameter indicates that the initialization value of the method's parameter should be used.

By default, parameters are passed from the "use" tag to the method "By Value" (i.e., copies of the values from the "use" tag's parameters are created so that any modification to the methods parameters will not affect the caller). When a particular method tag's parameter is preceded by the optional keyword "ByRef", it is declared "By Reference" (i.e., when the method is exited, the updated value of the parameter variable is copied back to the corresponding "use" tag's variable parameter).

If a "ByRef" parameter variable changes it's type (via the "set" tag) within a method, that change is reflected back to the corresponding "use" tag's parameter variable. Any parameters that are declared as "ByRef" by the method must be passed as actual variables (i.e., not <expression>s) by the "use" tag. In addition, the same number of parameters must exist in the "use" tag as exist in the called method.

» Back to the Table of Contents. «

var
<var expr = "[?]<expression>"
  [sum = "<variable>"]
  [char = "<string>"]
  [length = "<number>"]
  [bz = "Yes|No"]
  [id = "<ID selector>"]
  [class = "<Class selector>"]
  [style = "<Style properties>"]>

Examples:

<var expr = "strVar"/>

<var expr = "strVar" length = "0"/>

<var expr = "dblVar" length = "20" bz = "Yes"/>

<var expr = "?format(numPage)"/>

Attributes:

expr
Specifies a valid FinerEdge Publisher <expression> to be formatted into the document. An optional prefix consisting of a question mark ("?") character is used to specify a late evaluation expression. Please refer to the topic "Late evaluation expressions" within the chapter "FinerEdge Publisher Expressions" for more information on this subject.
sum
When an optional variable name is given, a running sum is stored in a variable name that is suffixed by "Sum" (e.g., if "Abc" was the variable given, the name would be "AbcSum"). The type of the variable will either be a <number> or <float> depending upon the resulting type of the expression. If the expression is a <string>, a <number> or <float> will be parsed from the contents.

In addition, the current number of times that the variable was summed is stored in a variable name that is suffixed by "Count". The Sum and Count variables are typically used within the header and footer tags.
char
The default character that is used when the resulting expression is an empty string (i.e., "").
length
The default length that is used when the resulting expression is an empty string (i.e., "").
bz
"Yes" indicates that a zero value for the <expression> results in a empty string. "No" (the default) indicates that a zero value is formatted "as is".
id
A style "id" previously defined with the style tag.
class
A style "class" previously defined with the style tag.
style
Inline style properties.
Description:

The var tag in FinerEdge Publisher is a special purpose "inline" element. As an inline element, the var tag can refer to a <Class selector>, <ID selector>, and specify inline style properties specific to the scope of the var tag itself.

The var tag takes the result of an <expression> specified by the attribute "expr" and formats it into the document's output. The result of the <expression> may be either a <number>, <float>, or <string>. Typically, the <expression> of a var tag uses one or more local, global, or external variables within it. Any carriage return, linefeed, or carriage return/linefeed pairs in a <string> are interpreted as a <BR/> action.

When the resulting expression of a var tag is an empty string (i.e., ""), the default character for a length value is substituted in the output. This behavior can be controlled both at the document level (i.e., a default for the entire document) and within the individual VAR tags themselves.

If default character and length values are supplied with a var tag, these values will override the document level for the respective values. Also, if default values are not specified either at the document level or within a specific var tag, a default character of "_" with a length of 10 is used instead.

A number of special features are also employed with the var tag. If the default length evaluates to a value of zero, no default characters will be substituted in the output. In addition, if the default character is an underscore (i.e., "_"), the "text-decoration:underline" style attribute will be employed along with absolute spaces to allow normal wraparound and justification to occur. Finally, if the default character is a space (i.e., " "), absolute spaces are used to insure the intended output along with normal wraparound.

» Back to the Table of Contents. «

while
<while expr = "<expression>">
  ...
</while>

Examples:

<while expr = "intVar <= 100">
  ...
</while>

Attributes:

expr
Specifies a valid FinerEdge Publisher <expression>.
Description:

The while tag is a conditional processing loop tag within a FinerEdge Publisher document (please refer to the for, "if", and select tags for additional conditional processing tags). While tags may be nested within other while tags.

The <expression> is evaluated each time through the loop. If the result of the <expression> is true, all tags and text following the WHILE tag and prior to the end while tag are processed. When the end WHILE tag is seen, processing continues at the beginning of the loop where the <expression> is again re-evaluated.

If the result of the <expression> is false, the loop is terminated and processing continues following the end while tag.

» Back to the Table of Contents. «

xmldata
<xmldata name = "<file name>|(<expression>)"/>

Examples:

<xmldata name = "C:\MyDirectory\MyFile.xml"/>

<xmldata name = "..\Data\MyFile.xml"/>

<xmldata name = "(strFile)"/>

Attributes:

name
Specifies the absolute or relative name of an XML file. Relative names are with respect to the document entity's directory path.
Description:

The xmldata tag opens an XML data file and establishes the XML hierarchy for that data file in preparation for processing the data. If a subsequent xmldata tag is seen, the first XML data file is automatically closed prior processing the second XML data file.

Please refer to the topic "XML Data Files" within the chapter "Application Data Interface" for more information.

» Back to the Table of Contents. «


Chapter 4 - Style Sheet Properties and Page Rules
Overview
FinerEdge Publisher adheres to the Cascading Style Sheet (i.e., CSS) specification for it's built-in style properties. CSS is a mature specification that supports the properties for paged output. FinerEdge Publisher is a User Agent that is built to utilize these CSS properties for paged output to generate documents that have rich pagination requirements.

A list of terms used with style properties and their respective descriptions is as follows:

Normal flow

The page layout proceeds within the normal document flow in a top-to-bottom manner.

Static positioning

Normal flow without involving any subsequent adjustment of the elements.

Relative positioning

Normal flow with the affected elements being offset relative to their static position. In many cases relative positioned elements specify no offset and instead are used as containers for absolutely positioned child elements.

Absolute positioning

Affected elements that are not part of normal flow and are offset from their first non-static parent element's position. If no non-static parent exists, this acts like fixed positioning. Since absolute positioning is not part of normal flow, absolute positioned elements that exceed the current page size will be ignored.

Fixed positioning

Affected elements that are not part of normal flow and are offset from the page itself, but with respect to any header, footer, left, or right page areas. Since fixed positioning is not part of normal flow, fixed positioned elements that exceed the current page size will be ignored.

Running positioning

Affected elements that are not part of normal flow. Running elements are utilized by margin rules within page rules and specifically by the content style property.

Block-level elements

Those elements that are outside the formatting of the current line (i.e., those elements that would begin a new line when they are encountered). Examples of block-level elements are div, table, td, and tr.

Inline elements

Those elements that affect the formatting within the current line. Inline elements include the tags span and var.

Inheritance

Elements can be nested within each other with respect to nesting rules (i.e., block-level elements cannot be nested within inline elements). Certain style properties will inherit their initial values from the style properties of the parent element. Those properties that inherit values from the parent element are marked as "inherited" in the style property definitions presented in this chapter.

In addition, elements and style properties can have a certain intrinsic size, especially in terms of width (see "box" properties). Style properties such as width, height, margin, border, and padding affect the resulting size that is available to a nested child element. Also, child elements can also adjust a parent element's width and height if a corresponding width or height style property is not explicitly specified or specified as "auto" (i.e., automatic).

Cascading

Cascading refers to the order in which styles are applied to an element. Please note that cascading is always performed in the following order, and always follows inheritance:

Contextual selectors
Class selectors
ID selectors
Inline styles

Contextual selector

FinerEdge Publisher supports single-level contextual selectors. For example, a default style may be applied to all spans or all divs. Td elements equate to div elements for contextual selectors. When cascading, specific style properties may be subsequently overridden by applying a class selector, ID selector, or inline style.

<Class selector>

Any number of class selectors may be specified and used in a document. When defined within the context of the style tag, a class selector consists of an optional tag name followed by a period character that is, in turn, followed user-defined key word (e.g., "span.myclass", ".myclass", etc.). When referenced from within the context of a particular tag's "class" attribute, a class selector specifies only the user-defined key word (e.g., "myclass"). If the optional tag name is present, the search is constrained to that particular tag name, otherwise the search is irrespective of the tag's name. In addition, multiple class selectors can be specified by separating them with a space character.

Td and tr elements equate to div elements for class selectors. Please refer to the style tag for additional information on class selectors. As an option, an <expression> may be used anywhere that a <Class selector> is specified in the attribute of a tag.

<ID selector>

Any number of ID selectors may be specified and used in a document. When defined within the context of the style tag, an ID selector consists of the "#" character followed by a user-defined key word (e.g., "#myid").

When referenced from within the context of a particular tag's "id" attribute, an ID selector specifies only the user-defined key word (e.g., "myid"). With respect to W3C rules, FinerEdge publisher will enforce that a tag's "id" attribute is unique throughout a document.

Please refer to the style tag for additional information on ID selectors. As an option, an <expression> may be used anywhere that an <ID selector> is specified in the attribute of a tag.

<Inline style>

Inline styles can be used with the following tags: div, span, table, td, tr, and var. Inline style specifications are meant for single use or when an individual needs to override preceding style properties as specified through inheritance, context, class, and ID selectors.

Page rules

Any number of page rules may be specified and used in a document.

When defined within the context of the style tag, a page rule begins with the text "@page".

Please refer to the topic "Page rules" for information regarding page rule definitions.

<Length unit>

Length units can be either relative to the current font (i.e., em and ex) or an absolute measurement (i.e., in, cm, mm, pt, and pc) as shown in the following table:

em
The average height of the element's font.
ex
The height of the letter "x" in the element's font.
in
Inches (1in = 2.54 cm).
cm
Centimeters.
mm
Millimeters.
pt
Points (1pt = 1/72 in).
pc
Picas (1pc = 1/6 in).
px
Pixels (usually 1px = 1/96 in).
<empty>
Twips (1 twip = 1/1440 in).

<Percentage unit>

Percentage units are extremely useful when setting a child element's dimensions relative to the dimensions of the parent element. For example, if a two-column table was needed where each column should be half the width of the table itself, we could simply indicate 50% and 50% for the two columns without knowing the actual dimensions of the TABLE element.

<Color unit>

FinerEdge Publisher supports a large list of color mnemonics. The applicable IDE ComboBox fields are always pre-filled with these color mnemonics.

An RGB (Red, Green, Blue) color is specified using the syntax "#rrggbb" where "rr" is the red component represented as two hex digits, "gg" is the green component represented as two hex digits, and "bb" is the blue component represented as two hex digits.

A CMYK (Cyan, Magenta, Yellow, Black) color is specified using the syntax "#ccmmyykk" where "cc" is the cyan component represented as two hex digits, "mm" is the magenta component represented as two hex digits, "yy" is the yellow component represented as two hex digits, and "kk" is the black component represented as two hex digits.

When the color mnemonic "transparent" is used with the "background-color" property of an element, any background image of the parent element to is allowed to "show through" the current element's box. As such, the "transparent" color mnemonic allows text to be precisely placed on top of an image by utilizing embedded elements within the parent element that specifies the background image.

Box Model

Whenever a block level element is used or a span tag is specified with a "width" greater than 0, a box is constructed that may have margins, padding, and visible borders. While constructing a box, FinerEdge Publisher adheres to the W3C box model. As such, the relationship of width and height to margins, padding, and borders is shown in the following diagram (note that the box width and height properties do not include margins, borders, or padding):


» Back to the Table of Contents. «

Style properties
<style properties>:

[?] <style property> [; <style property>]...

<style property>:

<property name> : <property value>

Examples:

font-family: 'Helvetica'; font-size: 10pt

width: 1.5in; border-style: solid; border-width: 1pt

Description:

The style properties are divided into groups that correspond to the panels of the IDE's style editor. However, because this manual is organized in a reference format, the style properties are presented in an alphabetical order.

The question mark ("?") character prefix, prior to any style properties, causes the style properties to be re-evaluated after each page break. The question mark prefix is only effective when used with the "style" attribute of the div, span, table, td, tr, and var tags. The question mark prefix is considered a form of late evaluation and takes precedence over any other form of late evaluation.

In contrast, a question mark ("?") character prior to an <expression> is used to specify a late evaluation expression. Please refer to the topic "Late evaluation expressions" within the chapter "FinerEdge Publisher Expressions" for more information on this subject.

» Back to the Table of Contents. «

Document references
FinerEdge Publisher document references allow information to be accumulated into a reference table during document processing and then be subsequently used during document rendering. As such, references can be used from anywhere in the document both before and after the definition of the references themselves.

References are defined by assigning values to the style properties "ref-search" and "ref-text" for an element. To create a reference, the "ref-search" property must designate a unique value. The "ref-text" property may also designate an optional value.

All references are automatically assigned an "index", starting from 1 in the order of appearance, in order to allow both absolute and relative referencing. The current reference location in the reference table is determined by the most recent reference search performed.

The value assigned to the "ref-search" property is used with the reference functions to search for a specific reference by performing regular expression pattern matching. Both the contents of the "ref-search" and "ref-text" properties can be used in a document by employing the reference functions as discussed in the chapter "Expressions and Functions".

» Back to the Table of Contents. «

background-color
inherited - default: white

background-color: <color unit>|([?]<expression>)

Examples:

background-color: yellow

Description:

Sets the background color for the current element. The box padding (if any) will be filled in with the background color of the current element. The border colors are independently specified via the "border-color" style. The box margin (if any) will be filled in with the background color of the parent element.

When the background color is set to "transparent" for an element, the background color and any image of the containing element will show through. For example, if an element is absolute positioned over the containing element, the containing element's background color and image will show through any transparent areas.

» Back to the Table of Contents. «

background-container
default: no-resize

background-container: no-resize|resize|
  resize-x|resize-y|([?]<expression>)

Examples:

background-container: resize

Description:

When background-container is specified along with a background-image, this property determines if the containing element will be initially resized to be the same size as the supplied image, which is with respect to any image scaling that may be also be performed. The option "no-resize" indicates that the container is not resized to the image. The option "resize" indicates that the container is resized in both the x and y directions. The options "resize-x" and "resize-y" resize the container in just the x and y directions respectively.

» Back to the Table of Contents. «

background-image
default: none

Background-image: <name-1> [ , <name-2> ]

<name-1> and <name-2>:

'<catalog name>'|'<external name>'|([?]<expression>)

<catalog name>:

Specifies an "image" <catalog name> within the currently active catalog. Each <catalog name> relates to an absolute file name, relative file name, or url. Relative names are with respect to the document entity's directory path.

Images stored within database BLOB fields are also supported by FinerEdge Publisher. For more information, see "Image Formats" in this topic.

<external name>:

Specifies an absolute file name, relative file name, or url. Relative names are with respect to the document entity's directory path.

Examples:

Background-image: 'company_logo'
Background-image: 'C:\images\logo.tif'
Background-image: 'http://www.mysite.com/logo.tif'
Background-image: '../images/logo.tif'

Description:

Places a background image inside an element's border but exclusive of any text padding specified.

PDF generation -

Optional catalog substitution is performed for <name-1> and subsequently converted into a DSC file name and output as the "/F" parameter. For OPI, if <name-2> is supplied, optional catalog substitution is performed and then output as the "/MainImage" parameter. Otherwise, if <name-2> is not supplied, the path prefix is eliminated from <name-1> and the resulting name is output as the "/MainImage" parameter.

PostScript generation -

Optional catalog substitution is performed for <name-1> and subsequently converted into a DSC file name and output as the "%%ImageFileName" DSC comment. For OPI, if <name-2> is supplied, optional catalog substitution is performed and then output as the "%%MainImage" DSC comment. Otherwise, if <name-2> is not supplied, the path prefix is eliminated from <name-1> and the resulting name is output as the "%%MainImage" DSC comment.

XPS generation -

Optional catalog substitution is performed for <name-1> and the image is subsequently embedded in the resulting XPS file. The <name-2> is not used with XPS generation as there is no OPI support in XPS.

HTMLPAGED, EPUB, and DOCX generation -

If <name-2> is supplied, catalog substitution is optionally performed and the result is output. Otherwise, optional catalog substitution is performed on <name-1>. If a file name is given (as opposed to a url), the result is subsequently converted into a valid file url.

Image masks -

FinerEdge Publisher supports masks for image types that have transparent or alpha channel capabilities. Images that have transparent capabilities (i.e., GIF and PNG) define a single color to designate areas of transparency. Images that have an alpha channel (i.e., PNG and TIFF) define an additional byte of information for each pixel. Each byte of additional information specifies the level of opaqueness from 0 to 255 (where 0 is fully transparent and 255 is fully opaque).

Regardless of the image format using transparency or alpha channel, an image mask of the transparent areas is generated and stored with the image. Since the image mask is composed of bits (where 0 is transparent and 1 is opaque), alpha channel values of 1-127 are interpreted as transparent while alpha channel values of 128-255 are interpreted as opaque.

The image mask is compatible with the concept of an image mask in all generated forms of PDF, PostScript, and XPS and can also be directly applied to Windows viewing and printing.

Open Prepress Interface (OPI) -

FinerEdge Publisher supports the Open Prepress Interface (OPI), version 2.0 standard, for both PDF and PostScript output. OPI is applicable to all currently supported versions of PDF and PostScript generation.

The Open Prepress Interface defines conventions which allow FinerEdge Publisher to use low and medium resolution images in place of the original high-resolution images for document layout and proofing. The low and medium resolution images are automatically created "on-the-fly" from the original high-resolution images by FinerEdge Publisher. When the final film or plates are created by the prepress system, the original high-resolution images are substituted for the low and medium resolution images.

Image formats:

SVG images -

SVG images that conform to the W3C Scalable Vector Graphics (SVG) specification. FinerEdge Publisher additionally implements the W3C proposed Scalable Vector Graphics Parameters specification for passing attribute parameters to SVG XML entities.

BMP images -

Monochrome, 4-bit and 8-bit palettized, and 24-bit True Color RGB colorspace images.

GIF images -

8-bit palettized RGB colorspace images.

JPEG images -

True Color RGB and CMYK colorspace images. (Note: CMYK colors are preserved by FinerEdge Publisher for both PDF and PostScript generations, and automatically converted to RGB colors for XPS, direct viewing, and printing.)

PNG images -

8-bit palettized and 24-bit True Color RGB colorspace images.

TIFF images -

Monochrome, 4-bit and 8-bit palettized, and 24-bit True Color RGB and CMYK colorspace images. (Note: CMYK colors are preserved by FinerEdge Publisher for both PDF and PostScript generations, and converted to RGB colors for XPS, direct viewing, and printing.)

Database images -

FinerEdge Publisher supports the use of images stored within database BLOB fields in any of the above image formats. In addition, BMP images embedded within OLE Objects (e.g., from MSAccess databases) are also supported by FinerEdge Publisher. The images are extracted as needed and cached on disk within temporary files for efficiency (i.e., duplicate images are not repeatedly extracted). (All temporary image files created are automatically removed by FinerEdge Publisher when document processing has been completed.)

The database variable name for the image BLOB field contains the absolute file name of the image's temporary disk file, which can then be subsequently used by this style. For more information, please refer to the topic "Database Definitions and Query Editor" within the FinerEdge Publisher IDE manual.

» Back to the Table of Contents. «

background-position
default: top left

background-position: top|center|bottom|([?]<expression>)
  left|center|right|([?]<expression>)

Examples:

background-position: center center

Description:

Determines how an image is positioned within the current element. The first option specifies the image's vertical alignment while the second option specifies the image's horizontal alignment. Any background-repeat specification will always follow after the positioning of the image within the current element.

» Back to the Table of Contents. «

background-repeat
default: repeat

background-repeat: repeat|repeat-x|
  repeat-y|no-repeat|([?]<expression>)

Examples:

background-repeat: no-repeat

Description:

When a background-image is specified, this property determines how the image is to be repeated. The option "no-repeat" indicates that the image is not to be repeated. The option "repeat" indicates that the image is to be repeated in both the x (left-to-right) and y (top-to-bottom) directions. The options "repeat-x" and "repeat-y" repeat the image in just the x and y directions respectively.

» Back to the Table of Contents. «

background-presize
default: no

background-presize: auto|cover|contain|<number constant>|(<expression>)

Examples:

background-presize: cover

Description:

Proportional pre-scaling of images is supported for all types of cross-media output formats. Whereas the "background-size" property will scale the images at display time, this property will scale images prior to being output in the resulting media type.

A common notion is to pre-scale huge images to twice the size of the parent element's box, which will preserve the image integrity for document "zooming" purposes and result in a much smaller output file. Then, the images are subsequently scaled down for actual display by using the "background-size" property.

The mnemonic "cover" will non-proportionally pre-scale the image to fill the size of the parent element's box. This is especially useful for SVG images that show, for example, gradiants or other vector graphics that maintain their appearance when non-proportionally scaled.

The mnemonic "contain" will proportionally pre-scale the image to the maximum size of the parent element's box. In contrast, the <number constant> is a floating point factor where a value of 1.0 implies pre-scaling the image.

However, unlike the "background-size" property, which scales relative to the image's size, this property scales relative to the size of the parent element. Therefore, a value of 2.0 will proportionally pre-scale the image to twice the size of the parent element.

» Back to the Table of Contents. «

background-size
default: no

background-size: auto|contain|<number constant>|([?]<expression>)

Examples:

background-size: contain

Description:

Proportional scaling of images is supported for all types of cross-media output format. The mnemonic "contain" will proportionally scale the image to the maximum size of the parent element's box dimensions. In contrast, a <number constant> is a floating point factor where the value of 1.0 implies no scaling of the image. A value of 0.5 will proportionally scale the image to half it's normal size while a value of 2.0 will proportionally scale the image to twice it's normal size.

» Back to the Table of Contents. «

background-type
default: unknown

background-type: unknown|image/bmp|image/gif|
  image/jpeg|image/png|image/svg+xml|image/tiff|([?]<expression>)

Examples:

background-type: image/jpeg

Description:

When a background-image is specified, this property optionally determines the mime type of the image. When this property is set, it overrides the determination of the image type based upon the extension of the image name.

» Back to the Table of Contents. «

border-color
default: black

border-color: <border-color> [<border-color>
  [<border-color> [<border-color>]]]

<border-color>:

<color unit>|([?]<expression>)

Examples:

border-color: green

Description:

Designates a border color to the border that is around the element and inbetween the margin and padding (please refer to the box diagram at the beginning of this chapter). Borders are not applied unless the "border-style" is set to a value other than "none" for the respective side(s). From 1 to 4 values may be given for a border color setting and are interpreted as follows:

1 value
Sets the border color for all 4 sides.
2 values
Sets the border color for the (top, bottom) and (right, left) sides respectively.
3 values
Sets the border color for the (top) and (right, left) and (bottom) sides respectively.
4 values
Sets the border color for the (top) and (right) and (bottom) and (left) sides respectively.

» Back to the Table of Contents. «

border-style
default: none

border-style: <border-style> [<border-style>
  [<border-style> [<border-style>]]]

<border-style>:

none|solid|dotted|dashed|double|groove|ridge|inset|outset|
  ([?]<expression>)

Examples:

border-style: solid

Description:

Applies a border style to the border that is around the element and inbetween the margin and padding (please refer to the box diagram at the beginning of this chapter). The "border-style" property effectively makes the border(s) visible and factored into the box layout. From 1 to 4 values may be given for a border style setting and are interpreted as follows:

1 value
Sets the border style for all 4 sides.
2 values
Sets the border style for the (top, bottom) and (right, left) sides respectively.
3 values
Sets the border style for the (top) and (right, left) and (bottom) sides respectively.
4 values
Sets the border style for the (top) and (right) and (bottom) and (left) sides respectively.

The possible options and their respective descriptions for broder-style are as follows:

none
No border.
solid
Single solid border.
dotted
Border with dots.
dashed
Border with dashes.
double
Double solid border.
groove
Grooved 3-D border.
ridge
Ridge 3-D border.
inset
Inset 3-D border.
outset
Outset 3-D border.

» Back to the Table of Contents. «

border-width
default: 1pt

border-width: <border> [<border> [<border> [<border>]]]

<border>:

<number constant>|([?]<expression>) <length unit>|<percentage unit>

Examples:

border-width: 3pt

Description:

Designates a border around the element and inbetween the margin and padding (please refer to the box diagram at the beginning of this chapter). Borders are not applied unless the "border-style" is set to a value other than "none" for the respective side(s). From 1 to 4 values may be given for a border setting and are interpreted as follows:

1 value
Sets the border-width for all 4 sides.
2 values
Sets the border-width for the (top, bottom) and (right, left) sides respectively.
3 values
Sets the border-width for the (top) and (right, left) and (bottom) sides respectively.
4 values
Sets the border-width for the (top) and (right) and (bottom) and (left) sides respectively.

» Back to the Table of Contents. «

bottom
default: 0

bottom: auto|<number constant>|([?]<expression>)
  <length unit>|<percentage unit>

Examples:

bottom: 2cm

Description:

This style property is only applicable if the "position" style property is set to either "relative", "absolute", or "fixed". When the "position" style property is set to "relative", this property determines the element's additional vertical positioning relative to its normal flow "static" position (with a positive value indicating up and a negative value indicating down). In many cases relative positioned elements specify no offset and instead are used as containers for absolutely positioned child elements.

When the "position" style property is set to "absolute", this property determines the element's vertical positioning with respect to the first non-static parent element's bottom position.

When the "position" style property is set to "fixed", this property determines the element's vertical positioning with respect to the page itself. In all cases, when the properties "top" and "bottom" are simultaneously set, the "top" property takes precedence.

» Back to the Table of Contents. «

clear
default: none

clear: none|left|right|both|(<expression>)

Examples:

clear: both

Description:

Utilized with a block-level element in order to position it vertically and immediately following an applicable floating element. When the "clear" is set to "left", positioning occurs if the left edge of the block-level element is adjacent to an applicable floating element. When the "clear" is set to "right", positioning occurs if the right edge of the block-level element is adjacent to an applicable floating element. When the "clear" is set to "both", positioning occurs if either the left or right edge of the block-level element is adjacent to an applicable floating element.

» Back to the Table of Contents. «

color
inherited - default: black

color: <color unit>|([?]<expression>)

Examples:

color: blue

Description:

Sets the foreground color for both the stroke and fill of the text.

» Back to the Table of Contents. «

colspan
default: 0 (implied 1)

colspan: <number constant>|([?]<expression>)

Examples:

colspan: 2

Description:

The number of parent table columns that are used by this element, which is applicable to div, td, and table elements that are contained by a parent table. In addition, the number of columns used by this element is further constained by the number of columns remaining in the current row of the parent table.

» Back to the Table of Contents. «

content
default: none

content: element(running name)|(<expression>)

Examples:

content: element(myheader)

Description:

This property is used by margin rules within page rules. When the "content" property is set to "element(running name)", the running name references an element that was identified by the position style property referencing the same running name, which is simply a name that uniquely identifies the running element.

» Back to the Table of Contents. «

decoration-align
inherited - default: none

decoration-align: left|right|center|justify|([?]<expression>)

Examples:

decoration-align: justify

Description:

This style property only has an effect if the "text-decoration" property is set to an option other than "none". In this case, "decoration-align" will cause the line to be drawn to the indicated left, right, or both left and right edges of the element (with respect to padding, etc.). This style property is most often used with a span tag when defining a field on a form where the text may be less than the width of the element.

left
Align to left edge of element.
right
Align to right edge of element.
center
No alignment to edge of element.
justify
Align to both left and right edge of element.

» Back to the Table of Contents. «

float
default: none

float: none|left|right|(<expression>)

Examples:

float: right

Description:

Utilized with a block-level element in order to float it either to the "left" or "right" within a parent block-level element. If an element is floated to the "left" of a parent element, subsequent text and elements are positioned (wrap-around) to the right of the floated element. If an element is floated to the "right" of a parent element, subsequent text and elements are positioned (wrap-around) to the left of the floated element. Float is reset to "none" when "position" is set to "absolute" or "fixed" for an element.

» Back to the Table of Contents. «

font-family
inherited - default: Times

font-family: <family-name> [, <family-name>]...

<family-name>:

'<internal name>'|'<external name>'|'<catalog name>'|([?]<expression>)

<internal name>:

The following font names are known internally by FinerEdge Publisher and will translate correctly to all output formats (i.e., Viewed, Printed, PDF, PostScript, XPS, HTMLPAGED, EPUB, etc.). The column "Windows" applies to the Viewer, Printer, XPS, HTMLPAGED and HTML formats whereas the columns Normal, Bold, Italic, and Bold-Italic apply to the PDF and PostScript formats.

Name
Windows
Normal
Bold
Italic
Bold-Italic
Courier
Courier New
Courier
Courier-Bold
Courier-Oblique
Courier-BoldOblique
Helvetica
Arial
Helvetica
Helvetica-Bold
Helvetica-Oblique
Helvetica-BoldOblique
Symbol
Symbol
Symbol
Symbol
Symbol
Symbol
Times
Times New Roman
Times-Roman
Times-Bold
Times-Italic
Times-BoldItalic
ZapfDingbats
ZapfDingbats
ZapfDingbats
ZapfDingbats
ZapfDingbats
ZapfDingbats

<external name>:

Specifies a system-known font name, which is the most direct way to designate a font but also does not provide for font embedding options and font name indirection.

<catalog name>:

Specifies a "font" <catalog name> within the currently active catalog. Each <catalog name> is composed of the 5 components that were presented along with the <internal name> shown above (i.e., Windows, Normal, Bold, Italic, and Bold-Italic). It's highly recommended that the FinerEdge Publisher IDE catalog editor be used to construct font entities.

Examples:

font-family: 'Times'
font-family: 'Times New Roman'

Description:

Set the element's font to one of the names specified in the font-family list. Each name must be either an internally known name, externally known name, or a catalog name. If the first name in the list is not known, the subsequent names are selected in the order of appearance until a known font name is encountered.

» Back to the Table of Contents. «

font-size
inherited - default: 10pt

font-size: (<number constant>|([?]<expression>) <length unit>)|
  xx-small|x-small|small|medium|
  large|x-large|xx-large|larger|smaller

Examples:

font-size: 10pt
font-size: small
font-size: larger

Description:

Set the size of the font for the selected font-family. The length unit "pt" (i.e., points) is most often used to select the size of the font (however, any length unit may be used to select the font size). If the line-height is less than 120% of the font size, the line-height is automatically adjusted up to be 120% of the font size.

The fixed size options (xx-small, x-small, small, medium, large, x-large, xx-large) utilize 12pt for "medium" and plus/minus 2pt between subsequent options. The relative size options (larger, smaller) use the parent element font size and plus/minus 2pt.

» Back to the Table of Contents. «

font-style
inherited - default: normal

font-style: normal|italic|([?]<expression>)

Examples:

font-style: italic

Description:

Set a normal or italic face for the selected font-family. The option "italic" implies "oblique" if the font-family has an oblique face.

» Back to the Table of Contents. «

font-weight
inherited - default: normal

font-weight: normal|bold|([?]<expression>)

Examples:

font-weight: bold

Description:

Set the weight of the font face for the selected font-family. The options "normal" and "bold" are supported by most fonts except Symbol and ZapfDingbats.

» Back to the Table of Contents. «

gutter
default: none

gutter: auto|<number constant>|([?]<expression>)
  <length unit>|<percentage unit>

Examples:

gutter: .25in

Description:

The "gutter" property adds an alternating left or right margin to each page. In addition when set to a value greater than zero, the gutter property invokes even/odd page processing. With even/odd page processing, the document will be generated with an even number of pages. In addition, the pagebr tag also processes even page breaks.

» Back to the Table of Contents. «

height
default: 0

height: auto|<number constant>|([?]<expression>)
  <length unit>|<percentage unit>

Examples:

height: 3in

Description:

Designates the height of a box element, which does not include any margins, borders, or padding. When an implicit or explicit page break is encountered, the box element is closed with respect to any margins, borders, or padding that have been specified. When additional columns exist (i.e., for table elements), they are subsequently processed prior to performing a physical page break (to include any embedded or nested columns). Then on the new page, all previously active box elements are re-opened with respect to any margins, borders, or padding.

When the content of a box element exceeds it's height and the style property "overflow" is set to "visible", the height of the box is automatically increased to accommodate the additional information. However, if the style property "overflow" is set to "hidden" and the box height is 0, the text is truncated prior to it wrapping to the second line (i.e., one line of text is output).

In contrast, if the style property "overflow" is set to "hidden" and the box height has been explicitly set, the box height will not be automatically increased. Under these conditions, when the content of the box exceeds its height, the content is truncated following the last line of text that can be output within the dimensions of the box element.

An element's width and/or height can be automatically set by the width and/or height of an image. That is, if a "background-image" is specified with an element such as a div, span, or table, the element's width and/or height can be automatically determined by the interpreted size of the image itself. When a "background-image" is specified with an element and the element's "height" property is either not specified, a value of 0, or a value of "auto", the height of the element will be determined from the interpreted height of the image.

» Back to the Table of Contents. «

left
default: 0

left: auto|<number constant>|([?]<expression>)
  <length unit>|<percentage unit>

Examples:

left: 2cm

Description:

This style property is only applicable if the "position" style property is set to either "relative", "absolute", or "fixed". When the "position" style property is set to "relative", this property determines the element's additional horizontal positioning relative to its normal flow "static" position (with a positive value indicating up and a negative value indicating down). In many cases relative positioned elements specify no offset and instead are used as containers for absolutely positioned child elements.

When the "position" style property is set to "absolute", this property determines the element's horizontal positioning with respect to the first non-static parent element's bottom position.

When the "position" style property is set to "fixed", this property determines the element's horizontal positioning with respect to the page itself. In all cases, when the properties "left" and "right" are simultaneously set, the "left" property takes precedence.

» Back to the Table of Contents. «

line-height
inherited - default: 120%

line-height: <number constant>|([?]<expression>)
  <length unit>|<percentage unit>

Examples:

line-height: 120%

Description:

Designates the distance between the baselines of two adjacent lines of text. The line-height is most often set to be 120% of the font-size (the default). However, if the line-height has been explicitly set and is less than 100% of the font size, the line-height is automatically adjusted up to be 100% of the font size.

If the font-size is changed within a line of text, the line-height will be a minimum of 100% (and will usually default to 120%) of the largest font-size unless it has been explicitly set to another value.

» Back to the Table of Contents. «

margin
default: 0

margin: <margin> [<margin> [<margin> [<margin>]]]

<margin>:

auto|<number constant>|([?]<expression>) <length unit>|<percentage unit>

Examples:

margin: 1pt

Description:

Apply a margin around the element and outside of the border and/or padding (please refer to the box diagram at the beginning of this chapter). The margin area will always be filled with the background-color of the parent element. From 1 to 4 values may be given for a margin setting and are interpreted as follows:

1 value
Sets the margin for all 4 sides.
2 values
Sets the margin for the (top, bottom) and (right, left) sides respectively.
3 values
Sets the margin for the (top) and (right, left) and (bottom) sides respectively.
4 values
Sets the margin for the (top) and (right) and (bottom) and (left) sides respectively.

A value of "auto" calculates a margin value that centers the element within its parent element, either horizontally, vertically, or both. When a value of "auto" is used, the applicable height or width of both the element and parent element must be set (otherwise a value of 0 is used).

» Back to the Table of Contents. «

model
default: HF-LR

model: HF-LR|LR-HF|([?]<expression>)

Examples:

model: LR-HF

Description:

The "model" property controls how the margin rule page areas are formatted. If the "HF-LR" model is specified, the headers and footers extend to the page margins and the left and right page areas fall vertically within the headers and footers. If the "LR-HF" model is specified, the left and right page areas extend to the page margins and the headers and footers fall horizontally within the left and right page areas.

» Back to the Table of Contents. «

OPI
default: false

OPI: true|false|([?]<expression>)

Examples:

OPI: true

Description:

When "true", OPI instructions should be output with the element's image. When "false", OPI instructions should not be output with the element's image.

Whenever one or more OPI images are included in either PDF or PostScript output, an ASCII text file is also created that contains the names of the OPI images. The content of the ASCII text file allows the authors to know which particular images need to be transferred to the prepress image server.

The ASCII text file has the following naming convention:

<ResultFile>_OPI.txt

The content of the ASCII text file are as follows (every two lines in the file represents a single OPI image):

<name-1><carriage return/linefeed>
<horizontal tab><name-2><carriage return/linefeed>
...

» Back to the Table of Contents. «

overflow
default: visible

overflow: visible|hidden|([?]<expression>)

Examples:

overflow: hidden

Description:

When this property is set to "hidden" and the box height is 0, the text is truncated prior to it wrapping to the second line (i.e., one line of text is output). In contrast, if this property is set to "hidden" and the box height has been explicitly set, the text is truncated following the last line of text that can be output within the dimensions of the box.

If this property is set to "visible" and the contents of a box exceeds its height, the box is automatically increased in height to accommodate the additional information. This property is particularly useful with a span tag when defining a field on a form that cannot exceed a given width and cannot wrap to the next line.

» Back to the Table of Contents. «

padding
default: 0

padding: <padding> [<padding> [<padding> [<padding>]]]

<padding>:

<number constant>|([?]<expression>) <length unit>|<percentage unit>

Examples:

padding: 1pt

Description:

Apply a padding around the element and inside of the margin and/or border (please refer to the box diagram at the beginning of this chapter). The padding area will always be filled with the background-color of the current element. From 1 to 4 values may be given for a padding setting and are interpreted as follows:

1 value
Sets the padding for all 4 sides.
2 values
Sets the padding for the (top, bottom) and (right, left) sides respectively.
3 values
Sets the padding for the (top) and (right, left) and (bottom) sides respectively.
4 values
Sets the padding for the (top) and (right) and (bottom) and (left) sides respectively.

» Back to the Table of Contents. «

page-break-after
default: auto

page-break-after: auto|always|left|right|(<expression>)
  [<number constant>|([?]<expression>)
   <length unit>|<percentage unit>]

Examples:

page-break-after: always

page-break-after: always 3in

Description:

If the "page-break-after" property is set to "auto" for a formatting element (e.g., div, span, or table), the content of the element can be split over a logical page break (the default behavior).

However, if the "page-break-after" property is set to "always", "left", or "right" for a formatting element, a logical page break is performed after the element. Subsequent elements are formatted either on the next page ("always"), the next even page ("left"), or the next odd page ("right"). When an optional height follows a value of "always", "left", or "right" and the remaining page height is greater than or equal to this value, no page break is implied (otherwise the action is performed as previously described).

.

» Back to the Table of Contents. «

page-break-before
default: auto

page-break-before: auto|always|left|right|(<expression>)
  [<number constant>|([?]<expression>)
   <length unit>|<percentage unit>]

Examples:

page-break-before: always

page-break-before: always 3in

Description:

If the "page-break-before" property is set to "auto" for a formatting element (e.g., div, span, or table), the content of the element can be split over a logical page break (the default behavior).

However, if the "page-break-before" property is set to "always", "left", or "right" for a formatting element, a logical page break is performed prior to the element. The element is then formatted either on the next page ("always"), the next even page ("left"), or the next odd page ("right"). When an optional height follows a value of "always", "left", or "right" and the remaining page height is greater than or equal to this value, no page break is implied (otherwise the action is performed as previously described).

» Back to the Table of Contents. «

page-break-inside
default: auto

page-break-inside: auto|avoid|avoidrow|(<expression>)
  [<number constant>|([?]<expression>)
   <length unit>|<percentage unit>]

Examples:

page-break-inside: avoid

page-break-inside: avoid 3in

Description:

If the "page-break-inside" property is set to "auto" for a formatting element (e.g., div, span, or table), the content of the element can be split over a logical page break (the default behavior).

However, if the "page-break-inside" property is set to "avoid" for a formatting element, the entire element (including it's content) must fit on the remaining portion of the current page otherwise a logical page break is performed and the element is formatted on the next page. When an optional height follows a value of "avoid" and the remaining page height is greater than or equal to this value, no page break is implied (otherwise the action is performed as previously described).

As another alternative, if the "page-break-inside" property is set to "avoidrow" for a table element (that may contain variable height rows), an entire row (including it's content) must fit on the remaining portion of the current page otherwise a logical page break is performed and the row is formatted on the next page. When an optional height follows a value of "avoidrow" and the remaining page height is less than this value, a page break is performed prior to processing the table element. This can be used to insure that any blockheaders can fit on the remaining page along with an optional number of table rows.

The "page-break-inside" property should only be set to "avoid" or "avoidrow" for those elements that actually require this type of formatting. Overuse of this property with a value of "avoid" or "avoidrow" can result in some amount of performance degradation during document processing due to excessive checkpointing.

» Back to the Table of Contents. «

position
default: static

position: static|relative|absolute|fixed|running(running name)|(<expression>)

Examples:

position: absolute

position: running(myheader)


Description:

If the "position" property is set to "static" (the default value), the formatting element is part of normal flow. That is, the formatting element participates with all pagination mechanisms in a normal and predictable manner. The properties "left", "top", "right" and "left" are not applicable for the position "static".

When the "position" property is set to "relative", the formatting element is part of normal flow, but is further positioned relative to its "static" normal flow location by utilizing the "left", "top", "right" and "left" properties. In many cases relative positioned elements specify no offset and instead are used as containers for absolutely positioned child elements.

If the "position" property is set to "absolute", the formatting element is taken out of normal flow and is positioned relative to the first non-static parent element by utilizing the "left", "top", "right" and "left" properties.

However, if the "position" style property is set to "fixed", the formatting element is taken out of normal flow and is positioned relative to the page itself. Since absolute and fixed positioning are not part of normal flow, elements that exceed the current page size will be ignored.

Also, if the "position" property is set to "running(running name)", the formatting element is taken out of normal flow. This can only be used with outer div or table elements. Running elements are utilized by margin rules within page rules and specifically by the content style property referencing the same running name, which is simply a name that uniquely identifies the running element.

» Back to the Table of Contents. «

ref-keys
default: none

ref-keys: '<string constant>'|([?]<expression>)
  [, '<string constant>'|([?]<expression>)]...

Examples:

ref-keys: 'C','01'

ref-keys: (strKey1),(strKey2)

Description:

The values assigned to this property represent the keys for the reference that are used in sorting. The "refsort" function may be subsequently used to temporarily sort the reference table based upon any combination of the specified reference keys.

» Back to the Table of Contents. «

ref-level
default: 1

ref-level: <number constant>|([?]<expression>)

Examples:

ref-level: 2

Description:

The numeric level of this reference item starting from the default value of 1, which is the top-most outline level. If gaps exist between the levels of two adjacent reference items for an outline, additional items will be automatically created to fill in the outline hierarchy. (However, these additional items will not refer to a specific location in the document.)

» Back to the Table of Contents. «

ref-level-key
default: none

ref-level-key: <string constant>|([?]<expression>)

Examples:

ref-level-key: 'MyKey'

Description:

The optional key of this reference item relative to the declared numeric level. This allows multiple outlineitems for an outline to be declared at the same level with different keys. The appropriate outlineitem is selected based upon the key of the reference item.

» Back to the Table of Contents. «

ref-link
default: none

ref-link: '<string constant>'|([?]<expression>)

Examples:

ref-link: 'C01'

ref-link: (strSearch)

Description:

The value assigned to this property creates a hypertext link to a reference having the same "ref-search" name. This property is only applicable to box elements and is compatible with all output types.

Hypertext links will be generated for the View, PDF, XPS, HTMLPAGED and EPUB outputs.

» Back to the Table of Contents. «

ref-search
default: none

ref-search: '<string constant>'|([?]<expression>)

Examples:

ref-search: 'C01'

ref-search: (strSearch)

Description:

The value assigned to the this property must be unique and is used with the reference functions to search for and retrieve a specific reference by performing regular expression pattern matching. The contents of the "ref-search", "ref-text", and other reference properties can be retrieved in a document via the reference functions.

The "OLDef" prefix can be utilized to populate the online viewer's outline panel, and to generate PDF bookmarks and XPS outline items.

» Back to the Table of Contents. «

ref-text
default: none

ref-text: '<string constant>'|([?]<expression>)

Examples:

ref-text: 'Sample reference text'

ref-text: (strText)

Description:

The optional value assigned to the this property supplies additional text that is stored with the reference. Both the contents of the "ref-search" and "ref-text" properties can be retrieved in a document by the reference functions. If a value is assigned to this property, the "ref-search" property must also be specified.

» Back to the Table of Contents. «

right
default: 0

right: auto|<number constant>|([?]<expression>)
  <length unit>|<percentage unit>

Examples:

right: 2cm

Description:

This style property is only applicable if the "position" style property is set to either "relative", "absolute", or "fixed". When the "position" style property is set to "relative", this property determines the element's additional horizontal positioning relative to its normal flow "static" position (with a positive value indicating up and a negative value indicating down). In many cases relative positioned elements specify no offset and instead are used as containers for absolutely positioned child elements.

When the "position" style property is set to "absolute", this property determines the element's horizontal positioning with respect to the first non-static parent element's bottom position.

When the "position" style property is set to "fixed", this property determines the element's horizontal positioning with respect to the page itself. In all cases, when the properties "left" and "right" are simultaneously set, the "left" property takes precedence.

» Back to the Table of Contents. «

rotate
default: no

rotate: <number constant>|(<expression>)

Examples:

rotate: 90
rotate: -90

Description:

Rotate the element clockwise the specified number of degrees. If a negative number is specified, rotate the element counter-clockwise. All embedded text and elements are rotated by this operation, however embedded elements may not be rotated within already rotated parent elements.

The angle of rotation can be either 0 (i.e., no rotation), 90 (i.e., -270), or 270 (i.e., -90).

» Back to the Table of Contents. «

rowspan
default: 0 (implied 1)

rowspan: <number constant>|([?]<expression>)

Examples:

rowspan: 2

Description:

The number of parent table rows that are used by this element, which is applicable to div, td, and table elements that are contained by a parent table. In addition, the number of rows used by this element is further constained by the number of rows remaining in the parent table.

» Back to the Table of Contents. «

size
default: letter portrait

size: <size>|(<expression>) portrait|landscape|(<expression>)

<size>:

Letter|Tabloid|Ledger|Legal|Statement|Executive|
A3|A4|A5|B4|B5|Folio|Quarto|10x14|11x17|
Env9|Env10|Env11|Env12|Env14|EnvDL|
EnvC3|EnvC4|EnvC5|EnvC6|EnvC65|EnvB4|EnvB5|EnvB6|
EnvItaly|EnvMonarch|EnvPersonal|
FanfoldUS|FanfoldStdGerman|FanfoldLglGerman|
<length> [ <length> ]
<length>:

<number constant>|(<expression>) <Length unit>

Examples:

size: a4 landscape

size: 6in 4in portait

Description:

The "size" property indicates the page size in terms of width and height along with an orientation of either "portrait" or "landscape". If a known paper name is specified, the width and height are set appropriately. However, if a single <length> is given, the width and height are both set to that value. Finally, if both <length> and <length> are given, width and height are set to those values respectively.

» Back to the Table of Contents. «

text-align
inherited - default: left

text-align: left|right|center|justify|([?]<expression>)

Examples:

text-align: left

Description:

Designates the horizontal alignment of each line of text within the current element. If the option "justify" is selected, all lines will be fully justified (i.e., left and right aligned) except the last line of the element or lines that have been prematurely ended with a br, colbr, or pagebr tag.

left
Left justified text.
right
Right justified text.
center
Centered text.
justify
Fully justified text.

» Back to the Table of Contents. «

text-decoration
inherited - default: none

text-decoration: none|underline|overline|
  line-through|([?]<expression>)

Examples:

text-decoration: underline

Description:

This style property causes a horizontal underline, overline, or line-through to be drawn along with the text of the element.

none
No line is drawn.
underline
Draw a line along the baseline of the text.
overline
Draw a line along the top of the text.
line-through
Draw a line through the middle of the text.

» Back to the Table of Contents. «

text-indent
inherited - default: 0

text-indent: <number constant>|([?]<expression>)
  <length unit>|<percentage unit>
  [hanging]

Examples:

text-indent: .5in

text-indent: 5mm hanging

Description:

Indicates the indentation that will occur within a block-level element. If the key word "hanging" is not used, only the first line of a block-level element is indented (otherwise all lines but the first line of a block-level element are indented).

Note: For HTML output, the key word "hanging" is a CSS level 3 enhancement and, as such, will only affect browsers that adhere to the CSS level 3 standard.

» Back to the Table of Contents. «

top
default: 0

top: auto|<number constant>|([?]<expression>)
  <length unit>|<percentage unit>

Examples:

top: 2cm

Description:

This style property is only applicable if the "position" style property is set to either "relative", "absolute", or "fixed". When the "position" style property is set to "relative", this property determines the element's additional vertical positioning relative to its normal flow "static" position (with a positive value indicating up and a negative value indicating down). In many cases relative positioned elements specify no offset and instead are used as containers for absolutely positioned child elements.

When the "position" style property is set to "absolute", this property determines the element's vertical positioning with respect to the first non-static parent element's bottom position.

When the "position" style property is set to "fixed", this property determines the element's vertical positioning with respect to the page itself. In all cases, when the properties "top" and "bottom" are simultaneously set, the "top" property takes precedence.

» Back to the Table of Contents. «

vertical-align
default: baseline

vertical-align: baseline|sub|super|
  top|middle|bottom|([?]<expression>)

Examples:

Vertical-align: baseline

Description:

Sets the vertical alignment of text for a given font-size within the line height. All vertical alignment is performed relative to the baseline of the current line. The baseline of the current line is dynamic and is ultimately determined after all of the text fragments for the line have been calculated (due to changing font-sizes, etc.). Unless the line-height has been explicitly enlarged beyond 120% of the current font-size or differing vertical sized elements exist within a line, the vertical alignment might not have a visible effect.

When vertical-align is applied to a box span, the box will be aligned to the top, middle, or bottom (default) of the current line. With a box span, "baseline" and "sub" result in the same action as "bottom" while "super" results in the same action as "top".

baseline
Baseline of the font.
sub
Subscript.
super
Superscript.
top
Top of the line.
middle
Middle of the line.
bottom
Bottom of the line.

» Back to the Table of Contents. «

width
default: 0

width: auto|<number constant>|([?]<expression>)
  <length unit>|<percentage unit>

Examples:

width: 1.5in

Description:

Designates the width of a box element, which does not include any margins, borders, or padding. In the case of a span tag, this property differentiates between an inline span (i.e., a width was not specified or was 0) and a box span (i.e., a width greater than 0). With a box span, since there is no baseline, it is by default aligned to the bottom of the current line unless changed with the vertical-align property.

An element's width and/or height can be automatically set by the width and/or height of an image. That is, if a "background-image" is specified with an element such as a div, span, or table, the element's width and/or height can be automatically determined by the interpreted size of the image itself.

When a "background-image" is specified with an element and the element's "width" property is either not specified, a value of 0, or a value of "auto", the width of the element will be determined from the interpreted width of the image.

» Back to the Table of Contents. «

word-spacing
inherited - default: 0

word-spacing: <number constant>|([?]<expression>)
  <length unit>|<percentage unit>

Examples:

word-spacing: 98%

Description:

A value of normal or a zero value absolute measurement implies default word spacing, which is usually optimal for cross-media generation. Non-percent measurements may be either positive or negative and the resulting values are then factored into the default word spacing.

Percentage values are relative to the default setting being 100%. Since the default word padding is 5% of a word's width (with a maximum of half the width of a space character in the selected font), then a value of 95% represents no default word padding.

» Back to the Table of Contents. «

z-index
default: auto

z-index: auto|<number constant>|([?]<expression>)

Examples:

z-index: 10

Description:

The z-index is applicable when the style property position is set to either "absolute" or "fixed". This property determines the order that the absolutely positioned elements are placed on the page, from lowest to highest, and after the normal flow elements have been formatted. When a number is given, only positive values have meaning on each page starting from 0 (a value of "auto" is the same as setting the z-index to 0).

» Back to the Table of Contents. «

Page rules
@page [<name>] [:first|:blank:left:right]... {
  [<style properties>|<margin rules>]...
}

<margin rules>:

top|top-center|bottom|bottom-center|left|left-middle|right|right-middle {
  [<style properties>...
}

Examples:

@page { background-image:'../images/pat1.png'; background-position:center center; background-repeat:repeat }

@page {
model:HF-LR; size:letter portrait; gutter:.25in; margin:.5in;
@top-center {
background-color:lightblue; content:element(header1);
}
@bottom-center {
background-color:lightgreen; content:element(footer1);
}
@left-middle {
background-color:lightpink; content:element(left1); height:100%; width:1in;
}
@right-middle {
background-color:yellow; content:element(right1); height:100%; width:1in;
}
}

Description:

Page rules in FinerEdge Publisher adhere to the following W3C specifications:

CSS Paged Media Module Level 3 - http://www.w3.org/TR/css3-page (Calculate specificity)
CSS Generated Content for Paged Media Module - http://www.w3.org/TR/css-gcpm-3

Any number of page rules may be specified and used in a document. Page rules are not directly referenced from any tag. For each page, a page rule is selected and utilized from the currently existing set of page rules when the initial output is done for each page. For example, style tags and style "position:running(name)" elements would not cause output for a page and so are usually defined near the beginning of document processing.

Documents are by default not performing odd/even page processing, which means only page 1 is considered the first page. However if the left-middle and right-middle margin areas are defined in separate page rules (as opposed to being defined in the same page rule), odd/even page processing is enabled. In addition, if the style property "gutter" is specified with a length greater than 0, odd/even page processing is also enabled. When odd/even page processing, the both pages 1 and 2 are considered first pages.

Page rules can be given a <name>. However as the "page" style property is not currently implemented, all named page rules will be currently be excluded from page rule selection.

The following pseudo-classes can be applied to affect the selection applicability and priority for pages:

:first
Applies to first pages being output.
:blank
Applies to blank pages being output.
:left
Applies to left pages being output.
:right
Applies to right pages being output.
Page rules that are subsequently defined in a document may be selected over previously defined page rules thus allows page rules to conditionally change between pages. However changing the page size once it's established in a document is not currently supported.

The page rule utilized for a given page is selected by the following ordered steps:

1.
Exclude page rules with <name> specified.
2.
If not first page, exclude page rules with the :first pseudo-class in them.
3.
If not blank page, exclude page rules with the :blank pseudo-class in them.
4.
If not left page, exclude page rules with the :left pseudo-class in them and no :right pseudo-class.
5.
If not right page, exclude page rules with :right pseudo-class in them and no :left pseudo-class.
6.
Calculate specificity for all remaining page rules.
7.
Select the page rule with highest specificity. If a tie is detected, select the latest (i.e., most recently added) page rule.

The specificity is calculated as a ordered set of 3 numbers (f,g,h), where:

Count the number of page type names (= f)
Count the number of ‘:first’ or ‘:blank’ pseudo-classes (= g)
Count the number of ‘:left’ or ‘:right’ pseudo-classes (= h)

Margin rules:

Margin rules define areas in a page's margins and consist of style properties. The "content" style property in FinerEdge Publisher uses the "element(name)" syntax to reference a dev or table tag that has specified the style property "position:running(name)", where the "name" designed matches. Any additional style properties specified in the margin rule are applied to the referenced tag's style properties when it's formatted.

In FinerEdge Publisher, "top" is a synonym for "top-center", "bottom" is a synonym for "bottom-center", "left" is a synonym for "left-middle", and "right" is a synonym for "right-middle".

» Back to the Table of Contents. «


Chapter 5 - Expressions and Functions
Constants and Variables
In FPML, variable names must be less than 512 characters in length and can contain lower or upper case letters, digits (i.e., 0-9), and underscores (i.e., "_"). Variable names may not begin with a digit or an underscore, but may begin with a "@" character (see below).

Variables are by default always "local" to the method that they are declared in (i.e., via the set tag) and are discarded when the "method" is exited. However, "ByRef" parameter variables will still pass the value of the variable back to the caller prior to being discarded.

When a variable name is preceded by a "@" character, the variable is considered global to the method that it is declared in and is therefore not discarded when the method is exited. Global variables are also automatically created by FinerEdge Publisher utilizing the applicable recordset name as follows:

@<recordset name>_<variable name>

Variables are always initially declared to be of the same data type as the value, <function>, or <expression> result. If the variable is already declared, its type is automatically changed to be of the same data type as the value being assigned.

Variables fit into three basic categories: whole numbers, floating point numbers, and strings. Date and time values may be represented as either whole numbers or strings with the internal representation for date and time values being whole numbers. When variables are created and assigned values from an external source (i.e., database, file, etc.), the values are automatically converted by FinerEdge Publisher into the applicable format.

Arrays and Underscore Notation

All variables may have an optional <subscript definition>, which may contain one or more dimensions (thus making them an element of an array). However, not all elements of an array need be allocated nor be of the same data type. The function "type" indicates if an element of an array is allocated and it's data type.

Internally all array elements are represented in "underscore notation". For example, "Ary[1]" is resolved to "Ary_1" and "Ary['Abc',10]" is resolved to "Ary_Abc_10". When a <string> is used for an array dimension, it is first normalized to conform to variable naming conventions. For example, "Ary['First Name']" is resolved to "Ary_First_Name".

Expression Elements

Numbers can hold whole values in the range of -2,147,483,648 to 2,147,483,647 (i.e., a 32-bit long). Floats can hold large floating point values in the range of 1.7 x 10 to the power of -308 to 308 (i.e., a 64-bit IEEE double).

In most cases, strings and string array elements can hold up to 8192 characters. However, additional cases exist that can handle greater than 8192 characters as follows:

When an external variable created from query or xml data is directly used with the var tag (i.e., is not used in an expression).
When a string resulting from a content tag is used as the expr attribute of the svg tag, which represents Scalable Vector Graphics xml.

The basic expression syntactic element definitions are as follows:

<number constant>:

[-] <digit>...

The optional minus sign indicates a negative <number constant>.

<float constant>:

[-] <digit>... <period> <digit>...

The optional minus sign indicates a negative <float constant>. The <period> specifies the character "." (i.e., internal format).

<digit>:

0|1|2|3|4|5|6|7|8|9

<decimal point>:

The <decimal point> is the user defined decimal point character.

<thousand>:

The <thousand> is the user defined thousand character.

<currency>:

The <currency> is the user defined currency character.

<string constant>:

'<string mnemonic>...'

<string mnemonic>:

\\|\a|\g|\l|\m|\p|\q|\s|\xhh|\uhhhh|<string character>

Any other characters beginning with a backslash, other than those listed above, are not translated and result in the original character. When specifying a <string constant> containing backslash characters as actual text, two contiguous backslashes indicate a single backslash character of text.

\
backslash
a
apostrophe
g
greater than
i
page number in lowercase roman numeral format
I
page number in uppercase roman numeral format
l
less than
m
ampersand
p
page number in decimal format
q
quote
s
absolute space
x
ascii character indicated by the two subsequent hexadecimal digits ("hh")
u
unicode character indicated by the four subsequent hexadecimal digits ("hhhh")

<string character>:

Any character except the null and apostrophe characters.

<number>:

<number constant>|<number variable>|<function>|<expression>

Examples:

  23

  -671

  inx

  num[2]

  len('abc')

  inx*num[2]-1

<float>:

<float constant>|<float variable>|<function>|<expression>

Examples:

  2.3

  -67.1

  val

  newval[8]

  float(76)

  (val*newval[8])

<string>:

<string constant>|<string variable>|<function>|<expression>

Examples:

  'abc'

  str_1

  strval[5]

  format(987)

  str_1+strval[5]

<number variable>:
<float variable>:
<string variable>:

[@] <alphanumeric> [<subscript definition>]

<variable>:

<number variable>|<float variable>|<string variable>

A variable beginning with a "@" character is considered to be a global variable and is therefore not discarded when the "method" that declared it is exited. All other variables (i.e., those not beginning with the "@" character) are local to the "method" that they are declared in and are therefore discarded when the "method" is exited.

<alphanumeric>:

The characters: A-Z, a-z, 0-9, and "_" (but may not begin with the characters 0-9 or "_").

<subscript definition>:

"[" <number>|<string> [, <number>|<string>] "]"

References a particular element of an array, which may contain one or more dimensions. Each dimension of the array is specified by either a <number> or a <string>. A <string> that is used for a dimension of an array represents a symbolic link to the array element.

All elements of an array are not declared until they are initially assigned values of either <number>, <float>, or <string>. You may test if an element of an array is declared by using the "type" function.

Null values

Variables are always assigned default values regardless of cases where null values are detected at the data source (e.g., database data source). As such, variables can always be utilized as operands in any legitimate type of expression.

Variables can also have a "null" state set that is independent of the variable's type or value. The "null" function allows a variable's null state to be determined, while the set tag's optional "null" attribute allows a variable's null state to be explicitly set. However in most cases, a variable's null state will be set via the recordset from a particular data source (e.g., a database).

Pointers to strings

Tag attribute values may contain one or more pointers to string or string array element variables. A pointer to a string or string array element variable is specified within the text of a tag's attribute as follows:

^strVariable
^strAry[1]
^@strGlobal
^@strGAry[numIndex]
^@recset_name

When used as a pointer, the content of a string or string array element variable is evaluated as if it were part of the text of the attribute. For example if the string variable "strCols" contained the text "50%,50%", the following table tag would declare two columns each having a width of 50% of it's parent element:

<table cols = "^strCols"\g
...
</table>

» Back to the Table of Contents. «

Expression Elements and Operators
FinerEdge Publisher employs a comprehensive set of operators that can be used to construct expressions. In addition, parenthesis may be used anywhere within an expression to affect the precedence of operators or for clarity.

Expressions can appear anywhere a <number>, <float>, or <string> may be used. Examples of this is as follows:

  format(len(str))
  format(len(str)*2+1)
  format(ary[inx])
  format(ary[inx+1])

<expression>:

[-|not] <operand> [<operator> <operand>]...

Examples:

  num*2+1

 Input: num = 3
Result: 7

  2.2+flt

 Input: flt = 1.57
Result: 3.77

  '123'+':'+str+':'+'789'

 Input: str = "456"
Result: "123:456:789"

  num >= 1 ' num <= 10

 Input: num = 5
Result: 1

  (num+1)*2 > 10

 Input: num = 2
Result: 0

<operand>:

<number>|<float>|<string>|<function>|<sub-expression>

Any of the above operands may be used anywhere in an <expression>.

<sub-expression>:

( <expression> )

The <operator> table shown below indicates the evaluation precedence. In addition, the precedence may be overridden by specifically enclosing portions of an <expression> within parenthesis.

<operator>:

Operators with equal precedence are evaluated from left to right in an <expression>. Operators with a higher precedence value are evaluated before operators having a lower precedence value. Enclosing parts of an <expression> within parenthesis overrides precedence and changes the order of evaluation.

The column "Operand" in the table below shows the type of operands that may be used with a particular operator where N = <number>, F = <float>, and S = <string>.

Operator
Operands
Precedence
Description
-
N,F
5
Unary minus
Not
N
5
Unary not
*
N,F
4
Multiply
/
N,F
4
Divide
Mod
N
4
Modulus
+
N,F,S
3
Add or string concatenate
-
N,F
3
Subtract
>
N,F
2
Greater than
>=
N,F
2
Greater than or equal to
<
N,F
2
Less than
<=
N,F
2
Less than or equal to
=
N,F,S
2
Equal to
<>
N,F,S
2
Not equal to
And
N
1
Logical "and" condition
Or
N
1
Logical "or" condition

» Back to the Table of Contents. «

Late evaluation expressions
Late evaluation expressions are supported in FinerEdge Publisher during the document rendering phase. That is, when a late evaluation expression is detected, the evaluation of various tags and style properties are deferred until document rendering.

Late evaluation expressions are most useful when embedded within page areas, which are re-evaluated for each generated page. However, late evaluation expressions may also be effectively used anywhere in a document.

All late evaluation expressions begin with a question mark ("?") and are followed by normal expression rules. Late evaluation expressions are recognized within a content tag's attributes or style properties.

Late evaluation expressions are also recognized when used with a SET or var tag's "expr" attribute. In these two cases, the entire evaluation of the set or var tag is deferred until document rendering.

In addition, if a set tag's "var" attribute begins with a question mark ("?"), a special form of late evaluation is recognized. In this case, if the set tag's "expr" attribute does not also begin with a question mark ("?"), the expression is evaluated normally in document processing while the actual set tag assignment is handled in document rendering. This capability is especially useful to embed the results of expressions from document processing for later use during document rendering.

Examples of late evaluation expressions are as follows:

<div style = "height:(?strHeight)">...</div>

<set var = "strPage" expr = "?format(numPage)"/>

<set var = "?strText" expr = "'A'+'B'"/>

<var expr = "?strPage"/>

Since late evaluation expressions are evaluated during document rendering, the current page number is available for use as a variable (named "numPage") that has a type of number. If the variable "numPage" is used with normal document processing, the resulting value will always be 1.

» Back to the Table of Contents. «

Regular Expressions
FinerEdge Publisher comes with a full regular expression facility built in. Also, any time a regular expression is used, a simple pattern may be substituted by simply passing it through the "pattern" function first. The "pattern" function yields a valid regular expression that corresponds to the original simple pattern.

<regular expression>:

[#|~|^]... <re>... [$]

#
Whole phrase (i.e., no alpha-numeric characters before or after matched text).
~
Ignore upper/lower case differences.
^
Must be the beginning of the text.
$
Must be the end of the text.

Examples:

  abz

  #~abz

  .*a?z.*

  a{0:.*}z

  a[b-y]z

  a(bc|cd)z

  a+{0:[0-9]+}b+{1:[0-9]+}c+

A number of extensions to regular expressions enable FinerEdge Publisher to further process additional pattern matching conditions. Specifically, the prefix character "#" indicates that the text being matched must be a whole phrase while the prefix character "~" indicates that upper and lowercase differences are to be ignored.

There are no delimiters of any kind (including spaces) that separate any of the elements in a <regular expression>. Spaces are considered a valid part of the <regular expression>.

<re>:

<expr>|<return item>

The <re> element may be given as many times as needed to create the desired <regular expression>. Each <re> element may be composed of either <expr> or <return item>.

<return item>:

{ <number constant> : <expr> }

{
Begin return item <number>.
}
End current return item.

While recognizing a pattern, a document author may isolate and return parts of the pattern into <string variable>s as facilitated by the "match" and "picture" functions. The <number constant> maps the text that was isolated into a specific <string variable>. The <number constant> 0 specifies the first <string variable>, 1 the second <string variable>, and so on.

<expr>:

<element>... [ | <expr>]

|
Or expression.

One or more <element>s can comprise an <expr> element. This can be optionally followed by a pipe character ("|") and another <expr> in order to specify an "or" condition. With multi-character text, an <expr> is often enclosed in parenthesis as a <sub-expr>. For example, the pattern "abc(def|xyz)" would match either the text "abcdef" or "abcxyz".

<element>:

<re char>|<escape char>|<set>|<sub-expr>|. [*|+|?]

*
Match zero or more occurrences of the preceding <element>.
+
Match one or more occurrences of the preceding <element>.
?
Match zero or one occurrence of the preceding <element>.

Each element of the <regular expression> can be either a <re char>, <escape char>, <set>, <sub- expr> or a period (i.e., ".") optionally followed by either a "*", "+", or "?". A period (i.e., ".") matches any single character. To match a string of any characters, the regular expression ".*" (i.e., a period followed by an asterisk) may be used.

<re char>:

Any character except * + ? | . [ ] ( ) { }.

<escape char>:

<any character>

Any single character may be specified by preceding it with a backslash character. A single backslash character is specified by two consecutive backslash characters.

<set>:

[ [^] <set range>... ]

A <set> specifies a set of valid characters that match against one or more characters in the pattern. One or more <set ranges> are enclosed within brackets and define the <set>. The optional "^" character following the open bracket indicates a "not" condition (i.e., any character is valid except for the characters in the <set>).

<set range>:

<set char> [- <set char>]

A <set range> defines characters that are included in the <set>. If the first <set char> is followed by a hyphen ("-") and another <set char>, all of the characters within the range of the two <set char>s are part of the <set> (including the <set char>s themselves). For example "A-Z" indicates all of the uppercase characters of the English alphabet.

<set char>:

<re char>|<escape char>

Either the character itself or an <escape char> may indicate a single character in a <set> (i.e., the character itself preceded by a backslash).

<sub-expr>:

( <expr> )

A <sub-expr> is an <expr> that is enclosed in parenthesis in order to establish grouping and override evaluation precedence.

» Back to the Table of Contents. «

anum
anum ( <string> [, <number>] )

Examples:

  anum(strToken1)

Result: 1

  anum('MyNum',6)

Result: "MyNum000001"

Description:

The "anum" function (i.e., auto-number) generates a sequentially incrementing number, starting from 1, based upon a common mnemonic given by the <string> parameter. For example, if the anum function was called twice with the mnemonic "MyNum", the values 1 and 2 would be generated with each call. If the anum function was subsequently called with the mnemonic "MyNum2", a value of 1 would be generated (assuming that the mnemonic "MyNum2" was used for the first time with the anum function).

When the "anum" function is called without the optional <number> parameter, the generated number is returned as a <number> result. However, when the optional <number> parameter is given, a <string> is returned prefixed with the mnemonic and followed by the generated number converted into a string with a minimum of <number> digits and right justified with leading zero characters.

» Back to the Table of Contents. «

chr
chr ( <number> )

Examples:

chr(65)

chr(numVal)

Description:

The "chr" function accepts a single numeric parameter and returns a string containing a single character that corresponds to the ordinal position given by the value of the numeric parameter.

» Back to the Table of Contents. «

collection
collection ( <string> , <number>, <alphanumeric> )

Examples:

  collection('Person',0,Ary)

Result: 2, Ary[1] = "Person_FirstName", Ary[2] = "Person_LastName"

Description:

The "collection" function matches currently known symbols against a pattern specified by the <string> parameter. The number of matched symbols is returned as a <number> result from this function. The names of the matched symbols are returned in the array designated by the <alphanumeric> parameter excluding the subscript.

If the pattern given by the <string> parameter contains only characters that are valid for variable names, the pattern is directly compared with the currently known symbols (i.e., only the number of characters in the pattern are considered for a match). In all other cases a regular expression match is performed.

The <number> parameter corresponds to the values returned from the "type" function and can further contstrain the match. A value of 0 indicates that any type of symbol should be considered for matching.

» Back to the Table of Contents. «

cvt
cvt ( in|cm|mm|pc|pt|em|ex|px|iu , in|cm|mm|pc|pt|em|ex|px|iu , <number> )

Examples:

  cvt(in,iu,1)

Result: 1440

Description:

Returns a <number> representing the converted <number> parameter. The first mnemonic parameter is the "from" (or current) unit of measure and the second mnemonic parameter is the "to" (or new) unit of measure. The mnemonic parameter options are as follows:

in
Inches
cm
Centimeters
mm
Millimeters
pc
Picas
pt
Points
em
Em width
ex
Ex width
px
Pixels
iu
Internal units (twips)

» Back to the Table of Contents. «

date
date ( validate|difference|offset|week|month|holiday|

  start|end|current|cin|cout|us|fd|fm|fw [, <params>] )

Examples:

  date(current)

Result: 19980101

  date(difference,19980101,19980201,0)

Result: 31

  date(offset,19980101,11,0)

Result: 19980112

  date(cin,us,'1/1/98')

Result: 19980101

  date(cout,usz,19980101)

Result: "1/1/98"

Description:

Return a <number> or <string> value for the date calculation indicated by the first parameter. The <params> differ based upon the date calculation to be performed. If a date is invalid, a value of 0 is returned.

When a <ctype> (i.e., convert type) parameter is used with any of the <params> below (i.e., cin or cout), a mnemonic is also expected and has the following description:

us
Use user specified date.
mm
Use MM/DD/YY date.
dd
Use DD/MM/YY date.
yy
Use YY/MM/DD date.
jj
Use YY/DDD Julian date.
nn
Use straight number of days.
cm
Use MM/DD/YYYY date.
cd
Use DD/MM/YYYY date.
cy
Use YYYY/MM/DD date.
cj
Use YYYY/DDD Julian date.

The following <ctype> parameters may also be used with the "cout" form of this function:

usz
Use user specified date with zero suppression.
mmz
Use MM/DD/YY date with zero suppression.
ddz
Use DD/MM/YY date with zero suppression.
yyz
Use YY/MM/DD date with zero suppression.
jjz
Use YY/DDD Julian date with zero suppression.
cmz
Use MM/DD/YYYY date with zero suppression.
cdz
Use DD/MM/YYYY date with zero suppression.
cyz
Use YYYY/MM/DD date with zero suppression.
cjz
Use YYYY/DDD Julian date with zero suppression.

When an <option> parameter is used in any of the <params> below, a <number> is subsequently expected and has the following description (all date calculations that use <option> will account for weekends and holidays where appropriate):

0
Include weekends and holidays.
1
Exclude weekends.
2
Exclude holidays.
3
Exclude weekends and holidays.

The type of date calculation is determined by the first parameter. The mnemonic for the type of date calculation and remaining <params> are listed below:

validate -

<number>

Validate the date and return a <number> (1=Valid date, 0=Invalid date).

difference -

<number> , <number> , <option>

Returns a <number> indicating the number of days difference between the date given by the first <number> and the date given by the second <number>. If the second <number> is larger than the first <number>, a positive result is returned (otherwise a negative result is returned).

offset -

<number> , <number> , <option>

Returns a <number> indicating a new date, given a date in the first <number> and the number of days (positive or negative) in the second <number>.

week -

<number>

Returns a <number> indicating the day of the week, given a date in <number> (0=Sunday through 6=Saturday).

month -

<number> , <option>

Returns a <number> indicating the number of days in the month given a date in <number>.

holiday -

<number>

Returns a <number> indicating if the date, given in <number> is a holiday (0=Not a holiday, 1=Holiday).

start -

<number> , <option>

Returns a new date as a <number> indicating the start of the week for the date given in <number>.

end -

<number> , <option>

Returns a new date as a <number> indicating the end of the week for the date given in <number>.

current -

Returns a <number> indicating the current date.

cin -

<ctype> , <string>

Converts the external form date in <string> and returns a date as a <number>. Leading and trailing spaces are ignored.

cout -

<ctype> , <number> [, <string>]

Converts a date in <number> and returns an external form date as a <string>. The first character of the optional <string> is a delimiter used to format the date (e.g., "/"). If the string is empty (i.e., ""), no delimiter is used. If no delimiter is given, the user specified date delimiter is used.

us -

Return a <string> indicating one of the date formats selected by the user. This is useful to display the date format currently selected by the user. For example, if the user selected the date format MMDDYYYY, this function would return the <string> "MM/DD/YYYY".

fd -

<number> [, <number>]

Converts a date in the first <number> to an external date string. If the second <number> is not given, the date is converted using the default format. For example, if the second <number> is given, a date of 1/1/1998 would be formatted as follows:

0
Jan 1 2000.
1
January 1 2000.
10
Sat Jan 1 2000.
11
Saturday January 1 2000.

fm -

<number>

Returns a <string> specifying a mnemonic for the month given by the date in <number>.

fw -

<number>

Returns a <string> specifying a mnemonic for the day of the week given by the date in <number>.

Note: Please refer to the "time" function for additional functionality relating to both times and dates.

» Back to the Table of Contents. «

directory
directory ( <string> , <alphanumeric> [ , <number> ] )

Examples:

  directory('C:\MyDir\*',ary)

 Input: ary[1] = Not declared, ary[2] = Not declared
Result: 2, ary[1] = "C:\MyDir\File1.txt", ary[2] = "C:\MyDir\File1.jpg"

Description:

Returns a <number> indicating the number of files or sub-directories found in the search directory specified by the <string> parameter. The wildcard characters "*" and "?" may be used in the last node of the search directory. The character "*" specifies a one or more character match whereas the character "?" specifies exactly a one character match.

The <alphanumeric> parameter designates the name of an array excluding the subscript. For each file or sub-directory returned by this function, the name is placed into an element of the array starting from a subscript of 1.

If the element of the array is not declared, it is automatically declared with a type of <string>. However, if the element of the array is already declared, the type is changed to <string>.

If the optional <number> parameter is used, a value of 0 will cause file names to be returned (the default value when a <number> parameter is not given). A <number> parameter value of 1 will cause sub-directory names to be returned.

The resulting <number> from this function can be used to determine the maximum array subscript that was stored (starting from 1).

» Back to the Table of Contents. «

env
env ( d|dd|t|tn|td )

Examples:

  env(d)

Result: C:\FinerEdge Software\FinerEdge Publisher\Docs\ThisDocument.fpm

  env(t)

Result: s130.1

Description:

Returns a <string> corresponding to the env function mnemonic as follows:

d
Return the full path of the FinerEdge Publisher document currently being processed.
dd
Return the directory of the FinerEdge Publisher document currently being processed.
t
A unique temporary file path (within the temp directory).
tn
A temporary simple name (without a directory specified).
td
The temporary directory of the machine.

» Back to the Table of Contents. «

find
find ( <alphanumeric> [ , <string> [ , <alphanumeric> ]] )

Examples:

  find(S1Dim,'^abc$',RInx)

Result: 10

  <!-- S2Dim is a two-dimensional array -->
  find(S2Dim[3],'^xyz$',RInx)

Result: 5

Description:

The "find" function returns a count of the contiguous elements in the array designated by the first <alphanumeric> parameter. For a multi-dimensional array, all but the last index must be specified as seen in the example above. The first subscript of the array can begin with either 0 or 1.

The optional <string> parameter specifies a <regular expression> that is matched against the elements in the first array (i.e., only elements that match are counted). The optional second <alphanumeric> parameter designates an array (beginning from index 1) where the matched element indexes are returned.

» Back to the Table of Contents. «

first
first ( <string variable> , [not] <string> )

Examples:

  first(str,not ' ')

 Input: str = "22.1 17.6"
Result: "22.1", str = " 17.6"

  first(str,'1234567890')

 Input: str = "34.2"
Result: "34", str = ".2"

Description:

Returns a <string> containing the first token found in the <string variable> parameter. The leading characters of the <string variable> parameter are returned as a <string> result that exist in the set of characters specified by the <string> parameter. The content of the <string variable> are updated to eliminate the token just parsed in preparation for the next call to this function.

If the option "not" is used prior to the <string> parameter, the set of characters is reversed (i.e., not in the set of characters specified by the <string> parameter).

» Back to the Table of Contents. «

float
float ( <number> )

Examples:

  float(867)

Result: 867.0

Description:

Returns a <float> representing the value of the <number> parameter. The decimal part of the floating point number is 0. To convert a <float> into a <number>, see the function "number".

» Back to the Table of Contents. «

format
The format function has two forms ("Form 1" and "Form 2") as described below:

Form 1:

format ( <number>|<float> [: <format options>...]

  [, <number> [, <string>] ] )

<format options>:

a|c|t|s|e|n

Examples:

  format(345)

Result: "345"

  format(34.5)

Result: "34.5"

  format(34.5,2)

Result: "34.50"

  format(34.5,4,'*')

Result: "34.5***"

  format(1234567.89:ct)

Result: "$1,234,567.89"

Description:

Returns a <string> representation of the <number> or <float> parameter. The user defined decimal point character is used when formatting a <float> parameter.

When a <float> parameter is specified and an optional <number> is designated after the <float>, the <number> designates the number of decimal places. If the number of decimal places in <float> is less than <number>, the <string> is padded with fill characters, otherwise the resulting <string> is truncated. If <number> is zero (0), no decimals places are formatted including the decimal point character.

If a <float> parameter is specified whose value is a whole number (without an optional <number> parameter), the user defined decimal point character followed by "0" is appended to the resulting <string>. The default fill character is "0"; however, the fill character may be explicitly designated by the first character of the subsequent optional <string>.

A number of single character options may be specified with the <format options>. No space characters can be present between single character options. The single character options and their respective descriptions are as follows:

a -

If this option is not specified and the <number> or <float> is negative, a negative sign precedes the result (no prefix is used if the <number> or <float> is positive). A leading negative sign always precedes a currency sign if used.

If this option is specified and the <number> or <float> is negative, a negative sign is appended to the result (no suffix is used if the <number> or <float> is positive).

c -

The user defined currency character is prefixed to the <number> or <float> after any leading negative sign.

t -

The user defined thousand character is formatted with the <number> or <float>.

s -

Append a suffix to the number as related to the value (e.g., 2nd, 12th, 1.5ths, etc.). The "s" option cannot be used with the "a" option.

e -

Format the number as English currency (e.g., One Dollar And 50 Cents). The "e" option cannot be used with any of the other options.

n -

Format the number using one of the indicated numbering schemes (e.g., AA,ab,IV, etc.). The "n" option cannot be used with any of the other options.

When using this option, the optional <number> parameter specifies the numbering scheme (0=English legal lower case (default), 1=English legal upper case, 2=Roman numeral lower case, 3=Roman numeral upper case).

Form 2:

format ( <string> [, <number>|<float>|<string> ]... )

Examples:

  format('{0} = {1}','Five',5)

Result: "Five = 5"

  format('Today is {0}',date(cout,usz,date(current)))

Result: "Today is 1/1/2010"


Description:

Returns a <string> representation of the format designed by the first <string> parameter. Each positional parameter within the format begins with a "{" character, ends with a "}" character, and encloses a <number constant> starting from zero(0). All other characters within the format are interpreted as literal. A literal "{" may be specified by the escape sequence "\{".

One or more subsequent parameters of <number>, <float>, or <string> may follow the format designed by the first <string> parameter. Each <number constant> (positional parameter) within format designed by the first <string> parameter is replaced by its corresponding <number>, <float>, or <string> parameter and the final result is returned from this function.

Any <number> or <float> parameters are first converted into a <string constant> prior to being replaced within the format. The <number>, <float>, and <string> parameters may themselves contain formatting functions such as the "date", "time", and "format" functions.

» Back to the Table of Contents. «

if
if ( <number> , <number>|<float>|<string> ,

  <number>|<float>|<string> )

Examples:

  if(val,'CR','DB')

 Input: val = 1
Result: "CR"

  if(val > 10,1.01,1.03)

 Input: val = 5
Result: 1.03

Description:

Performs a test on the value of the <number> parameter (<number> may also be an <expression>). If the value of <number> is not 0 (i.e., true), the result of the second parameter is returned. If the value of <number> is 0 (i.e., false), the result of the third parameter is returned. This function returns either a <number>, <float>, or <string> depending upon the resulting value of the applicable second or third parameter.

» Back to the Table of Contents. «

len
len ( <string> )

Examples:

  len("Hello there")

Result: 11

Description:

Returns a <number> representing the length of the <string> parameter.

» Back to the Table of Contents. «

match
match ( <match parameters> )

<match parameters>:

[+] <string> , <string> [, <match constant>|<match variable>]

<match constant>:

<number constant> [, <number constant>]

<match variable>:

<number variable> , <number variable> [, <string variable>]...

Examples:

  match('12xyz34','abc')

Result: 0

  match(strText,'abc',startval,lenval)

Result: 1, startval = 2, lenval = 3

  match('12abc34','12{0:.*}34',startval,endval,retstr)

Result: 1, startval = 0, lenval = 7, retstr = "abc"

Description:

Matches the <regular expression> in the second <string> parameter to the contents of the first <string> parameter. A simple pattern can easily be converted to a <regular expression> by using the "pattern" function. The "match" function returns a <number> indicating that the match either succeeded (1) or failed (0).

Normally, the first match of the <regular expression> in the initial <string> parameter is used (with respect to the character offset where the match began). If the optional plus sign character ("+") is specified, the last match of the <regular expression> in the initial <string> parameter is used.

Either the <match constant> or <match variable> formats may be used. The first <number> variable or <number constant> (if present) determines the character offset within the text of the <string> where the match begins (relative to 1).

The second <number> variable or <number constant> (if present) determines the maximum length beginning from the offset that will be matched. If this value is not specified, the remainder of the text beginning from the offset is matched.

The following information applies when using the <match variable> format:

After the function successfully completes, the first <number variable> contains a character offset to the start of the text matched (relative to 1). The second <number variable> contains the length of the text matched.

The optional <string variable>s contain the text of the returned items from the match (i.e., by using the <regular expression> "{}" braces syntax).

» Back to the Table of Contents. «

mid
mid ( <string> , <number> , <number> )

Examples:

  mid('1234567890',4,3)

Result: "456"

  mid('1234567890',1,5)

Result: "12345"

  mid('1234567890',6,0)

Result: "67890"

Description:

Returns a sub-string of the <string> indicated by the first parameter. The second parameter designates the starting offset within the <string> and is relative to 1. The third parameter designates the number of characters to return. If a value of 0 is used with the third parameter, the remainder of the <string> is returned past the starting offset (including the starting offset).

» Back to the Table of Contents. «

mode
mode ( )

Examples:

  mode()

Result: normal

Description:

Returns a <string> indicating the current document creation mode of operation as follows:

normal
Create precise rendered formats such as PDF, XPS, PostScript, View, and Print.
htmlpaged
Create HTML paged output.
epub
Create EPUB output.
docx
Create DOCX output.
text
Create simple text output.

» Back to the Table of Contents. «

null
null ( <variable> )

Examples:

  null(@RecordSet1_Variable1)

Result: 1

Description:

This function allows the caller to determine if a particular variable was set to a null state. The "null" function returns a value of 1 if the variable was set to a null state (otherwisea value of 0 is returned).

» Back to the Table of Contents. «

number
number ( <float> )

Examples:

  number(867.2)

Result: 867

Description:

Returns a <number> representing the value of the <float> parameter. If the float value is out of range, a value of zero is returned. To convert a <number> into a <float>, see the function "float".

» Back to the Table of Contents. «

ord
ord ( <string> )

Examples:

ord('abc')

ord(strText)

Description:

The "ord" function accepts a single string parameter and returns, as a numeric result, the ordinal position corresponding to the first character in the string parameter.

» Back to the Table of Contents. «

parse
parse ( <string variable> , [not] <string> )

Examples:

  parse(str,' ')

 Input: str = " Hello there"
Result: "Hello", str = " there"

  parse(str,not '1234567890')

 Input: str = " #34 #27"
Result: "34", str = " #27"

Description:

Returns a <string> containing the next token found in the <string variable> parameter. The leading characters of the <string variable> parameter are first discarded that are in the set of characters specified by the <string> parameter. Then, the remaining leading characters of the <string variable> parameter are returned as the <string> result of this function until one of the characters specified by the <string> parameter are recognized. The content of the <string variable> are updated to eliminate the token just parsed in preparation for the next call to this function.

If the option "not" is used prior to the <string> parameter, the set of characters is reversed (i.e., not in the set of characters specified by the <string> parameter).

» Back to the Table of Contents. «

pattern
pattern ( <string> )

Examples:

  pattern('a*b??c')

Result: "a.*b..c"

Description:

Returns a <string> containing the <regular expression> equivalent of the simple pattern in the <string> parameter. Simple patterns use "*" to represent ".*" and "?" to represent ".".

» Back to the Table of Contents. «

picture
picture ( <string> , <string> [, <output list>] )

<output list>:

<output item> [, <output item>]...

<output item>:

*|<space item>

<space item>:

[+] [<number>] <string>

Examples:

  picture('xx12xxx345xx','x+{0:[0-9]+}x+{1:[0-9]+}x+')

Result: "12345"

  picture('xxx45xx123xxx','x+{1:[0-9]+}x+{0:[0-9]+}x+',*,':',*)

Result: "123:45"

Description:

The "picture" function matches the <regular expression> in the second <string> parameter to the first <string> parameter. This function returns a formatted <string> based upon the <return item>s of the <regular expression> and an optional <output list>. If the <regular expression> does not match the first <string> parameter, the content of the <string> parameter is returned.

If an <output list> is not specified, the text of the <return item>s are concatenated together and returned as the <string> result. If an <output list> is specified, remaining <return item>s (if any) after the <output list> has been applied, are concatenated to the <string> result.

The <output list> is composed of one or more <output item>s that are formatted into the <string> result. If the <output item> is an asterisk (i.e., "*"), the next <regular expression> <return item> is concatenated to the <string> result.

A <space item> "spaces out" to either a fixed or relative column in the <string> result and always proceeds in a forward direction. For example, if the result is already at column 30, spacing to column 20 has no effect.

If a plus sign is not specified, the entire content of the <space item> <string> is used for spacing. The optional <number> indicates the number of times the <space item> <string> is written to the <string> result (a minimum of 1 is presumed). If the <space item> <string> is empty (i.e., ""), a single blank space character is used instead.

If a plus sign is specified, the subsequent <number> is the absolute column spaced to. In this case the first character of the <space item> <string> parameter indicates the character used to space out to the designated column. If the <space item> <string> is empty (i.e., ""), a blank space character is used.

» Back to the Table of Contents. «

record
record ( <string> , <string> [, <alphanumeric>] )

Examples:

  record('1234 5678','6 4, 0 4',ary)

 Input: ary[1] = Not declared, ary[2] = Not declared
Result: 2, ary[1] = "5678", ary[2] = "1234"

  record(' 1/1/94 12.34 ','0 10 10 10',ary)

 Input: ary[1] = 0, ary[2] = 0.0
Result: 2, ary[1] = 940101, ary[2] = 12.34

Description:

Returns a <number> indicating the number of fixed fields found in the first <string> parameter. The second <string> parameter designates one or more <field>s.

Each <field> has 2 <number>s. The first <number> indicates the starting position of the fixed <field> (relative to 1). The second <number> indicates the length of the <field> (in characters). The word "length" preceding the second <number> is optional. If the second <number> is a value of 0, the rest of the <string> parameter is presumed.

The syntax for the second <string> is as follow:

  <field> [[,] <field>]...

  <field>:

  <number> [length] <number>

The optional <alphanumeric> is used to name an array excluding the subscript. For each field seen, the text of the field is placed into an element of the array starting from a subscript of 1.

If the element of the array is not declared, it is automatically declared as having a type of <string>. However, if the element of the array is already declared, the text of the field is automatically converted to be of the same type as the array element (i.e., string, number, or float).

In addition, if the element of the array is a number and the text of the field includes the user defined date delimiter, the date is converted via the date format (see the "date" function). Also, when the text of the field includes the user defined time delimiter, the time is converted via the time format (see the "time" function).

The resulting <number> of this function can be used to determine the maximum array subscript that was used (starting from 1).

» Back to the Table of Contents. «

refget
refget ( <string> )

Examples:

refget('search')

refget('text')

Description:

The <string> parameter determines the type of information to be returned as follows:

search

The contents of the "ref-search" property for the current reference is returned as a string.

text

The contents of the "ref-text" property for the current reference is returned as a string.

page

The display page number where the reference appears is returned as a string. A forward reference will result in a special character sequence being returned. If the special character sequence is then formatted into the output of a document, it will be subsequently translated into an actual page number.

pagenum

The display page number where the reference appears is returned as a number. A forward reference will result in the current display page number being returned.

rpagenum

The real page number (i.e., without respect to the pageoffset) where the reference appears is returned as a number. A forward reference will result in the current real page number being returned.

offset

The document rendering input file offset is returned as a number.

index

The unique reference index value starting from one, assigned in the order of appearance, is returned as a number.

» Back to the Table of Contents. «

refsearch
refsearch ( <string> [, <string> [, <number> [, <number>]]] )

Examples:

refsearch('begin')

refsearch('page-begin-down','Group.*')

refsearch('page-begin-down','Item.*',3)

Description:

Returns the "index" of the found reference or 0 if a reference was not found. The first <string> parameter defines the type of search being performed and can contain the following values:

begin

Position the current reference pointer to the first reference in the reference table.

end

Position the current reference pointer to the last reference in the reference table.

page-begin-down
page-begin-down-adjust

Position the current reference pointer to the first reference for the currently processed page with a bias for searching down. If the "adjust" suffix is used and the found reference starts on the currently processed page and continues to the next page, position to the next reference.

page-begin-up
page-begin-up-adjust

Position the current reference pointer to the first reference for the currently processed page with a bias for searching up. If the "adjust" suffix is used and the previous reference continues to the currently processed page, position to the previous reference.

page-end-down
page-end-down-adjust

Position the current reference pointer to the last reference for the currently processed page with a bias for searching down. If the "adjust" suffix is used and the found reference starts on the currently processed page and continues to the next page, position to the next reference.

page-end-up
page-end-up-adjust

Position the current reference pointer to the last reference for the currently processed page with a bias for searching up. If the "adjust" suffix is used and the previous reference continues to the currently processed page, position to the previous reference.

next

Position the current reference pointer to the next reference in the reference table. If active sort information is present (i.e., see the refsort function), position the current reference pointer to the next sorted reference.

previous

Position the current reference pointer to the previous reference in the reference table. If active sort information is present (i.e., see the refsort function), position the current reference pointer to the previous sorted reference.

The second optional <string> parameter supplies a regular expression pattern that is matched with the "ref-search" value to further constrain the search. The first optional <number> parameter specifies the level to constrain the search (a value of -1 implies all levels).

The second optional <number> parameter specifies the number of times that the search is repeated with the same parameters.

» Back to the Table of Contents. «

refset
refset ( <string> , <string> [, <expression>] )

Examples:

refset('end','A100001')

refset('end',strRefSearch)

Description:

The second <string> parameter is used to locate the reference, via the ref-search field, where the information will be set. The first <string> parameter determines the type of information to be set as follows:

end

Mark the end location of a reference to be subsequently used with with the "adjust" suffixes of the refsearch function. If the "adjust" suffixes are not used with the refsearch function for a particular reference, the refset function with the "end" option does not need to be employed.

» Back to the Table of Contents. «

refsort
refsort ( null|<key options> )

<key options>:

<number> <string> [, <number> <string>]...

Examples:

refsort(1 'Asc')

refsort(2 'Desc',1 '~Asc')

Description:

Sort the reference table using the keys that have were assigned to each reference with the "ref-keys" style property. After performing a sort, the references are accessed by using the "refsearch" function along with any non-page oriented options (i.e., first, last, next, previous).

When the option "null" is given, the active sort information is cleared. That is, the reference table will revert to its natural ordering, which is the order that the references were originally added into the reference table.

When the option <key options> is given, one of more <number> and <string> combinations may be designated separated by commas. The <number> specifies an index for a specific key within the "ref-keys" style property (starting from 1). The <string> specifies either "Asc" (Ascending) or "Desc" (Descending). A tilde character (i.e., "~") prior to the option "Asc" or "Desc" causes any uppercase or lowercase differences to be ignored when comparing reference keys.

» Back to the Table of Contents. «

rgb
rgb ( <number> , <number> , <number> )

Examples:

  rgb(255,0,255)

Result: "#ff00ff"

Description:

Returns a <string> containing the RGB color given by the three <number> parameters (i.e., red, green, and blue respectively). The result of this function is compatible with all of the color oriented style properties.

» Back to the Table of Contents. «

round
round ( <float>, <number>|<float>, <string> )

Examples:

round(1.235,2,'bankers')

round(1.24,.5,'bias-up')

Description:

Round the first <float> parameter using either the number of decimal places given by the <number> parameter or the fraction given by the second <float> parameter. The <string> parameter determines the type of rounding to be performed as follows:

bankers

Round using banker's method (at exactly halfway round to the even number).

bias-up

Round with a bias_up (at exactly halfway round up).

bias-down

Round with a bias_down (at exactly halfway round down).

up

Round up (any digits past decimal places round up).

truncate

Truncate (any digits past decimal places).

» Back to the Table of Contents. «

repeat
repeat ( <string> , <number> )

Examples:

  repeat('0',5)

Result: "00000"

  repeat('abc',3)

Result: "abcabcabc"

Description:

Returns a <string> containing the parameter <string> repeated for the number of times indicated by the value of <number>.

» Back to the Table of Contents. «

replace
replace ( <string> , <string> , <string> )

Examples:

  replace('zzzabczzzabczzzabczzz','abc','def')

Result: "zzzdefzzzdefzzzdefzzz"

  replace(str,pattern('a?c'),'_')

Result: "zzz_zzz_zzz_zzz"

Description:

The "replace" function matches the <regular expression> in the second <string> parameter to the first <string> parameter. For each match found in the first <string> parameter, the matched text is replaced by the content of the third <string> parameter and the resulting new string is returned.

» Back to the Table of Contents. «

rsrecord
rsrecord ( )

Examples:

  rsrecord()

Result: 5

Description:

Returns the logical record number for the currently active recordset drilldown (relative to 1).

» Back to the Table of Contents. «

rsrecords
rsrecords ( )

Examples:

  rsrecords()

Result: 10

Description:

Returns the number of records in the currently active recordset drilldown.

» Back to the Table of Contents. «

scan
scan ( <string> , [+] [not] <string> [, <alphanumeric>] )

Examples:

  scan('12,345',',')

Result: 2

  scan('12,345',',',ary)

 Input: ary[1] = Not declared, ary[2] = Not declared
Result: 2, ary[1] = "12", ary[2] = "345"

  scan('12,345',not '12345',ary)

 Input: ary[1] = Not declared, ary[2] = Not declared
Result: 2, ary[1] = "12", ary[2] = "345"

  scan('12 , 345',+' ,',ary)

 Input: ary[1] = Not declared, ary[2] = Not declared
Result: 2, ary[1] = "12", ary[2] = "345"

  scan('12 , 345',+not '12345',ary)

 Input: ary[1] = Not declared, ary[2] = Not declared
Result: 2, ary[1] = "12", ary[2] = "345"

Description:

Returns a <number> indicating the number of fields found in the first <string> parameter. The second <string> parameter designates one or more field delimiter characters (i.e., those characters separating fields in a record).

If the optional character "+" is not specified, only one of the field delimiter characters separates each field. However, if the optional character "+" is specified, one or more field delimiter characters can separate each field.

If the option "not" is specified, the set of characters is reversed (i.e., not in the set of characters specified by the second <string> parameter).

The optional <alphanumeric> is used to name an array excluding the subscript. For each field seen, the text of the field is placed into an element of the array starting from a subscript of 1.

If the element of the array is not declared, it is automatically declared with a type of <string>. However, if the element of the array is already declared, the text of the field is automatically converted to be of the same type as the array element (i.e. string, number, or float).

In addition, if the element of the array is a number and the text of the field includes the user defined date delimiter, the date is converted via the date format (see the "date" function). Also, when the text of the field includes the user defined time delimiter, the time is converted via the time format (see the "time" function).

The resulting <number> from this function can be used to determine the maximum array subscript that was stored (starting from 1).

» Back to the Table of Contents. «

time
time ( difference|offset|fdifference|foffset|current|cin|cout

  [, <params>] )

Examples:

  time(current)

Result: 143500

  time(difference,143500,155800,0)

Result: 012300

  time(offset,143500,012300,0)

Result: 155800

  time(cin,'2:35p')

Result: 143500

  time(cout,amz,143500)

Result: "2:35p"

Description:

Return a <number> or <string> value for the date/time calculation indicated by the first parameter. The <params> differ based upon the time calculation to be performed.

When a <ctype> (i.e., convert type) parameter is used in any of the <params> below, a mnemonic is expected and has the following description:

us
Use user specified time.
mm
Use HH:MM 24-hour time.
ss
Use HH:MM:SS 24-hour time.
am
Use HH:MMa/p 12-hour time.
as
Use HH:MM:SSa/p 12-hour time.

The following <ctype> parameters may also be used with the "cout" form of this function:

usz
Use user specified time with zero suppression.
mmz
Use HH:MM 24-hour time with zero suppression.
ssz
Use HH:MM:SS 24-hour time with zero suppression.
amz
Use HH:MMa/p 12-hour time with zero suppression.
asz
Use HH:MM:SSa/p 12-hour time with zero suppression.

The type of time calculation is determined by the first parameter. The time calculation type and the remaining <params> are listed below:

difference -

<number> , <number> , <number>

Returns a <number> indicating the time difference between the time in the first <number> and the time in the second <number>. If the second <number> is larger than the first <number>, a positive result is returned (otherwise a negative result is returned).

If the third <number> is 0, the new time is wrapped around so that it remains on the clock. If the third <number> is 1, the new time is not wrapped around. This mode is used to perform time addition and subtractions where the actual resulting hours are needed.

offset -

<number> , <number> , <number>

Returns a <number> indicating a new time given a time value in the first <number> and a time value in the second <number> (either positive or negative). If the third <number> is 0, the new time is wrapped around so that it remains on the clock. If the third <number> is 1, the new time is not wrapped around. This mode is used to perform time addition and subtractions where the actual resulting hours are needed.

fdifference -

<number> , <number> , <number> , <number>,
<number variable> , <number variable>

Returns the full difference between the date and time in the first two <number>s and the date and time in the remaining two <number>s. The new calculated number of days and time are returned in the first and second <number variable>s respectively.

foffset -

<number> , <number> , <number> , <number>,
<number variable> , <number variable>

Returns a full calculated date and time given a date and time in the first two <number>s and the number of days and a time in the remaining two <number>s (either positive or negative). The new date and time are returned in the first and second <number variable>s respectively.

current -

Returns a <number> indicating the current time.

cin -

<string>

Converts the external form of time in <string> and returns a time as a <number>. Leading and trailing spaces are ignored.

cout -

<ctype> , <number> [, <string>]

Converts a time in <number> and returns an external form time as a <string>. The first character of the optional <string> is a delimiter used to format the time (i.e., ":", etc.). If the string is empty (i.e., ""), no delimiter is used. If the delimiter is not specified, the user specified time delimiter is used.

» Back to the Table of Contents. «

translate
translate ( upper|lower|proper|ascii|hex|
  control|recordset|variable|xml , <string> [, <string>] )

Examples:

  translate(lower,'aBc')

Result: "abc"

  translate(hex,'abc')

Result: "616263"

  translate(recordset,'_a*b*1*2_')

Result: "ab12"

  translate(variable,'_a*b*1*2_')

Result: "a_b_1_2"

Description:

Returns a <string> with the characters of the first <string> translated according to the type of translation indicated by the first parameter. The values of the first parameter are as follows:

upper -

Translate all lowercase letters to uppercase letters.

lower -

Translate all uppercase letters to lowercase letters.

proper -

Translate the first character of each alphanumeric word to an uppercase letter and translate all other characters to lowercase letters.

ascii -

Translate hexadecimal characters to ascii characters.

hex -

Translate ascii characters to hexadecimal characters.

control -

Translate control characters (i.e., less than hex 20) into a replacement character. When the optional second <string> is specified, the first character is used as the replacement character (otherwise a space is used as the replacement character).

recordset -

Delete any non-alphanumeric characters from the returned <string>, which is then suitable to be used as recordset name.

variable -

Translate all non-alphanumeric characters to an underscore character. In addition, delete any leading or trailing non-alphanumeric characters, which is then suitable to be used as a variable name.

xml -

Translate xml sensitive characters into their internal entity representations, which includes the less-than, greater-than, quote, apostrophe, and ampersand characters.

» Back to the Table of Contents. «

trim
trim ( <string> , [not] <string> [, first|last|all] )

Examples:

  trim(' abc ',' ')

Result: "abc"

  trim(' abc# ',' #',last)

Result: " abc"

Description:

Return a <string> eliminating the leading and trailing characters from the first <string> that are in the set of characters specified by the second <string>.

If the option "not" is used prior to the second <string> parameter, the set of characters is reversed (i.e., not in the set of characters specified by the second <string> parameter).

When either the third parameter is not given or the third parameter is the mnemonic "all", both the leading and trailing characters are trimmed from the first <string> parameter. If the third parameter is the mnemonic "first", only the leading characters are trimmed. If the third parameter is the mnemonic "last", only the trailing characters are trimmed.

» Back to the Table of Contents. «

type
type ( <variable> [, <expression>] )

Examples:

  type(num)

Result: 1

  type(str)

Result: 3

  type(num,0.0)

Result: 0.0 (when "num" is not declared)

  type(str,'')

Result: '' (when "str" is not declared)

Description:

The first form of the "type" function does not use the second parameter <expression>. This form returns a <number> indicating the type of the parameter. The value of the returned <number> is as follows:

0
Unknown variable.
1
Number.
2
Float.
3
String.

The second form of the "type" function returns a result having a variable type that is consistent with the type of the second parameter <expression>.

When the <variable name> does not exists, the <expression> is returned instead. However, if the <variable name> does exists and is the same type as that of the <expression>, the content of the <variable name> is returned.

In the event that the <variable name> does exists and is not the same type as that of the <expression>, the content of the <variable name> is converted to be the same type as that of the <expression> prior to it being returned.

» Back to the Table of Contents. «

val
val ( <string> [, <number> ] )

Examples:

  val('45')

Result: 45

  val('45.6')

Result: 45.6

  val('45.6',0)

Result: 45

  val('45',1)

Result: 45.0

Description:

Returns a <number> or <float> representation of the first parameter. If the optional <number> parameter is not given, a type of <float> or <number> is returned depending upon the presence of the user defined decimal point character. If the <number> parameter is a value of 0, a type of <number> is explicitly returned. If the <number> parameter is a value of 1, a type of <float> is explicitly returned.

» Back to the Table of Contents. «

xmlatt
xmlatt ( <string> [, <string> ] )

Examples:

  xmlatt('height')

Result: "2.1"

  xmlatt('width','north_wall')

Result: "4.2"

Description:

Any of the attributes for the tags within an XML data file may be individually accessed, relative to their scope within recordsets, by employing the "xmlatt" function. The "xmlatt" function always returns a string representing the contents of the attribute (or an empty string if the attribute is not found).

If the optional second string is not specified, the first string is used to lookup an attribute for the XML data tag corresponding to the immediate record of the recordset. If the optional second string is specified, the first string is used to lookup an attribute for a specifically named XML data variable, designated by the second string, residing within the immediate record of the recordset.

» Back to the Table of Contents. «


Chapter 6 - Data Interface Overview
Overview
This chapter presents the interface between the application, FinerEdge Publisher, and FPML documents. (The term "application" refers to the Database Query, XML Data, and the calling Application interfaces.)

The purpose of the application data interface is to expose external data in a read-only manner for inclusion into generated document outputs. The documents can also utilize the application data to govern portions of their processing (in addition to formatting the data into the generated outputs).

A number of FinerEdge Publisher application interfaces can be used to initiate document processing. For example, some applications might call the WPF control FPWriterWPF, the .NET control FPWriterNet, the FPServerNET or FPServer Automation Server Interfaces, the Java Native Interface, or the FPEngine DLL.

Regardless of the FinerEdge Publisher application interface employed, the same underlying mechanism is used to expose application data to documents. As a result of this common data interface, the information presented in this chapter applies to all of the application interfaces discussed above.

When using any of the FinerEdge Publisher application interfaces, an application defines what data is exposed by utilizing elements called external variables. The application is then enlisted by FinerEdge Publisher to populate the external variables at various points during the processing of a document.

In addition to controlling what data is exposed to documents, an application can also control how the data is to be presented to the FinerEdge Publisher engine. The data can be modified in any manner prior to populating the external variables.

FinerEdge Publisher always caches external data for documents. As such, an application is only prompted for information when absolutely necessary. Regardless of how many times an external variable is used in a document, FinerEdge Publisher will only request the application to fetch data for a variable once, or until the logical record is changed or the cached values are cleared for a logical record (i.e., when fetching a new record).

» Back to the Table of Contents. «

Defining recordsets and external variables
Each variable that is defined by the application is grouped into an application/document defined recordset name. Recordsets are dynamically created by the application using the FinerEdge Publisher interface functions and may hold as many external variables as needed.

When FinerEdge Publisher signals an application to populate external variables, it does so relative to a particular recordset name. All variables belonging to a specific recordset will be populated at the same time by the application.

Therefore, an application should define the variables of a recordset to include those that can be most easily and efficiently fetched as a single unit. For example, since most databases fetch information based upon a database-defined record, an application should group the applicable fields from the database record into a single FinerEdge Publisher recordset.

The following diagram shows an example of a possible relationship between a FinerEdge Publisher recordset and an application database table:


As an example, the database table fields "Last_updated" and "Middle_initial" were purposely not exposed to the FinerEdge Publisher document by the application. In contrast, the FinerEdge Publisher external variable "Whole_name" is formatted by the application from the database table fields "First_name", "Middle_initial", and "Last_name".

» Back to the Table of Contents. «

Creating external variables
Before a document is processed or edited, FinerEdge Publisher will call the InitDocument interface event or the initDocument DLL callback function. The application then creates the external variables and corresponding recordsets for the document by calling the interface method AppendVariable or the DLL function FPAppendVariable as shown in the diagram below:


The name of the main FinerEdge Publisher method is passed as a parameter to InitDocument. The application can use the name of the main method to differentiate between the variables of different documents (if applicable).

The recordset name that the variable is associated with is passed as a parameter to AppendVariable in addition to the name of the variable itself. If the recordset does not currently exist, it is dynamically created prior to appending the variable to it. The recordset name must not include any underscore characters.

The newly created external variables are referenced by the document by the following format:

@<recordset name>_<variable name>

» Back to the Table of Contents. «

Creating and populating global variables
Calling the SetVarLong, SetVarDouble, SetVarString, SetVarDate, or SetVarTime interface methods prior to a document being generated will cause the creation of those variables to be queued. The variables are then created and populated when the document is first being generated. Any external variables that are queued prior to document creation are also present for all successive document generated outputs until explicitly cleared by calling the interface Clear method.

Variables created prior to the document being processed utilize a recordset name of Global (Note: the interface method AppendVariable is NOT used to create external variables with a recordset name of Global). For example, a variable name of "Test1" would be referenced within a document by the name:

@Global_Test1

» Back to the Table of Contents. «

Using FinerEdge Publisher recordset parameters passed from documents
Recordset parameters allow a document to communicate any instructions to the application in a well-defined manner. Recordset parameters are retrieved by an application by calling the interface methods FindParam and GetParam or the FPEngine DLL functions FPFindParam and FPGetParam.

For single-record recordsets (presented below), a document author can set one or more parameters for a particular recordset prior to accessing any of the variables associated with the recordset. The parameters are set by using the "Select" action of the recordset tag.

When the "Select" action is used to set parameters for a single-record recordset, the corresponding external variables for that recordset are also "cleared". This, in turn, forces the application to refetch the data from a possible different source (i.e., database record, etc.).

For multiple-record recordsets (also presented below), a document author can set one or more parameters for a particular recordset "drilldown". The parameters are set when creating a recordset drilldown by using the "New" action of the recordset tag.

The word "drilldown" is a common data processing term that also implies a one-to-many relationship (i.e., we drilldown from a single parent record to one or more child records). Drilldown recordsets can be nested within each other when accessing information from within a FinerEdge Publisher document (i.e., for each record of a multiple-record drilldown recordset, this can result in further embedded one-to-many relationships, etc.).

» Back to the Table of Contents. «

Single-record recordsets (one-to-one relationships)
Single record-recordsets are both simple and straightforward to use in FinerEdge Publisher. Single-record recordsets do not necessarily imply that the corresponding application table contains only fixed data. Instead, based upon information known only by the application or through recordset parameters (or both), only one logical record exists.

For example, suppose an application accessed an account table in a database. If the account number was known by the application, only a single record of that table might be applicable to the document being processed. The same document could be subsequently processed many times perhaps using different account numbers. Regardless, FinerEdge Publisher considers this type of situation a single-record recordset.

In addition, external variables could be fetched for a particular recordset that, in turn, are used to set parameters for different recordsets. The application could fetch the parameters and use the information to access a single record in another table. (Note: External variables are always initialized when using the "Select" action of the recordset tag which, in turn, forces an interface GetRecord call when the variables are accessed by the document.)

When FinerEdge Publisher calls the interface "GetRecord" method, the applicable recordset name is passed as a parameter to the method or function. This allows the application to fetch just the data for that particular recordset and populate the applicable external variables.

The following diagram shows how external variables are populated for a document when using single-record recordsets (note that use of the recordset tag is optional when utilizing this type of access):


» Back to the Table of Contents. «

Multiple-record recordsets (one-to-many relationships)
As mentioned previously in this chapter, multiple-record recordsets (i.e., one-to-many relationships) are also known as "drilldown" recordsets in FinerEdge Publisher. That is to say, we drilldown from a parent record into one or more child records based on, in part, the data acquired from the parent record.

In addition, drilldown recordsets can be nested within each other. A parent record could reference one or more child records in another recordset that, in turn, each reference one or more child records in still other recordsets, etc.

Drilldown recordsets are created by using the "New" action of the recordset tag in a document. When a document is finished accessing all of the records in a drilldown recordset, it deletes the recordset by using the "Delete" action of the recordset tag. In turn, this causes FinerEdge Publisher to revert back to the previously active drilldown recordset along with current record of that recordset.

When a document wishes to access the external variables for a particular record of a drilldown, it sets the logical record number using the "Record" action of the recordset tag. FinerEdge Publisher then initializes the external variables associated with that recordset and calls the interface "InitRecord" method, passing the applicable recordset name as a parameter.

A call to the interface "InitRecord" method instructs the application to store any parameters necessary to efficiently access each of the requested records in the "GetRecord" method or function. For each of the requested records to be returned, the application then calls the interface "AppendRecord" method. Then, for each parameter that must be stored with each record, the application calls the interface "AppendRecordParam" method. (Note: In database applications, a single parameter can usually be appended to each record that stores the "Identity" or "Counter" field of that record.)

Each record appended to the recordset during the interface "InitRecord" call is known to the document by a logical record number. A logical record number is simply a sequential number that starts from one. In addition, the last record returned by the application for a drilldown recordset can be accessed by the document through the "rsrecords" function.

When the document references an external variable that has not been populated by the application, FinerEdge Publisher calls interface "GetRecord" method, passing the recordset name as a parameter. This allows the application to fetch just the data for that particular recordset and populate its applicable external variables.

An application accesses the parameters for a specific record of a recordset by calling the interface "FindParam" and "GetParam" methods. These methods will return just the parameters for a logical record that was set by the document, which was initially stored by the application during the interface "InitRecord" call.

The following diagram depicts how drilldown recordsets are created and deleted. The diagram also shows how logical records are selected by a document and how external variables are populated for a document when using multiple-record recordsets:


» Back to the Table of Contents. «

Database Query Data Sources
FinerEdge Publisher utilizes a built-in database query facility for all FinerEdge Publisher components. ODBC data sources, OLEDB data links, and ADO data links can be utilized along with XML data files and data supplied directly from applications in a concurrent manner. Database access is controlled by definition files that are specified via querydata tags. These definitions are called FinerEdge Publisher SQL files.

The same callback functions and/or events are employed for database query access as are utilized to fetch XML Data or data from a host application. When the interface methods InitDocument, InitRecord, GetRecord, and CloseRecord are called, the applicable FinerEdge Publisher application interfaces call the query (database) definition if one is currently attached to the document.

As such, a FinerEdge Publisher document can be generated in a standard mode where an application supplies all external data, in a pure database mode where FinerEdge Publisher manages all data access, in a pure XML data mode of operation, or in a mixed-mode of operation where all of the aforementioned data sources are used simultaneously.

FinerEdge Publisher SQL files:

When FinerEdge Publisher SQL files (i.e., having an fsq extension) are specified via querydata tags, data access is handled by FinerEdge Publisher through it's query (database) implementation. These SQL definition files are created and updated by the FinerEdge Publisher Query Designer that is built into the IDE. Please refer to the FinerEdge Publisher IDE Manual and the Query Designer Tutorial for more information on this subject.

More than one FinerEdge Publisher SQL file may be specified via multiple querydata tags within a document entity or module entity. However, all connection and query element names must be unique so that they can be referenced from a recordset tag (otherwise an error will be generated). If the same FinerEdge Publisher SQL file is specified more than once, a subsequent definition will be ignored.

If a connection expression contains the tilde character ("~"), it will be replaced with the directory of the SQL file. This allows a relative name to be specified for a database file location with ADO and OLEDB if applicable (e.g., for MSAccess files).

» Back to the Table of Contents. «

XML Data Files
FinerEdge Publisher can directly access one or more XML data files from documents. XML data files can be used along with database queries, and data supplied directly from an application.

XML data files contain a hierarchical structure of tags, attributes, and data that is encapsulated by tags. While XML data files do not generally replace relational databases for repositories of data, they do represent a very powerful and flexible way for exchanging information over networks including the Internet.

FinerEdge Publisher uses it's built-in recordset facility (i.e., recordset tags) along with recordset "drilldowns" to access the XML data in exactly the same manner as it accesses application specific information. The recordset tags are nested within other recordset tags to provide hierarchical drilldown access into the XML data file structures.

Please refer to the xmldata tag, IDE Manual, and installation supplied document "FinerEdge Publisher XML Data Tutorial" for more information on this subject.

Standard XML Data types supported:

The FinerEdge Publisher XML data implementation normally interprets all XML data as string values unless XML data types are used within the XML data file. The built-in FinerEdge Publisher functions can also convert most types of XML data into another data type if desired.

The XML data types are specified by the following attribute names:

dt = "<value>" or

dt:dt = "<value>" or

<any name>:dt = "<value>"

The <value> shown above are interpreted as follows (any mnemonic not listed below is automatically interpreted as a string):

"boolean", "int" -

A FinerEdge Publisher whole number variable.

"number", "float", "decimal", "fixed" -

A FinerEdge Publisher floating point number variable.

"date" -

A date value that is translated into a FinerEdge Publisher number variable. If the XML data contains a user defined delimiter character, it's interpreted according to FinerEdge Publisher conversion rules (otherwise, the date must be in the XML date format of "YYYYMMDD").

"time" -

A time value that is translated into a FinerEdge Publisher number variable and interpreted according to FinerEdge Publisher conversion rules.

Please refer to the FinerEdge Publisher XML Data Tutorial and the example XML data file "XMLTest.xml" for more information on this subject.

» Back to the Table of Contents. «


Chapter 7 - Application Data Interface
Overview
Interfaces:

Prior to referring to this chapter, it is presumed that the individual has read and understood the chapter "Application Data Interface". The chapter "Application Data Interface" gives a detailed explanation of the interaction between an application, documents, and FinerEdge Publisher in creating and populating external variables.

This chapter describes the properties, methods, and events for the FPWriterWPF, FPWriterNET, FPWriter, FPJNI (Java), FPWriterCPP, FPServerNet, and FPServer interfaces. The FPWriterWPF, FPWriterNET, FPWriter, and FPWriterCPP interfaces enable an application to view FinerEdge Publisher documents from within the application in addition to generating all supported cross-media outputs.

Each of the FinerEdge Publisher interfaces are summarized as follows:

FPWriterWPF:

The FPWriterWPF interface is composed of a custom control named FPWriterCC and a user control named FPWriterUC. The FPWriterCC represents the view of the generated document while the FPWriterUC encapsulates the FPWriterCC and additionally implements the outline panel. The FPWriterUC also exposes the FPWriterCC, which hosts the majority of the properties, methods, and events that are described in this section.

FPWriterNET and FPWriter:

A standard control panel is built into the FPWriterNET and FPWriter interfaces that allow an individual to position the document, zoom in and out, etc. The panel can be positioned at the top of the view (i.e., prior to the document viewing area) or at the bottom of the view (i.e., after the document viewing area). In addition, an individual may decide to not show the panel at all. In this case, the FPWriterNET/FPWriter interfaces have supporting properties, methods, and events that allow a person to design their own control panel that, in turn, calls the applicable interfaces to perform the same actions as the built-in control panel.

FPWriterCPP:

The FPWriterCPP interface is for C++ callers that implements all FinerEdge Publisher functionality. This interface supports every display type to include DirectX. The caller only needs to supply a standard Window handle to have complete view capabilities. In addition, this interface supports all FinerEdge Publisher event types by offering optional registration methods relative to each event type.

FPJNI:

FPJNI is a Java Native Interface (JNI) that was primarily developed for use with server-side Java components (i.e., EJBs, Beans, and Servlets). FPJNI supports all FinerEdge Publisher functionality, including events and document generation cross-media outputs. However, FPJNI does not support directly viewing documents, which is considered to be client functionality.

FPJNI (i.e., "FPJNI.dll") is accessed by creating an instance of the "FPJNIDefs" class located within the supplied file "FPJNIDefs.java". The callback events of the FPJNIDefs class (i.e., InitDocument, InitRecord, GetRecord, and CloseRecord) are supported by an interface class called FPJNIEvents located within the supplied file "FPJNIEvents.java".

FPServerNet:

The FPServerNet interface is a standard CLR assembly that supports all FinerEdge Publisher functionality (including events) except a built-in document viewer. In addition to the database query and XML data interfaces, initial application variables can be set by calling the standard FinerEdge Publisher "SetVar..." methods prior to document creation or by responding to various events during document generation.

FPServer:

The FPServer interface is an Automation Server that has a dual implementation, which supports the IDispatch interface (i.e., late binding) for VBScript and JScript compatibility. The FPServer interface supports all FinerEdge Publisher functionality except the built-in document viewer and event facilities. In addition to the database query and XML data interfaces, initial application variables can be set from VBScript and JScript applications by calling the standard FinerEdge Publisher "SetVar..." methods.

Application Data:

A number of methods and events deal specifically with external application data that is made available to a document. An individual can decide what application data will be made available to the document and also how the application data is accessed and formatted. The data is presented to the document in the form of external variables. External variables are cached in FinerEdge Publisher so that a document author can repeatedly utilize them without refetching the data. One-to-many relationships (i.e., "drilldowns") are also an integral part of the FinerEdge Publisher application data interface and may be nested to any degree required.

» Back to the Table of Contents. «

AdjustLinks
Interfaces: FPWriterCPP

C++:

bool AdjustLinks(int value)

Return value:

A "true" value returned by this method indicates that the current link was fully adjusted. In contrast, a "false" value indicates that the current link was only partially adjusted (i.e., the start or end of the list was encountered).

Parameters:

value
A positive value adjusts the current link forwards whereas a minus value adjusts the current link backwards.
Description:

This method adjusts the current link relative to it's present position.

» Back to the Table of Contents. «

AppendRecord
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet

C#:

void AppendRecord()

Visual Basic:

Sub AppendRecord()

C++:

void AppendRecord()

Java:

void AppendRecord()

Return value:

None.

Parameters:

None.

Description:

This method should only be called while processing the InitRecord event. For a detailed explanation of presenting application data to the documents and the interaction between the application and FinerEdge Publisher, please refer to the chapter "Application Data Interface".

While handling the InitRecord event for a multiple-record recordset, the AppendRecord method appends a new record to the currently defined recordset. One or more calls to this method are normally performed within the InitRecord event.

The records are appended to the recordset starting with a logical record of 1 (i.e., as referred to by the document). For each record appended to the recordset, one or more subsequent calls to the AppendRecordParam method can be performed to supply a number of "keys" for the application to fetch the appropriate record during the GetRecord event.

» Back to the Table of Contents. «

AppendRecordParam
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet

C#:

void AppendRecordParam(String key,
  String value)

Visual Basic:

Sub AppendRecordParam(ByVal key As String,
  ByVal value As String)

C++:

void AppendRecordParam(_TCHAR *key,
  _TCHAR *value)

Java:

void AppendRecordParam(String key,
  String value)

Return value:

None.

Parameters:

key
An application defined "key" that is recognized during the GetRecord event.
value
An application defined "value" that is used during the GetRecord event to fetch the proper record.
Description:

This method should only be called while processing the InitRecord event. For a detailed explanation of presenting application data to the documents and the interaction between the application and FinerEdge Publisher, please refer to the chapter "Application Data Interface".

Following a call to the AppendRecord method, one or more calls to AppendRecordParam are performed by the application to supply a number of "keys" for the application to fetch the appropriate record during the GetRecord event. The FindParam or GetParam methods are used to retrieve the application defined "key" and "value" pairs during the GetRecord event.

In a relational database application, multiple-record recordsets can usually be retrieved during the GetRecord event by storing their respective Identity or Counter fields with a single call to the AppendRecordParam method for each record requested.

» Back to the Table of Contents. «

AppendVariable
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet

C#:

bool AppendVariable(String rsName,
  String name,
  String desc)

Visual Basic:

Function AppendVariable(ByVal rsName As String,
  ByVal name As String,
  ByVal desc As String) As Boolean

C++:

bool AppendVariable(_TCHAR *rsName,
  _TCHAR *name,
  _TCHAR *desc)

Java:

boolean AppendVariable(String rsName,
  String name,
  String desc)

Return value:

A "true" value returned by this method indicates that the variable was successfully created. In contrast, a "false" value indicates that a variable with the same name already exists.

Parameters:

rsName
The name of the recordset that this variable is a part of (underscore characters cannot be used in the recordset name). If the name of the application defined recordset is not known, a new recordset is automatically established for the variable by FinerEdge Publisher.
name
The name of the external variable that is a part of the previously supplied recordset name (underscore characters can be used in the variable name). If the name of the recordset is "GenInfo" and the variable name is "IntRate", the external variable would be constructed and known to the document as: "@GenInfo_IntRate".
desc
A optional description of the external variable currently being defined. The variable name and its description is displayed to the document author(s) while in the expression editor of the FinerEdge Publisher IDE.
Description:

This method should only be called while processing the InitDocument event. For a detailed explanation of presenting application data to the documents and the interaction between the application and FinerEdge Publisher, please refer to the chapter "Application Data Interface".

During the InitDocument event, an application must define an external variable for each piece of information it wishes to expose to the application by calling the AppendVariable method.

» Back to the Table of Contents. «

Catalog
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

String, Get/Set

C#:

Catalog

Visual Basic:

Catalog

C++:

void GetCatalog(_TCHAR *name)
void SetCatalog(_TCHAR *name)

Java:

String GetCatalog()
void SetCatalog(String name)

Description:

The Catalog property gets or sets the name of the catalog file. This property must be set prior to using any of the "Create..." methods (i.e., FinerEdge Publisher always employs a catalog while processing documents). Different groups of documents may use different catalog files or all documents may use the same catalog file.

Catalog files can be created and modified from the FinerEdge Publisher Integrated Development Environment (IDE).

» Back to the Table of Contents. «

ChartServer
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

String, Get/Set

C#:

ChartServer

Visual Basic:

ChartServer

C++:

void GetChartServer(_TCHAR *params)
void SetChartServer(_TCHAR *params)

Java:

String GetChartServer()
void SetChartServer(String params)

Description:

The ChartServer property gets or sets the chart server parameters. For more information on chart server options, please see Appendix D (FPChartServer Process) of this reference manual.

» Back to the Table of Contents. «

Clear
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

bool Clear()

Visual Basic:

Function Clear() As Boolean

C++:

bool Clear()

Java:

void Clear()

Return value:

A "true" value returned by this method indicates that the Clear method was successful.

Parameters:

None.

Description:

The Clear method can be called to discard any queued external variables (i.e., variables that are automatically created during document initialization).

» Back to the Table of Contents. «

Close
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

bool Close()

Visual Basic:

Function Close() As Boolean

C++:

bool Close()

Java:

void Close()

Return value:

A "true" value returned by this method indicates that the Close method was successful and the form can unload (if applicable).

Parameters:

None.

Description:

This Close method explicitly causes all resources and the temporary file used by a document to be discarded and removed. In contrast, when a form is unloaded all resources and the temporary file are implicitly discarded and removed.

» Back to the Table of Contents. «

CloseDocument
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPJNI, FPServerNet

C#:

void CloseDocument()

Visual Basic:

Sub CloseDocument()

Java:

void CloseDocument()

Parameters:

None.

Description:

When the "CloseDocument" event is called, it can be used to close or discard any document level resources in the calling application or to call the RefSearch and RefGet methods after the reference table has been fully populated.

» Back to the Table of Contents. «

CloseRecord
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPJNI, FPServerNet

C#:

void CloseRecord(String rsName)

Visual Basic:

Sub CloseRecord(ByVal rsName As String)

Java:

void CloseRecord(String rsName)

Parameters:

rsName
A <string> that specifies the name of the application defined recordset that is currently being closed.
Description:

When the "CloseRecord" event is called, it can be used to close or discard resources such as database recordsets in the calling application.

» Back to the Table of Contents. «

ControlPanel
Interfaces: FPWriterNET, FPWriter

Integer, Get/Set

C#:

ControlPanel

Visual Basic:

ControlPanel

Description:

This property gets or sets the visibility of the FPWriter built-in control panel. The control panel allows a user to position the document, zoom in and out, etc. An individual may choose to provide the functionality of the panel with their own controls by interfacing them with the appropriate FPWriter properties, methods, and events.

The ControlPanel property may be set to one of the following values:

0
Do not display the control panel.
1
Display the control panel at the top of the control (default).
2
Display the control panel at the bottom of the control.

» Back to the Table of Contents. «

CreatedDocument
Interfaces: FPWriterWPF

C#:

void CreatedDocument()

Visual Basic:

Sub CreatedDocument()

Parameters:

None.

Description:

The "CreatedDocument" event indicates when a document has been created. This in turn allows actions to be taken that might include refreshing the UI.

» Back to the Table of Contents. «

CreateDocument
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void CreateDocument()

Visual Basic:

Sub CreateDocument()

C++:

void CreateDocument()

Java:

void CreateDocument()

Return value:

None.

Parameters:

None.

Description:

The CreateDocument method processes a document and creates a resulting file (known internally by FinerEdge Publisher). The resulting file is subsequently used by one or more "Generate..." methods to output the document in various formats.

All application interaction, processing, and formatting of a document are accomplished by this method. The "Error" property and "GetErrorText" methods should be checked following a call to this method. In addition, the "DocCreated" property can also be checked prior to calling any of the "Generate..." methods.

» Back to the Table of Contents. «

CreateDOCX
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void CreateDOCX(String options)

Visual Basic:

Sub CreateDOCX(ByVal options As String)

C++:

void CreateDOCX(_TCHAR *options)

Java:

void CreateDOCX(String options)

Return value:

None.

Parameters:

None (not currently used).

Description:

The "CreateDOCX" method processes a document and creates a docx file representing the FinerEdge Publisher document. The "Error" property and "GetErrorText" methods should be checked following a call to this method. The property "ResultFile" must be set to name the resulting DOCX file. By convention, the resulting file name should have an extension of "docx".

» Back to the Table of Contents. «

CreateEPUB
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void CreateEPUB(String options)

Visual Basic:

Sub CreateEPUB(ByVal options As String)

C++:

void CreateEPUB(_TCHAR *options)

Java:

void CreateEPUB(String options)

Return value:

None.

Parameters:

options
[ <keyword> : <value> ; ]...

htmlpagemode
paged | explicit | none (Default: paged)

When this option is set to "paged" (the default), each page is generated as a separate file with the suffix "_Page_<page #>" followed by the extension.

When this option is set to "explicit", only explicit page breaks cause separate files to be generated.

When this option is set to "none", the traditional html generation will not segment the document into separate pages.

epubobfuscate
true | false (Default: false)

When this option is set to true, fonts will be obfuscated. Fonts should be obfuscated unless there exists specific reasons not to obfuscate the font resources being embedded in this document.

epubkindlefire
true | false (Default: false)

When this option is set to true, automatically call the kinglegen program after the EPUB document generation has completed.


Description:

The "CreateEPUB" method processes a document and creates one epub file representing the "paged" FinerEdge Publisher document. The "Error" property and "GetErrorText" methods should be checked following a call to this method. The property "ResultFile" must be set to name the resulting EPUB file. By convention, the resulting file name should have an extension of "epub".

When page breaks are detected, elements are properly closed and then re-opened again on the next page. In addition, headers, footers, left/right page areas, and page breaks are also observed.

If the variable "HTMLHeadExt" is set to a string in the document, its value will be output into the HTML head tag following the initial content.

If the variable "EPUBIDPrefix" is set to a string in the document, its value will be used as a custom ID prefix instead of a default new GUID. By explicitly setting a value, versions of the same document can be generated where they differ by only the modified date suffix.

If the variable "EPUBLanguage" is set to a string in the document, its value will be used as the custom language instead of the default for the originating locale (ll-CC, where ll is an ISO 639 language code and CC is an ISO 3166 country code).

If the variable "EPUBManifest" is set to a string in the document, its value extends the manifest, where each line added to the manifest can be separated by a pipe ("|") character.

» Back to the Table of Contents. «

CreateHTMLPaged
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void CreateHTMLPaged(String options)

Visual Basic:

Sub CreateHTMLPaged(ByVal options As String)

C++:

void CreateHTMLPaged(_TCHAR *options)

Java:

void CreateHTMLPaged(String options)

Return value:

None.

Parameters:

options
[ <keyword> : <value> ; ]...

htmlpagemode
paged | explicit | none (Default: paged)

When this option is set to "paged" (the default), each page is generated as a separate file with the suffix "_Page_<page #>" followed by the extension.

When this option is set to "explicit", only explicit page breaks cause separate files to be generated.

When this option is set to "none", the traditional html generation will not segment the document into separate pages.

htmlsingle
true | false (Default: false)

By default, each page generated a separate file with the suffix "_Page_<page #>" followed by the extension. When this option is set to true, a single file is generated with comments delimiting each complete page.

When separate files are generated for each page, an index page is automatically generated that has links to each individual page. The index page uses specific class names for its elements that utilize the sample styles generated.


Description:

The "CreateHTMLPaged" method processes a document and create one or more HTML files representing the "paged" FinerEdge Publisher document. The "Error" property and "GetErrorText" methods should be checked following a call to this method. The property "ResultFile" must be set to name the resulting HTML file. By convention, the resulting file name should have an extension of "htm" or "html".

When page breaks are detected, elements are properly closed and then re-opened again on the next page. In addition, headers, footers, left/right page areas, and page breaks are also observed.

If the variable "HTMLHeadExt" is set to a string in the document, its value will be output into the HTML head tag following the initial content.

» Back to the Table of Contents. «

CreateText
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void CreateText()

Visual Basic:

Sub CreateText()

C++:

void CreateText()

Java:

void CreateText()

Return value:

None.

Parameters:

None.

Description:

The "CreateText" method processes a document and creates a Text file representing the FinerEdge Publisher document. The "Error" property and "GetErrorText" methods should be checked following a call to this method. The property "ResultFile" must be set to name the resulting Text file. By convention, the resulting file name should have an extension of "txt".

All resolved text fragments are assembled from the document stream and written to the file name designated by the ResultFile property. However, no style information or page-relative information is output to the resulting file.

» Back to the Table of Contents. «

CurrencyDelim
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

String, Get/Set

C#:

CurrencyDelim

Visual Basic:

CurrencyDelim

C++:

void GetCurrencyDelim(_TCHAR *value)
void SetCurrencyDelim(_TCHAR *value)

Java:

String GetCurrencyDelim()
void SetCurrencyDelim(String value)

Description:

Sets or gets the currency delimiter that is used in various FinerEdge Publisher functions. The default value is the "$" character.

» Back to the Table of Contents. «

DateDelim
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

String, Get/Set

C#:

DateDelim

Visual Basic:

DateDelim

C++:

void GetDateDelim(_TCHAR *value)
void SetDateDelim(_TCHAR *value)

Java:

String GetDateDelim()
void SetDateDelim(String value)

Description:

Sets or gets the date delimiter that is used in various FinerEdge Publisher functions. The default value is the "/" character.

» Back to the Table of Contents. «

DateFormat
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

String, Get/Set

C#:

DateFormat

Visual Basic:

DateFormat

C++:

void GetDateFormat(_TCHAR *value)
void SetDateFormat(_TCHAR *value)

Java:

String GetDateFormat()
void SetDateFormat(String value)

Description:

This property gets or sets the date format that is used in various FinerEdge Publisher functions. The DateFormat property may be set to one of the following values:

us
Use the user specified date.
mm
Use MM/DD/YY date.
dd
Use DD/MM/YY date.
yy
Use YY/MM/DD date.
jj
Use YY/DDD Julian date.
nn
Use straight number of days.
cm
Use MM/DD/YYYY date (default).
cd
Use DD/MM/YYYY date.
cy
Use YYYY/MM/DD date.
cj
Use YYYY/DDD Julian date.

» Back to the Table of Contents. «

DecimalDelim
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

String, Get/Set

C#:

DecimalDelim

Visual Basic:

DecimalDelim

C++:

void GetDecimalDelim(_TCHAR *value)
void SetDecimalDelim(_TCHAR *value)

Java:

String GetDecimalDelim()
void SetDecimalDelim(String value)

Description:

This property gets or sets the decimal point delimiter that is used in various FinerEdge Publisher functions. The default value is the "." character.

» Back to the Table of Contents. «

Display
Interfaces: FPWriterNET, FPWriter, FPWriterCPP

Integer, Get/Set

C#:

Display

Visual Basic:

Display

C++:

short GetDisplay()
void SetDisplay(short value)

Description:

The "Display" property determines the type of display as follows:

0
Use GDI.
1
Use GDIPlus (default).
2
Use DirectX.

» Back to the Table of Contents. «

DocCreated
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

Boolean, Get only

C#:

DocCreated

Visual Basic:

DocCreated

C++:

bool GetDocCreated()

Java:

boolean GetDocCreated()

Description:

Gets the status of the resulting document following a call to the "CreateDocument" method. If "true", this property indicates that a resulting document has been successfully created and is available for the "Generate..." methods.

» Back to the Table of Contents. «

DocCreatedVal
Interfaces: FPServer

Integer, Get only

C#:

DocCreatedVal

Visual Basic:

DocCreatedVal

Description:

Gets the status of the resulting document following a call to the "CreateDocument" method. When set to a value of 1, this property indicates that a resulting document has been successfully created and is available for the "Generate..." methods. A value of 0 returned by this property indicates that a resulting document has not been successfully created.

» Back to the Table of Contents. «

Document/DocName
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

String, Get/Set

C#:

DocName

Visual Basic:

DocName

C++:

void GetDocument(_TCHAR *name)
void SetDocument(_TCHAR *name)

Java:

String GetDocName()
void SetDocName(String value)

Description:

This property gets or sets the name of the current FinerEdge Publisher document and must be set prior to using any of the "Create..." methods. The property DocName can be used as a synonym for Document.

» Back to the Table of Contents. «

Error
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

Boolean, Get only

C#:

Error

Visual Basic:

Error

C++:

bool GetError()

Java:

boolean GetError()

Description:

Gets the status of the error flag for the last "Create..." method called. If a value of "true" is returned by this property for the FPWriterWPF, FPWriterNet, FPWriter, or FPServerNet, a subsequent call to the "GetErrorText" method retrieves additional information regarding the error. If a value of "true" is returned by this property for the FPServer, a subsequent call to the "GetError..." properties can be made to retrieve additional information regarding the error. A value of "false" returned by this property indicates that the last "Create..." method completed successfully.

Since the value of this property is reset at the beginning of each method call, the "DocCreated" property should be used to determine if a resulting document was successfully created and is available to the "Generate..." methods.

» Back to the Table of Contents. «

ErrorVal
Interfaces: FPServer

Boolean, Get only

C#:

ErrorVal

Visual Basic:

ErrorVal

Description:

Gets the status of the error flag for the last "Create..." method called. When set to a value of 1, a subsequent call to the "GetError..." properties can be made to retrieve additional information regarding the error. A value of 0 returned by this property indicates that the last "Create..." method completed successfully.

Since the value of this property is reset at the beginning of each method call, the "DocCreated" property should be used to determine if a resulting document was successfully created and is available to the "Generate..." methods.

» Back to the Table of Contents. «

FindParam
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet

C#:

bool FindParam(String key,
  ref String value)

Visual Basic:

Function FindParam(ByVal key As String,
  value As String) As Boolean

C++:

bool FindParam(_TCHAR *key,
  _TCHAR *value)

Java:

boolean FindParam(String key)

Return value:

A "true" value returned by this method indicates that the parameter "key" was found. In contrast, a "false" value indicates that the parameter "key" was not found.

Parameters:

key
The application defined "key" to fetch.
value
The returned application defined "value" corresponding to the "key".
Description:

This method should only be called while processing the InitRecord and GetRecord events. For a detailed explanation of presenting application data to the documents and the interaction between the application and FinerEdge Publisher, please refer to the chapter "Application Data Interface".

When called while processing the InitRecord or GetRecord events, this method returns the parameters that were optionally set by a document's recordset tag. However, if this method is called while processing the GetRecord event for a multiple-record recordset, the parameters are returned that were set by the application with the AppendRecordParam method in the InitRecord event. In this case, the parameters refer to a specific physical record corresponding to a logical record number requested by the document.

» Back to the Table of Contents. «

FindVar
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet

C#:

int FindVar(String name,
  ref String value)

Visual Basic:

Function FindVar(ByVal name As String,
  value As String) As Integer

C++:

int FindVar(_TCHAR *name,
  _TCHAR *value)

Java:

int FindVar(String name)

Return value:

The type of the variable (0=None, 1=Number, 2=Float, 3=String).

Parameters:

name
The name of the variable to fetch.
value
The value of the variable.
Description:

When the "set" tag is used with the optional "external", variables are additionally set into the output variables list. If the variable already exists in the list, its value is updated. Output variables can be accessed after document processing using this method and the GetVar method.

» Back to the Table of Contents. «

FireMark
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet

Integer, Get/Set

C#:

FireMark

Visual Basic:

FireMark

C++:

short GetFireMark()
void SetFireMark(short value)

Java:

int GetFireMark()
void SetFireMark(int value)

Description:

The "FireMark" property controls when the Mark event is fired as follows:

0
Fire the Mark event for all mark tags (default).
1
Fire the Mark event for first mark tag on each page.
2
Fire the Mark event for last mark tag on each page.
3
Fire the Mark event for first and last mark tag on each page.

If no mark tag(s) are present for a page, then no mark events will be fired. However, if the "FireMark" property is set to 3 and only one mark tag exists on a particular page, then two mark events will be fired on the same mark tag which represents the first and last mark tag on that page.

» Back to the Table of Contents. «

FPReadPreferences
Interfaces: FPUtility, FPUtilityNet

C#:

public static bool FPReadPreferences(out string Version,
  out string Catalog,
  out string DocDir,
  out string ResultDir,
  out string Dllx86Dir,
  out string Dllx64Dir,
  out string Error)

C++:

bool FPReadPreferences(_TCHAR *pVersion,
  _TCHAR *Catalog,
  _TCHAR *DocDir,
  _TCHAR *ResultDir,
  _TCHAR *Dllx86Dir,
  _TCHAR *Dllx64Dir,
  _TCHAR *Error)

Return value:

A "true" value returned by this method indicates success.

Parameters:

Catalog
The path of the catalog.
DocDir
The document directory.
ResultDir
The results directory.
Dllx86Dir
Directory for the 32-bit (x86) DLLs
Dllx64Dir
Directory for the 64-bit (x64) DLLs.
Error
Error message (if the result is a "false" value).
Description:

This method will locate and read certain key FinerEdge Publisher preferences used for component initialization. This method is usually followed by an invocation of the FPSetDllDirectory method.

» Back to the Table of Contents. «

FPSetDllDirectory
Interfaces: FPUtility, FPUtilityNet

C#:

public static bool FPSetDllDirectory(string Dllx86Dir,
  String Dllx64Dir)

C++:

bool FPSetDllDirectory(const _TCHAR *Dllx86Dir,
  const _TCHAR *Dllx64Dir)

Return value:

A "true" value returned by this method indicates success.

Parameters:

Dllx86Dir
Directory to set for the 32-bit (x86) DLLs.
Dllx64Dir
Directory to set for the 64-bit (x64) DLLs.
Description:

The method will use the system function SetDllDirectory to set either the 32-bit (x86) or 64-bit (x64) directory depending if the invocation is 32-bit or 64-bit. This is the primary reason that FinerEdge Publisher does not need to use the system PATH environment variable, and its use is also considered best-practice.

» Back to the Table of Contents. «

GeneratePDF
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void GeneratePDF(String options)

Visual Basic:

Sub GeneratePDF(ByVal options As String)

C++:

void GeneratePDF(_TCHAR *options)

Java:

void GeneratePDF(String options)

Return value:

None.

Parameters:

options
[ <keyword> : <value> ; ]...

Version
1.5 | 1.6 | 1.7 (Default: 1.7)

The PDF version is written into the header portion of the resulting PDF file.

OPI
disable | enable | explicit

When OPI is "disable", no OPI instructions are output regardless of the setting of the OPI style property. When OPI is "enable", OPI instructions are output if the value of an element's OPI style property is "true". However if OPI is "explicit", OPI instructions are output for all applicable elements regardless of the setting of the OPI style property.

OPIOnly
true | false (Default: false)

When OPIonly is set to "true", OPI instructions will be output for applicable images without "preview" images (i.e., the backgrounds will show instead). When OPIonly is "false", preview images are output in a normal manner with OPI instructions.

TT42Only
true | false (Default: false)

When TrueType fonts are embedded within a PDF output, generate only TrueType 42 font specifications instead of the default CID keyed font specifications (in which case no character codes greater than 255 will appear as their actual symbols in the generated document).


Description:

The GeneratePDF method generates a PDF file that represents the FinerEdge Publisher document. A prior call to the CreateDocument method must have been successfully performed (although multiple "Generate..." methods can be called following a single successful CreateDocument call). In addition, this method must only be called if the DocCreated property returns a value of "true". The property ResultFile must be set to name the resulting PDF file. By convention, the resulting file should have an extension of "pdf".

» Back to the Table of Contents. «

GeneratePostScript
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void GeneratePostScript(String options)

Visual Basic:

Sub GeneratePostScript(ByVal options As String)

C++:

void GeneratePostScript(_TCHAR *options)

Java:

void GeneratePostScript(String options)

Return value:

None.

Parameters:

options
[ <keyword> : <value> ; ]...

Version
2 | 3 (Default: 3)

The PostScript version is written into the header portion of the resulting PostScript file. In addition, if the PostScript version is greater than or equal to 3, all embedded TrueType fonts, Type 1 fonts, and in-line images are encoded using the "Flate" filter for optimum data compression.

OPI
disable | enable | explicit

When OPI is "disable", no OPI instructions are output regardless of the setting of the OPI style property. When OPI is "enable", OPI instructions are output if the value of an element's OPI style property is "true". However if OPI is "explicit", OPI instructions are output for all applicable elements regardless of the setting of the OPI style property.

OPIOnly
true | false (Default: false)

When OPIonly is set to "true", OPI instructions will be output for applicable images without "preview" images (i.e., the backgrounds will show instead). When OPIonly is "false", preview images are output in a normal manner with OPI instructions.

TT42Only
true | false (Default: false)

When TrueType fonts are embedded within a PostScript output, generate only TrueType 42 font specifications instead of the default CID keyed font specifications (in which case no character codes greater than 255 will appear as their actual symbols in the generated document).

CIDMap
true | false (Default: false)

When CIDMap is false, an identity map is used and any text characters are translated to glyph indexes. This results in a smaller sized PostScripty file being generated. When CIDMap is true, a CID map is generated and any text characters are not translated to glyph indexes.


Description:

The GeneratePostScript method generates a PostScript file that represents the FinerEdge Publisher document. A prior call to the CreateDocument method must have been successfully performed (although multiple "Generate..." methods can be called following a single successful CreateDocument call). In addition, this method must only be called if the DocCreated property returns a value of "true". The property ResultFile must be set to name the resulting PostScript file. By convention, the resulting file should have an extension of "ps".

» Back to the Table of Contents. «

GeneratePrint
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void GeneratePrint()

Visual Basic:

Sub GeneratePrint()

C++:

void GeneratePrint()

Java:

void GeneratePrint()

Return value:

None.

Parameters:

None.

Description:

The GeneratePrint method directly prints a FinerEdge Publisher document to a locally known or network printer device. A prior call to the CreateDocument method must have been successfully performed (although multiple "Generate..." methods can be called following a single successful CreateDocument call). In addition, this method must only be called if the DocCreated property returns a value of "true".

If the property "Media" is set to a locally known or network printer device, the document is directly printed to that device without displaying a Windows printer dialog box. However, if the property "Media" is not set, the standard Windows printer dialog box is first displayed to the user prior to printing the document.

» Back to the Table of Contents. «

GenerateView
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP

C#:

void GenerateView()

Visual Basic:

Sub GenerateView()

C++:

void GenerateView()

Return value:

None.

Parameters:

None.

Description:

The GenerateView method displays the FinerEdge Publisher document in the "viewer" window. A prior call to the CreateDocument method must have been successfully performed (although multiple "Generate..." methods can be called following a single successful CreateDocument call). In addition, this method must only be called if the DocCreated property returns a value of "true".

» Back to the Table of Contents. «

GenerateXPS
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void GenerateXPS(String options)

Visual Basic:

Sub GenerateXPS(ByVal options As String)

C++:

void GenerateXPS(_TCHAR *options)

Java:

void GenerateXPS(String options)

Return value:

None.

Parameters:

options
[ <keyword> : <value> ; ]...

Version
1.0 (Default: 1.0)

The XPS version is used to control XPS output.

Description:

The GenerateXPS method generates an XPS file that represents the FinerEdge Publisher document. A prior call to the CreateDocument method must have been successfully performed (although multiple "Generate..." methods can be called following a single successful CreateDocument call). In addition, this method must only be called if the DocCreated property returns a value of "true". The property ResultFile must be set to name the resulting XPS file. By convention, the resulting file should have an extension of "xps".

» Back to the Table of Contents. «

GetErrorEntity
Interfaces: FPJNI, FPServer

String, Get only

C#:

ErrorEntity

Visual Basic:

ErrorEntity

Java:

String GetErrorEntity()

Description:

Returns the entity's name where the error occurred.

» Back to the Table of Contents. «

GetErrorFile
Interfaces: FPJNI, FPServer

String, Get only

C#:

ErrorFile

Visual Basic:

ErrorFile

Java:

String GetErrorFile()

Description:

Returns the entity's file where the error occurred.

» Back to the Table of Contents. «

GetErrorLine
Interfaces: FPJNI, FPServer

Integer, Get only

C#:

ErrorLine

Visual Basic:

ErrorLine

Java:

long GetErrorLine()

Description:

Returns the line number where the error occurred (relative to one).

» Back to the Table of Contents. «

GetErrorCol
Interfaces: FPJNI, FPServer

Integer, Get only

C#:

ErrorCol

Visual Basic:

ErrorCol

Java:

long GetErrorCol()

Description:

Returns the column number where the error occurred (relative to one).

» Back to the Table of Contents. «

GetErrorMsg
Interfaces: FPJNI, FPServer

String, Get only

C#:

ErrorMsg

Visual Basic:

ErrorMsg

Java:

String GetErrorMsg()

Description:

Returns a descriptive text message for the error.

» Back to the Table of Contents. «

GetErrorText
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPServerNet

C#:

void GetErrorText(ref String entityName,
  ref String entityFile,
  ref int line,
  ref int col,
  ref String errorText)

Visual Basic:

Sub GetErrorText(entityName As String,
  entityFile As String,
  line As Integer,
  col as Integer,
  errorText As String)

C++:

void GetErrorText(_TCHAR *EntityName,
  _TCHAR *FileName,
  long 'Line,
  long 'Col,
  _TCHAR *Text)

Return value:

None.

Parameters:

entityName
The entity name that the error occurred in.
entityFile
The file name that the error occurred in.
line
The line number (relative to one) within the entity where the error occurred.
col
The column number (relative to one) within the entity where the error occurred.
errorText
The error message may be up to three lines separated by a carriage return character. In addition, the error message should be displayed using a "fixed" font (i.e., not a proportionally spaced font).
Description:

Following a "Create..." method call, the "Error" property should be checked for a value of "true" to determine if an error has occurred ("false" implies that no error occurred during the "Create..." method call). If the "Error" property is "true", additional information regarding the error may be obtained by calling the GetErrorText method.

The error information returned by this method may be subsequently utilized by an application to display error text to the user, open the entity file and position to the line and column of the error, or both. In many cases only the entity name and file, the position of the error, and the error text is displayed to the user.

» Back to the Table of Contents. «

GetOutline
Interfaces: FPWriterCPP

C++:

bool GetOutline(_TCHAR *text,
  int 'level,
  long 'realPage,
  long 'pageX,
  long 'pageY,
  int 'id)

Return value:

A "true" value returned by this method indicates that the outline was retrieved. In contrast, a "false" value indicates that the outline was not retrieved (i.e., the end of the outline list was encountered).

Parameters:

text
The outline item text.
level
The outline (indentation) level.
realPage
The real page number.
pageX
The x position on the page.
pageY
The y position on the page.
id
The id of the outline item.
Description:

This method retrieves the next outline item's information.

» Back to the Table of Contents. «

GetParam
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet

C#:

bool GetParam(int index,
  ref String key,
  ref String value)

Visual Basic:

Function GetParam(ByVal index As Integer,
  key As String,
  value As String) As Boolean

C++:

bool GetParam(int index,
  _TCHAR *key,
  _TCHAR *value)

Java:

  boolean GetParam(int index)

Return value:

A "true" value returned by this method indicates that a parameter was retrieved. In contrast, a "false" value indicates that a parameter was not retrieved.

Parameters:

index
An index value that corresponds to the "key" and "value" pair to be returned (relative to 1).
key
The returned application defined "key".
value
The returned application defined "value" corresponding to the "key".
Description:

This method should only be called while processing the InitRecord and GetRecord events. For a detailed explanation of presenting application data to the documents and the interaction between the application and FinerEdge Publisher, please refer to the chapter "Application Data Interface".

When called while processing the InitRecord or GetRecord events, this method returns the parameters that were optionally set by a document's recordset tag. However, if this method is called while processing the GetRecord event for a multiple-record recordset, the parameters are returned that were set by the application with the AppendRecordParam method in the InitRecord event. In this case, the parameters refer to a specific physical record corresponding to a logical record number requested by the document.

» Back to the Table of Contents. «

GetParamKey
Interfaces: FPJNI

Java:

String GetParamKey()

Return value:

The retrieved parameter key or variable name.

Parameters:

None.

Description:

Following a successful call to either the FindParam, FindVar, GetParam, or GetVar methods, this method returns the parameter "key" that was found (otherwise an empty string is returned).

» Back to the Table of Contents. «

GetParamValue
Interfaces: FPJNI

Java:

String GetParamValue()

Return value:

The retrieved parameter or variable value.

Parameters:

None.

Description:

Following a successful call to either the FindParam, FindVar, GetParam, or GetVar methods, this method returns the parameter "value" that was found (otherwise an empty string is returned).

» Back to the Table of Contents. «

GetVar
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet

C#:

int GetVar(int index,   ref String name,
  ref String value)

Visual Basic:

Function GetVar(index As Integer,
  name As String,
  value As String) As Integer

C++:

int GetVar(int index,
  _TCHAR *name,
  _TCHAR *value)

Java:

int GetVar(int index)

Return value:

The type of the variable (0=None, 1=Number, 2=Float, 3=String).

Parameters:

index
The index of the variable starting from 0.
name
The name of the variable to fetch.
value
The value of the variable.
Description:

When the "set" tag is used with the optional "external", variables are additionally set into the output variables list. If the variable already exists in the list, its value is updated. Output variables can be accessed after document processing using this method and the FindVar method.

» Back to the Table of Contents. «

GetRecord
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPJNI, FPServerNet

C#:

void GetParam(String rsName,
  String text)

Visual Basic:

Sub GetRecord(ByVal rsName As String,
  ByVal text As String)

Java:

void GetParam(String rsName,
  String text)

Parameters:

rsName
A <string> that specifies the name of the application defined recordset that is currently being processed.
text
A <string> that specifies an error condition during this operation, which should be an empty string when successfull.
Description:

The GetRecord event signals the application to fetch a recordset's data and assign the variables of the recordset using the SetVarDate, SetVarDouble, SetVarLong, SetVarString, and SetVarTime methods. For a detailed explanation of the use of this event, please refer to the chapter "Application Data Interface".

All of the variables of the recordset, as defined by the application, should be explicitly assigned values even if they are only set to zero or empty strings. If not done, any variables of the recordset that were not explicitly assigned values are automatically set to be a type of <number>s with a value of 0. In general, each time this event is called for a particular recordset, the variables of that recordset should always be assigned the same types (i.e., <number>, <float>, or <string>).

For a single-record recordset, the FindParam and GetParam methods are be used to fetch any optional parameters that were set via the document's recordset tag. However, for a multiple-record recordset, the FindParam and GetParam methods are used to fetch the parameters that were set by the application during the InitRecord event for this recordset.

In the multiple-record case, the application assigned parameters indicate how to fetch the physical record corresponding to the logical record being requested by the document through the RECORDSET tag.

» Back to the Table of Contents. «

GetRefSearch
Interfaces: FPJNI

Java:

String GetRefSearch()

Return value:

The retrieved reference search string.

Parameters:

None.

Description:

This method should only be called during the FPCloseDocument interface method (i.e., after the reference table has been populated). Following a successful call to the RefSearch method, this method returns the search value of the currently found reference.

» Back to the Table of Contents. «

GetRefText
Interfaces: FPJNI

Java:

String GetRefText()

Return value:

The retrieved reference text string.

Parameters:

None.

Description:

This method should only be called during the FPCloseDocument interface method (i.e., after the reference table has been populated). Following a successful call to the RefSearch method, this method returns the text value of the currently found reference.

» Back to the Table of Contents. «

GetRefPage
Interfaces: FPJNI

Java:

long GetRefPage()

Return value:

The retrieved reference page number.

Parameters:

None.

Description:

This method should only be called during the FPCloseDocument interface method (i.e., after the reference table has been populated). Following a successful call to the RefSearch method, this method returns the display page number of the currently found reference.

» Back to the Table of Contents. «

GetRefRealPage
Interfaces: FPJNI

Java:

long GetRefRealPage()

Return value:

The retrieved reference actual page number.

Parameters:

None.

Description:

This method should only be called during the FPCloseDocument interface method (i.e., after the reference table has been populated). Following a successful call to the RefSearch method, this method returns the real (actual) page number of the currently found reference.

» Back to the Table of Contents. «

GetRefOffset
Interfaces: FPJNI

Java:

long GetRefOffset()

Return value:

The retrieved reference offset.

Parameters:

None.

Description:

This method should only be called during the FPCloseDocument interface method (i.e., after the reference table has been populated). Following a successful call to the RefSearch method, this method returns the document rendering input file offset value of the reference.

» Back to the Table of Contents. «

GetRefIndex
Interfaces: FPJNI

Java:

long GetRefIndex()

Return value:

The retrieved reference index.

Parameters:

None.

Description:

This method should only be called during the FPCloseDocument interface method (i.e., after the reference table has been populated). Following a successful call to the RefSearch method, this method returns the index of the reference starting from 1.

» Back to the Table of Contents. «

HaveBackwardLinks
Interfaces: FPWriterWPF, FPWriterCPP

Boolean, Get only

C#:

HaveBackwardLinks

Visual Basic:

HaveBackwardLinks

C++:

bool HaveBackwardLinks()

Description:

A true value indicates that backward navigation links exists. This in turn allows actions to be taken that might include refreshing the UI.

» Back to the Table of Contents. «

HaveForwardLinks
Interfaces: FPWriterWPF, FPWriterCPP

Boolean, Get only

C#:

HaveForwardLinks

Visual Basic:

HaveForwardLinks

C++:

bool HaveForwardLinks()

Description:

A true value indicates that forward navigation links exists. This in turn allows actions to be taken that might include refreshing the UI.

» Back to the Table of Contents. «

InitDocument
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPJNI, FPServerNet

C#:

void InitDocument(String mainName)

Visual Basic:

Sub InitDocument(ByVal mainName As String)

Java:

void InitDocument(String mainName)

Parameters:

mainName
A <string> that corresponds to the name of the main method tag in the document. This name can be used by the application to perform special processing for specifically named documents or even types of documents if desired.
Description:

The InitDocument event signals the application to create all of the external variables for each recordset as well as optionally populate the holiday table. Both the external variables and their respective recordsets are created with the AppendVariable method. The optional holiday table is populated with the LoadHoliday method.

» Back to the Table of Contents. «

InitOutline
Interfaces: FPWriterCPP

C++:

void InitOutline()

Return value:

None.

Parameters:

None.

Description:

This method initialized the current outline item to be prior to the first item in the outline list.

» Back to the Table of Contents. «

InitRecord
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPJNI, FPServerNet

C#:

void InitRecord(String rsName,
  String text)

Visual Basic:

Sub InitRecord(ByVal rsName As String,
  ByVal text As String)

Java:

void InitRecord(String rsName,
  String text)

Parameters:

rsName
A <string> that specifies the name of the application defined recordset that is currently being processed.
text
A <string> that specifies an error condition during this operation, which should be an empty string when successfull.
Description:

The InitRecord event signals the application to assign parameters that corresponds to each record requested by a document's RECORDSET tag. This event is only called for a multiple-record recordset. For a detailed explanation of the use of this event, please refer to the chapter "Application Data Interface".

The FindParam and GetParam methods are used to fetch any optional parameters that were set via a document's recordset tag. Following that, uniquely identifying values (e.g., a relational database table's Identity or Counter column) for each physical record can be fetched by the application and assigned to each logical record via the AppendRecord and AppendRecordParam methods.

» Back to the Table of Contents. «

LoadHoliday
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void LoadHoliday(String date)

Visual Basic:

Sub LoadHoliday(ByVal date As String)

C++:

void LoadHoliday(_TCHAR *date)

Java:

void LoadHoliday(String date)

Return value:

None.

Parameters:

date
The externally formatted date to be appended into the holiday table. This parameter must be in the format specified by the "DateFormat" property.
Description:

This method should normally only be called while processing the InitDocument event. For a detailed explanation of presenting application data to the documents and the interaction between the application and FinerEdge Publisher, please refer to the chapter "Application Data Interface".

The optional "LoadHoliday" method appends a date corresponding to a holiday into the internal FinerEdge Publisher holiday table. If the holiday table is used, all applicable holiday dates should be loaded into the table within the InitDocument event. Loaded holiday dates affect FinerEdge Publisher date calculations (please refer to the "date" function for more information).

» Back to the Table of Contents. «

Mark
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPJNI, FPServerNet

C#:

void Mark(int type,
  String text1,
  String text2,
  String text3)

Visual Basic:

Sub Mark(ByVal type As Integer,
  ByVal text1 As String,
  ByVal text2 As String,
  ByVal text3 As String)

Java:

void Mark(int type,
  String text1,
  String text2,
  String text3)

Parameters:

type
The type of the mark event (see below).
text1, text2, text3
String parameters that vary in content based upon the type of the mark event.
Description:

When the mark tag is encountered in a document, a Mark event is fired. The Mark event may also be fired implicitly for status updates while processing a document. The first parameter determines the type of the mark event as follows:

0 -

Mark "Fire" events (i.e., a "type" value of "Fire"). In this case text1 contains the page number where the mark tag was seen while rendering the document, whereas text2 contains the result of the MARK tag's "expr" attribute.

1 -

Document processing events. In this case text1 contains the percent of processing that has been completed, whereas text2 contains the result of the mark tag's "expr" attribute.

2 -

Document rendering events. In this case text1 contains the percent of rendering that has been completed, whereas text2 contains the current page number where the rendering event occurred.

3 -

Document generation events. In this case text1 contains the percent of generation that has been completed, whereas text2 contains the current page number where the generating event occurred.

11 -

Completion event type 1. An application will always receive this event one time at the end of document processing and document rendering. In this case text1 contains the number of seconds that have elapsed during document processing, whereas text2 contains the number of seconds that have elapsed while performing only data access (i.e., data fetching) within document processing. In addition, text3 contains the number of seconds that have elapsed during document rendering.

12 -

Completion event type 2. An application will always receive this event one time at the end of document generation. In this case text1 contains the number of seconds that have elapsed while generating the document.

» Back to the Table of Contents. «

Media
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

String, Get/Set

C#:

Media

Visual Basic:

Media

C++:

void GetMedia(_TCHAR *name)
void SetMedia(_TCHAR *name)

Java:

String GetMedia()
void SetMedia(String device)

Description:

Gets or sets a string that specifies a printer device which is either local to the machine processing the document or a valid network printing device. This is an optional property that is only used while directly printing a document to a particular device from FinerEdge Publisher.

If this property is set, the standard Windows printer dialog is not displayed to the user (otherwise a standard Windows printer dialog is displayed to the user prior to printing the document). Also, if the string "DEFAULT" is used with the Program property Media, the default printer name for the Windows workstation is used instead.

» Back to the Table of Contents. «

MinHDSpace
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

Integer, Get/Set

C#:

MinHDSpace

Visual Basic:

MinHDSpace

C++:

long GetMinHDSpace()
void SetMinHDSpace(long value)

Java:

long GetMinHDSpace()
void SetMinHDSpace(long value)

Description:

This property specifies the minimum amount of free hard disk space in MBytes that must be present on the local workstation in order to store temporary files utilized during document generation. This property has a default value of 50 MBytes.

If less than the minimum amount of free hard disk space is present on the local workstation, document generation is discontinued along with a descriptive error message.

» Back to the Table of Contents. «

NewPage
Interfaces: FPWriterWPF, FPWriterNET, FPWriter

C#:

void NewPage(int page)

Visual Basic:

Sub NewPage(ByVal page As Integer)

Parameters:

page
A value that specifies the new page number that is about to be displayed (relative to 1).
Description:

FinerEdge Publisher calls the NewPage event prior to the first page of a document being viewed or just prior to a subsequent new page being displayed. This event is only applicable to the viewer (i.e., printing or generating output formats will not call this event).

» Back to the Table of Contents. «

NewZoom
Interfaces: FPWriterWPF, FPWriterNET, FPWriter

C#:

void NewZoom(int zoom)

Visual Basic:

Sub NewZoom(ByVal zoom As Integer)

Parameters:

zoom
A value that specifies the new zoom value that is about to be displayed (e.g., 100).
Description:

FinerEdge Publisher calls the NewZoom event prior to the first page of a document being viewed or just prior to a new zoom value change. This event is only applicable to the viewer (i.e., printing or generating output formats will not call this event).

» Back to the Table of Contents. «

OutlineShow
Interfaces: FPWriterWPF, FPWriterNET, FPWriter

Boolean, Get/Set

C#:

OutlineShow

Visual Basic:

OutlineShow

Description:

This property gets or sets the visibility of the built-in outline panel, which displays the outline hierarchy of the "Default" outline group. When outline items are selected in the outline panel, the document is subseqently positioned to the location specified by the selected outline item.

» Back to the Table of Contents. «

Page
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP

Integer, Get/Set

C#:

Page

Visual Basic:

Page

C++:

long GetPage()
void SetPage(long page)

Description:

This property gets or sets the page number of the document currently being viewed (relative to 1). This property has no effect on documents being printed or generated for one of the output formats.

When set, the "Page" property causes the indicated page of the currently viewed document to be immediately displayed to the user. In addition the "NewPage" event is fired just prior to the indicated page being displayed in the viewer.

» Back to the Table of Contents. «

Pages
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

Integer, Get only

C#:

Pages

Visual Basic:

Pages

C++:

long GetPages()

Java:

long GetPages()

Description:

Gets the total number of pages in the document.

» Back to the Table of Contents. «

PageEnd
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

Integer, Get/Set

C#:

PageEnd

Visual Basic:

PageEnd

C++:

long GetPageEnd()
void SetPageEnd(long value)

Java:

long GetPageEnd()
void SetPageEnd(long value)

Description:

The PageStart, and PageEnd properties determine the Start and End range of pages in a document. For example, if the PageStart property was set to 3 and the PageEnd property was set to 8, pages 3 through 8 would be rendered. The PageStart and PageEnd values are not with respect to the PageOffset, Page or Pages Program property values.

» Back to the Table of Contents. «

PageHeight
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

Integer, Get only

C#:

PageHeight

Visual Basic:

PageHeight

C++:

long GetPageHeight()

Java:

long GetPageHeight()

Description:

Gets the height of the last rendered page in Twips.

» Back to the Table of Contents. «

PageOffset
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

Integer, Get/Set

C#:

PageOffset

Visual Basic:

PageOffset

C++:

long GetPageOffset()
void SetPageOffset(long value)

Java:

long GetPageOffset()
void SetPageOffset(long value)

Description:

The PageOffset property determines where page numbering begins in a document. For example, if the PageOffset property was set to 5, the first page would be displayed as page 5. The PageOffset value is not with respect to the PageStart, PageEnd, Page or Pages Program property values.

» Back to the Table of Contents. «

PageSegment
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

Integer, Get/Set

C#:

PageSegment

Visual Basic:

PageSegment

C++:

long GetPageSegment()
void SetPageSegment(long value)

Java:

long GetPageSegment()
void SetPageSegment(long value)

Description:

The PageSegment property determines how PDF and PostScript generation is to occur. If PageSegment is set to a value of zero (default), PDF and PostScript generation results in a single file.

However, if PageSegment is set to a value greater than zero, a new file will result for every PageSegment number of pages with both PDF and PostScript generation. For example, if "PageSegment" is set to a value of 100, a new file is generated every 100 pages. The last file generated may contain less pages than are specified by this property.

When segmenting output, FinerEdge Publisher assigns the individual segmented files according to the following naming convention:

<ResultFile>_<start page #>-<end page #>

» Back to the Table of Contents. «

PageStart
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

Integer, Get/Set

C#:

PageStart

Visual Basic:

PageStart

C++:

long GetPageStart()
void SetPageStart(long value)

Java:

long GetPageStart()
void SetPageStart(long value)

Description:

The PageStart, and PageEnd properties determine the Start and End range of pages in a document. For example, if the PageStart property was set to 3 and the PageEnd property was set to 8, pages 3 through 8 would be rendered. The PageStart and PageEnd values are not with respect to the PageOffset, Page or Pages Program property values.

» Back to the Table of Contents. «

ProcessFile
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

String, Get/Set

C#:

ProcessFile

Visual Basic:

ProcessFile

C++:

void GetProcessFile(_TCHAR *name)
void SetProcessFile(_TCHAR *name)

Java:

String GetProcessFile()
void SetProcessFile(String name)

Description:

Gets or sets the optional name of the intermediate process file. When present, intermediate processing is activated. The type of intermediate processing is determined by the ProcessMode property.

» Back to the Table of Contents. «

ProcessMode
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

Integer, Get/Set

C#:

ProcessMode

Visual Basic:

ProcessMode

C++:

short ProcessMode()
void ProcessMode(short value)

Java:

int ProcessMode()
void ProcessMode(int value)

Description:

Gets or sets the intermediate processing mode. The ProcessFile must be set for this property to be active, otherwise normal document processing occurs. The ProcessMode property determines the type of intermediate processing as follows:

0 (Normal)
Perform normal document generation and rendering, and output no intermediate processing file.
1 (OutputNormalPackNone)
Output an intermediate processing file with normal document generation and rendering. Do not package up image resources.
2 (OutputNormalPackTemp)
Output an intermediate processing file with normal document generation and rendering. Package up temporary image resources (e.g., pulled from a database).
3 (OutputNormalPackAll)
Output an intermediate processing file with normal document generation and rendering. Package up all image resources.
4 (OutputOnlyPackNone)
Output an intermediate processing file without performing document generation and rendering. Do not package up image resources.
5 (OutputOnlyPackTemp)
Output an intermediate processing file without performing document generation and rendering. Package up temporary image resources (e.g., pulled from a database).
6 (OutputOnlyPackAll)
Output an intermediate processing file without performing document generation and rendering. Package up all image resources.
» Back to the Table of Contents. «

RefGet
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPServerNet

C#:

int RefGet(ref String refSearch,
  ref String refText,
  ref int page,
  ref int realPage,
  ref int offset)

Visual Basic:

Function RefGet(refSearch As String,
  refText As String,
  page As Integer,
  realPage As Integer,
  offset As Integer) As Integer

C++:

short RefGet(_TCHAR *refSearch,
  _TCHAR *refText,
  long 'realPage,
  long 'value,
  long 'offset)

Return value:

The "index" of the found reference or 0 if a reference was not found.

Parameters:

refSearch
Returns the value of the "ref-search" property applied to the current reference.
refText
Returns the value of the "ref-text" property applied to the current reference.
page
Returns the display page number of the current reference.
realPage
Returns the real page number of the current reference.
offset
Returns the document rendering input file offset value.
Description:

The RefGet function retrieves the item values for the current reference. This method should only be called during the "CloseDocument" event after all references have been accumulated and resolved.

» Back to the Table of Contents. «

RefSearch
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet

C#:

int RefSearch(String position,
  String pattern,
  String value,
  int options)

Visual Basic:

Function RefSearch(ByVal position As String,
  ByVal pattern As String,
  ByVal value as String,
  ByVal options As Integer) As Integer

C++:

short RefSearch(_TCHAR *position,
  _TCHAR *pattern,
  _TCHAR *value,
  short options)

Java:

int RefSearch(String position,
  String pattern,
  String value,
  int options)

Return value:

The "index" of the found reference or 0 if a reference was not found.

Parameters:

position
The values "begin", "page-begin-down", "page-begin-down-adjust", "page-begin-up", "page-begin-up-adjust", "page-end-down", "page-end-down-adjust", "page-end-up", "page-end-up-adjust", "next", or "previous".
pattern
The regular expression or simple search pattern.
value
When the parameter position is either "page-begin-down", "page-begin-up", "page-end-down" or "page-end-up" (including the "adjust" suffixes), this parameter specifies a page number. However, if the parameter position is either "next" or "previous", this parameter specifies the number of times the search is repeated with the same parameters.
options
When the value of this parameter is 0, the pattern parameter is a regular expression. However, if the value of this parameter is 1, the pattern parameter is a simple pattern (see the "pattern" function for more information).
Description:

The RefSearch function searches and selects a reference in the reference table in preparation for calling the RefGet function to retrieve the information for the specific reference. This method should only be called during the "CloseDocument" event after all references have been accumulated and resolved.

» Back to the Table of Contents. «

RegisterFireCloseDocument
Interfaces: FPWriterCPP

C++:

void RegisterFireCloseDocument(
  void FireCloseDocument())

Return value:

None.

Parameters:

FireCloseDocument
Function to call for the CloseDocument event.
Description:

This method registers a caller supplied function that is called when the CloseDocument event is fired.

» Back to the Table of Contents. «

RegisterFireCloseRecord
Interfaces: FPWriterCPP

C++:

void RegisterFireCloseRecord(
  void FireCloseRecord(_TCHAR *rsName))

Return value:

None.

Parameters:

FireCloseRecord
Function to call for the CloseRecord event.
Description:

This method registers a caller supplied function that is called when the CloseRecord event is fired.

» Back to the Table of Contents. «

RegisterFireGetRecord
Interfaces: FPWriterCPP

C++:

void RegisterFireGetRecord(
  void FireGetRecord(_TCHAR *rsName))

Return value:

None.

Parameters:

FireGetRecord
Function to call for the GetRecord event.
Description:

This method registers a caller supplied function that is called when the GetRecord event is fired.

» Back to the Table of Contents. «

RegisterFireInitDocument
Interfaces: FPWriterCPP

C++:

void RegisterFireInitDocument(
  void FireInitDocument(_TCHAR *mainName))

Return value:

None.

Parameters:

FireInitDocument
Function to call for the InitDocument event.
Description:

This method registers a caller supplied function that is called when the InitDocument event is fired.

» Back to the Table of Contents. «

RegisterFireInitRecord
Interfaces: FPWriterCPP

C++:

void RegisterFireInitRecord(
  void FireInitRecord(_TCHAR *rsName))

Return value:

None.

Parameters:

FireInitRecord
Function to call for the InitRecord event.
Description:

This method registers a caller supplied function that is called when the InitRecord event is fired.

» Back to the Table of Contents. «

RegisterFireMark
Interfaces: FPWriterCPP

C++:

void RegisterFireMark(
  void FireMark(short type,
   _TCHAR *text1,
   _TCHAR *text2,
   _TCHAR *text3))

Return value:

None.

Parameters:

FireMark
Function to call for the Mark event.
Description:

This method registers a caller supplied function that is called when the Mark event is fired.

» Back to the Table of Contents. «

RegisterFireNewPage
Interfaces: FPWriterCPP

C++:

void RegisterFireNewPage(
  void FireNewPage(long page))

Return value:

None.

Parameters:

FireNewPage
Function to call for the NewPage event.
Description:

This method registers a caller supplied function that is called when the NewPage event is fired.

» Back to the Table of Contents. «

RegisterFireNewZoom
Interfaces: FPWriterCPP

C++:

void RegisterFireNewZoom(
  void FireNewZoom(short zoom))

Return value:

None.

Parameters:

FireNewZoom
Function to call for the NewZoom event.
Description:

This method registers a caller supplied function that is called when the NewZoom event is fired.

» Back to the Table of Contents. «

ResultFile
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

String, Get/Set

C#:

ResultFile

Visual Basic:

ResultFile

C++:

void GetResultFile(_TCHAR *name)
void SetResultFile(_TCHAR *name)

Java:

String GetResultFile()
void SetResultFile(String name)

Description:

This property gets or sets the name of the current FinerEdge Publisher result file and must be set prior to using any of the "Create..." methods or "Generate..." methods that require a result file. The meaning of the result file varies depending upon the method used. For example, the "GeneratePDF" method uses this property to name the resulting PDF file. Please refer to the applicable method to determine if ResultFile is required and it's respective meaning.

» Back to the Table of Contents. «

SetVarDate
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void SetVarDate(String name,
  String date)

Visual Basic:

Sub SetVarDate(ByVal name As String,
  ByVal date As String)

C++:

void SetVarDate(_TCHAR *name,
  _TCHAR *date)

Java:

void SetVarDate(String name,
  String date)

Return value:

None.

Parameters:

name
The name of an existing external variable (not including the name of the recordset or the preceding "@" character).
date
The externally formatted date to be assigned to the variable. This parameter must be in the format specified by the "DateFormat" property.
Description:

This method is normally called while processing the GetRecord event. For a detailed explanation of presenting application data to the documents and the interaction between the application and FinerEdge Publisher, please refer to the chapter "Application Data Interface".

The "SetVarDate" method assigns the external variable specified by the first parameter to a <number> type and sets it to the converted value of the second parameter. The external variable must have been previously defined by the AppendVariable method.

» Back to the Table of Contents. «

SetVarDouble
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void SetVarDouble(String name,
  double value)

Visual Basic:

Sub SetVarDouble(ByVal name As String,
  ByVal value As Double)

C++:

void SetVarDouble(_TCHAR *name,
  double value)

Java:

void SetVarDouble(String name,
  double value)

Return value:

None.

Parameters:

name
The name of an existing external variable (not including the name of the recordset or the preceding "@" character).
value
The "double" value to be assigned to the external variable.
Description:

This method is normally called while processing the GetRecord event. For a detailed explanation of presenting application data to the documents and the interaction between the application and FinerEdge Publisher, please refer to the chapter "Application Data Interface".

The "SetVarDouble" method assigns the external variable specified by the first parameter to a <float> type and sets it to the value of the second parameter.

» Back to the Table of Contents. «

SetVarLong
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void SetVarLong(String name,
  int value)

Visual Basic:

Sub SetVarLong(ByVal name As String,
  ByVal value As Integer)

C++:

void SetVarLong(_TCHAR *name,
  long value)

Java:

void SetVarLong(String name,
  long value)

Return value:

None.

Parameters:

name
The name of an existing external variable (not including the name of the recordset or the preceding "@" character).
value
The value to be assigned to the external variable.
Description:

This method is normally called while processing the GetRecord event. For a detailed explanation of presenting application data to the documents and the interaction between the application and FinerEdge Publisher, please refer to the chapter "Application Data Interface".

The "SetVarLong" method assigns the external variable specified by the first parameter to a <number> type and sets it to the value of the second parameter.

» Back to the Table of Contents. «

SetVarString
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void SetVarString(String name,
  String value)

Visual Basic:

Sub SetVarString(ByVal name As String,
  ByVal value As String)

C++:

void SetVarString(_TCHAR *name,
  _TCHAR *value)

Java:

void SetVarString(String name,
  String value)

Return value:

None.

Parameters:

name
The name of an existing external variable (not including the name of the recordset or the preceding "@" character).
value
The text string to be assigned to the external variable.
Description:

This method is normally called while processing the GetRecord event. For a detailed explanation of presenting application data to the documents and the interaction between the application and FinerEdge Publisher, please refer to the chapter "Application Data Interface".

The "SetVarString" method assigns the external variable specified by the first parameter to a <string> type and sets it to the value of the second parameter. The length of the second string parameter should be limited to less than 8192 characters unless it is to be only output in a document with the var tag. Carriage returns, linefeeds, and carriage return/linefeed pairs are interpreted as a "<BR/>" action by the var tag.

» Back to the Table of Contents. «

SetVarTime
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

void SetVarTime(String name,
  String time)

Visual Basic:

Sub SetVarTime(ByVal name As String,
  ByVal time As String)

C++:

void SetVarTime(_TCHAR *name,
  _TCHAR *time)

Java:

void SetVarTime(String name,
  String time)

Return value:

None.

Parameters:

name
The name of an existing external variable (not including the name of the recordset or the preceding "@" character).
time
The externally formatted time to be assigned to the variable. This parameter must be in the format specified by the "TimeFormat" property.
Description:

This method is normally called while processing the GetRecord event. For a detailed explanation of presenting application data to the documents and the interaction between the application and FinerEdge Publisher, please refer to the chapter "Application Data Interface".

The "SetVarTime" method assigns the external variable specified by the first parameter to a <number> type and sets it to the converted value of the second parameter. The external variable must have been previously defined by the AppendVariable method.

» Back to the Table of Contents. «

ThousandDelim
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

String, Get/Set

C#:

ThousandDelim

Visual Basic:

ThousandDelim

C++:

void GetThousandDelim(_TCHAR *value)
void SetThousandDelim(_TCHAR *value)

Java:

String GetThousandDelim()
void SetThousandDelim(String value)

Description:

Sets or gets the thousands delimiter that is used in various FinerEdge Publisher functions. The default value is the "," character.

» Back to the Table of Contents. «

TimeDelim
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

String, Get/Set

C#:

TimeDelim

Visual Basic:

TimeDelim

C++:

void GetTimeDelim(_TCHAR *value)
void SetTimeDelim(_TCHAR *value)

Java:

String GetTimeDelim()
void SetTimeDelim(String value)

Description:

Sets or gets the time delimiter that is used in various FinerEdge Publisher functions. The default value is the ":" character.

» Back to the Table of Contents. «

TimeFormat
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

String, Get/Set

C#:

TimeFormat

Visual Basic:

TimeFormat

C++:

void GetTimeFormat(_TCHAR *value)
void SetTimeFormat(_TCHAR *value)

Java:

String GetTimeFormat()
void SetTimeFormat(String value)

Description:

This property gets or sets the time format that is used in various FinerEdge Publisher functions. The TimeFormat property may be set to one of the following values:

us
Use the user specified time.
mm
Use HH:MM 24-hour time.
ss
Use HH:MM:SS 24-hour time.
am
Use HH:MMa/p 12-hour time.
as
Use HH:MM:SSa/p 12-hour time (default).

» Back to the Table of Contents. «

VersionInfo
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP, FPJNI, FPServerNet, FPServer

C#:

string VersionInfo()

Visual Basic:

Function VersionInfo() As String

C++:

void VersionInfo(_TCHAR *version)

Java:

String VersionInfo()

Return value:

The version information in the form "major.minor.build.revision".

Description:

Returns the version for the FinerEdge Publisher engine.

» Back to the Table of Contents. «

WndProc
Interfaces: FPWriterCPP

C++:

LRESULT WndProc(UINT command,WPARAM wParam,LPARAM lParam)

Return value:

Standard result varies by message id.

Parameters:

message
Windows message ID.
wParam
Varies by message id.
lParam
Varies by message id.
Description:

This method is normally called in response by the window owner when it receives a WM_PAINT message, which draws the window's contents using the currently selected "Display" type.

» Back to the Table of Contents. «

Zoom
Interfaces: FPWriterWPF, FPWriterNET, FPWriter, FPWriterCPP

Integer, Get/Set

C#:

Zoom

Visual Basic:

Zoom

C++:

short GetZoom()
void SetCatalog(short value)

Description:

Gets or sets the zoom factor of the document currently being viewed. This property has no effect on documents being printed or generated for one of the output formats.

When set, the "Zoom" property immediately causes the currently viewed document to be zoomed to the indicated zoom factor and then redisplayed to the user. The zoom factor is a percentage where a value of 100 designates "normal" size (i.e., 100%) and 50 designates ½ the "normal" size (i.e., 50%).

» Back to the Table of Contents. «


Chapter 8 - FPServices and FPServicesApp
Overview
Prior to referring to this chapter, it is presumed that the individual has read and understood the chapter "Application Data Interface". The chapter "Application Data Interface" gives a detailed explanation of the interaction between an application, documents, and FinerEdge Publisher in creating and populating external variables.

This chapter describes the operation contracts and associated request/reply data contracts for FPServices and FPServicesApp. FPServices and FPServicesApp enable a service consumer to generate all supported cross-media outputs and are accessible using both SOAP (RPC) and REST. FPServices is a WCF service library whereas FPServicesApp is a WCF service application that utilizes the FPServices service library. The FPService must be hosted from some type of host provider whereas the FPServicesApp service application is meant to be hosted by IIS.

» Back to the Table of Contents. «

CreateDocument (SOAP)
FPReplyCreateDoc CreateDocument(FPRequestCreateDoc)

Data Contracts:

FPRequestCreateDoc
Represents the request into this operation.
FPReplyCreateDoc
Represents the reply from this operation.
Description:

This SOAP operation creates a document in one or more supported output formats.

» Back to the Table of Contents. «

CreateDocument (REST)
http://<host>/FPServicesApp/FPService/CreateDocument

JSON Structures:

FPRequestCreateDoc
Represents the request into this operation.
FPReplyCreateDoc
Represents the reply from this operation.
Description:

This POST operation creates a document in one or more supported output formats.

» Back to the Table of Contents. «

FPRequestCreateDoc (Data Contract)
Members:

DocumentTypes
string
One or more output types separated by commas. The output types are -

PDF, XPS, PS, HTMLPAGED, EPUB, DOCX, TEXT
Catalog
string
Catalog path name.
Document
string
Document path name.
ResultName
string
Result path name. The output file names are given extensions based upon the actual DocumentTypes being generated.
Dllx86Dir
string
The 32-bit FinerEdge Publisher DLL directory. This member is required as is normally acquired by calling the FinerEdge FPUtility method FPReadPreferences. See the source code of the FPTestBench for a working example.
Dllx64Dir
string
The 64-bit FinerEdge Publisher DLL directory. This member is required as is normally acquired by calling the FinerEdge FPUtility method FPReadPreferences. See the source code of the FPTestBench for a working example.
ChartServer
string
Chart server parameters.
Media
string
Optional media name.
Parameters
string
Optional document parameters in the form -

name: value [, name: value]...

Where value can be an integer, float, or a string. A string value can be surrounded by quote characters.
DateDelim
string
Optional date delimiter.
DateFormat
string
Optional date format.
TimeDelim
string
Optional time delimiter.
TimeFormat
string
Optional time format.
CurrencyDelim
string
Optional currency delimiter.
ThousandDelim
string
Optional thousand character delimiter.
DecimalDelim
string
Optional decimal point character delimiter.
PageOffset
int
Optional page offset.
PageEnd
int
Optional page end.
PageStart
int
Optional page start.
PageSegment
int
Optional page segment size.
ProcessFile
string
Optional name of the intermediate process file (must be set for ProcessMode).
ProcessMode
int
Intermediate processing mode: 0=Normal, 1=OutputNormalPackNone, 2=OutputNormalPackTemp, 3=OutputNormalPackAll, 4=OutputOnlyPackNone, 5=OutputOnlyPackTemp, 6=OutputOnlyPackAll.
» Back to the Table of Contents. «

FPReplyCreateDoc (Data Contract)
Members:

Results
FPReplyCreateDocElem[]
One or reply create document elements.
Pages
int
Number of pages in the output document.
» Back to the Table of Contents. «

FPReplyCreateDocElem (Data Contract)
Members:

DocType
int
Document type generated (corresponds to the FPRequestCreateDoc data contract DocumentTypes member).
Result name
string
Path name of the resulting output (including the extension).
Error
bool
True if an error occured and the remaining error members are applicable.
ErrorEntityName
string
When the member Error is True, contains the entity name where the error occured.
ErrorEntityFile
string
When the member Error is True, contains the entity file name where the error occured.
ErrorLine
int
When the member Error is True, contains the line within the entity the error occured.
ErrorColumn
int
When the member Error is True, contains the column within the line where the error occured.
ErrorText
string
When the member Error is True, contains the error message text.
» Back to the Table of Contents. «


Chapter 9 - FPForm and FPFormNET
Overview
Interfaces:

This chapter describes the properties, methods, and events for the FPForm and FPFormNET interfaces. The FPWriter and FPWriterNET interfaces are front-end data collection mechanisms for FinerEdge Publisher documents and their governing processes. The form mechanisms can simultaneously produce both "on-the-fly" GUI and HTML data input forms from a common WYSIWYG editor. The FPForm interface is an ActiveX control while the FPFormNET interface is a .NET assembly Windows Form Control.

The formatting model that is employed by the form facility uses relative positioning to place various controls and control groups onto a form. This is the default method of positioning for most Web standards and addresses the problems inherent in an absolute positioning model. For example, when another font face or size is used in place of an original font (either explicitly or by implicit substitution), absolute positioning may require manual modification to the form while relative positioning usually requires no modifications to the form.

Each line (or row) of a form may contain a number of controls or control groups of varying sizes prior to a line break. The overall height of the line is determined by the largest height of the controls or control groups on that particular line. When the next line is started, it is positioned below the overall height of the previous line. These same basic rules apply within control groups and extend to all levels of nested control groups.

The form facility is present within the FinerEdge Publisher IDE as the Form Definition and Form Generation views. The user-oriented description of the form facility, including the form properties, form controls, and generation options is included within the FinerEdge Publisher IDE manual. However, the form facility is also available as standalone interfaces that may be embedded within many types of applications. The remainder of this chapter describes the properties and methods of the form facility's application interfaces.

» Back to the Table of Contents. «

Catalog
Interfaces: FPFormNET, FPForm

String, Get/Set

Description:

The Catalog property gets or sets the name of the catalog file. This property must be set prior to calling LoadForm.

» Back to the Table of Contents. «

CtlGotFocus
Interfaces: FPFormNET, FPForm

C#:

void CtlGotFocus(int intIndex)

Visual Basic:

Sub CtlGotFocus(ByVal intIndex As Integer)

Parameters:

intIndex
The index of the field that lost the focus (relative to 1).
Description:

This event is called anytime a field (i.e., a control) receives the input focus. The index of the specific field that has obtained the input focus is designated by the intIndex parameter. A subsequent call to the GetField method can be made to retrieve further information about the field corresponding to the intIndex parameter if desired.

» Back to the Table of Contents. «

CtlLostFocus
Interfaces: FPFormNET, FPForm

C#:

void CtlLostFocus(int intIndex)

Visual Basic:

Sub CtlLostFocus(ByVal intIndex As Integer)

Parameters:

intIndex
The index of the field that lost the focus (relative to 1).
Description:

This event is called anytime a field (i.e., control) loses the input focus. The index of the specific field that has lost the input focus is designated by the intIndex parameter. A subsequent call to the GetField method can be made to retrieve further information about the field corresponding to the intIndex parameter if desired.

» Back to the Table of Contents. «

DLLX86DIR
Interfaces: FPFormNET, FPForm

String, Get/Set

Description:

This property gets or sets the location of the FinerEdge Publisher 32-bit (x86) DLLs, which is used when generating web pages from a form.

» Back to the Table of Contents. «

DLLX64DIR
Interfaces: FPFormNET, FPForm

String, Get/Set

Description:

This property gets or sets the location of the FinerEdge Publisher 64-bit (x64) DLLs, which is used when generating web pages from a form.

» Back to the Table of Contents. «

Error
Interfaces: FPFormNET, FPForm

String, Get only

Description:

This property contains an error message from the last LoadForm method if a failure was detected. If the last LoadForm method was successful, this property contains an empty string.

» Back to the Table of Contents. «

FieldChanged
Interfaces: FPFormNET, FPForm

Boolean, Get only

Description:

Following a successful call to the GetField method, this property returns True if the content of the field has changed since the form was initially loaded, otherwise this property returns False if the content of the field has not changed.

» Back to the Table of Contents. «

FieldHelp
Interfaces: FPFormNET, FPForm

String, Get only

Description:

Following a successful call to the GetField method, this property returns the optional help text. The single line help text is shown when the user focuses the corresponding control in both the GUI and Web environments.

» Back to the Table of Contents. «

FieldIndex
Interfaces: FPFormNET, FPForm

Integer, Get only

Description:

Following a successful call to the GetField method, this property returns the index of the selected field. The field index values are assigned at the time that the fields are created within the form definition in the order of appearance beginning with 1.

» Back to the Table of Contents. «

FieldName
Interfaces: FPFormNET, FPForm

String, Get only

Description:

Following a successful call to the GetField method, this property returns the unique field name associated with the control. A field name is required for all controls that return values to uniquely identify them for subsequent processing.

» Back to the Table of Contents. «

FieldType
Interfaces: FPFormNET, FPForm

Integer, Get only

Description:

Following a successful call to the GetField method, this property returns the type of the field as follows:

1
Label.
2
Edit.
3
Combobox.
4
List Box.
5
Checkbox.
6
Radio Button.
7
Image.
8
Group.
» Back to the Table of Contents. «

FieldUser
Interfaces: FPFormNET, FPForm

String, Get only

Description:

Following a successful call to the GetField method, this property returns the optional user text. The user text is entirely dependent upon the calling application and is not used within the Form facility.

» Back to the Table of Contents. «

FieldValue
Interfaces: FPFormNET, FPForm

String, Get only

Description:

Following a successful call to the GetField method, this property returns the value of the field, which is dependent upon it's declared type. For checkboxes and radio buttons, a value of 0 is returned if the control is unchecked and a value of 1 is returned if the control is checked.

» Back to the Table of Contents. «

FormHeight
Interfaces: FPFormNET, FPForm

Integer, Get only

Description:

This property represents the actual height of the dynamic form in Twips (i.e., not just the scrollable frame). If desired, FormHeight can be used to resize the caller's host form to be the height of the dynamic form (please refer to the Resize event).

» Back to the Table of Contents. «

FormLoaded
Interfaces: FPFormNET, FPForm

Boolean, Get only

Description:

This property returns True if a form is currently loaded and False if a form is not currently loaded.

» Back to the Table of Contents. «

FormName
Interfaces: FPFormNET, FPForm

String, Get/Set

Description:

This property gets or sets the name of the form definition currently being processed. A subsequent call to the method LoadForm will physically load the form into memory. This property must be set prior to calling LoadForm.

» Back to the Table of Contents. «

FormWidth
Interfaces: FPFormNET, FPForm

Integer, Get only

Description:

This property represents the actual width of the dynamic form in Twips (i.e., not the scrollable frame). If desired, FormWidth can be used to resize the caller's host form to be the width of the dynamic form (please refer to the Resize event).

» Back to the Table of Contents. «

GenFormASPX
Interfaces: FPFormNET, FPForm

C#:

void GenFormASPX()

Visual Basic:

Sub GenFormASPX()

Return value:

None.

Parameters:

None.

Description:

This method generates a complete .NET Web Page (ASPX) process to include the HTML representation of the form, a C# code-behind file, and the applicable calls to the FPServerNet interface. The ASP file directory, URL directory, and document generation options are specified from within the form properties user dialog.

» Back to the Table of Contents. «

GenFormCSHTML
Interfaces: FPFormNET, FPForm

C#:

void GenFormCSHTML()

Visual Basic:

Sub GenFormCSHTML()

Return value:

None.

Parameters:

None.

Description:

This method generates a complete .NET Razor Page (CSHTML) process to include the HTML representation of the form and the applicable calls to the FPServerNet interface. The ASP file directory, URL directory, and document generation options are specified from within the form properties user dialog.

» Back to the Table of Contents. «

GenFormHTML
Interfaces: FPFormNET, FPForm

C#:

void GenFormHTML()

Visual Basic:

Sub GenFormHTML()

Return value:

None.

Parameters:

None.

Description:

This method generates HTML output from the currently loaded form definition. The HTML output closely resembles the "look and feel" of the GUI output.

» Back to the Table of Contents. «

GetField
Interfaces: FPFormNET, FPForm

C#:

bool GetField(object varKey)

Visual Basic:

Function GetField(ByVal varKey As Variant) As Boolean

Return value:

Returns True if the field was found, otherwise returns False if the field was not found.

Parameters:

varKey
This parameter specifies the field to load. If a string is used, it indicates the unique name of the field to load. If an integer number is used, it indicates the index of the field to load. (Field indexes are assigned in the order that fields appear in the form definition beginning from 1.)
Description:

Locates a specific field within the currently loaded form definition. If a successful result is returned by this function, the loaded field becomes the currently selected field. Subsequent use of the "Field..." properties will yield results that are relative to the currently selected field.

» Back to the Table of Contents. «

LoadForm
Interfaces: FPFormNET, FPForm

C#:

bool LoadForm()

Visual Basic:

Function LoadForm() As Boolean

Return value:

Returns True if the form was successfully loaded and False if an error occurred while loading the form definition into memory. If an error occurs while loading a form definition, the Error property can be used to display a message indicating the type of error.

Parameters:

None.

Description:

This method processes the form definition indicated by the FormName property. Usually, a subsequent call to the method ShowForm follows this call in order to display the form within the interface control.

However, if an individual only needed to generate HTML output, this call can be followed by a call to any of the "Gen..." methods without ever calling the ShowForm method.

» Back to the Table of Contents. «

Resize
Interfaces: FPFormNET, FPForm

C#:

void Resize()

Visual Basic:

Sub Resize()

Parameters:

None.

Description:

This event is called when the dynamic portion of the form has been resized. This allows the application the opportunity to further resize it's own outer form to match the dimensions of the dynamic portion of the form if desired by using the FormHeight and FormWidth properties.

» Back to the Table of Contents. «

SetFieldUser
Interfaces: FPFormNET, FPForm

C#:

bool SetFieldUser(String strUser)

Visual Basic:

Function SetFieldUser(ByVal strUser As String) As Boolean

Return value:

Returns True if the field's user string was changed, otherwise returns False.

Parameters:

strUser
The new user string of the field.

Description:

The user string of the currently selected field is replaced by the new value as indicated by the strUser parameter. The field must first be selected by calling the GetField method.

» Back to the Table of Contents. «

SetFieldValue
Interfaces: FPFormNET, FPForm

C#:

bool SetFieldValue(String strValue)

Visual Basic:

Function SetFieldValue(ByVal strValue As String) As Boolean

Return value:

Returns True if the field's value was changed, otherwise returns False.

Parameters:

strValue
The new value of the field that is dependent upon it's declared type. For checkboxes and radio buttons, a value of 0 unchecks the field while a value of 1 checks the field.

Description:

The value of the currently selected field is replaced by the new value as indicated by the strValue parameter. The field must first be selected by calling the GetField method.

» Back to the Table of Contents. «

ShowForm
Interfaces: FPFormNET, FPForm

C#:

void ShowForm()

Visual Basic:

Sub ShowForm()

Return value:

None.

Parameters:

None.

Description:

Displays the currently loaded form definition within the boundaries of the interface control. This call does nothing if a form definition has not been first loaded by a successful call to the LoadForm method.

» Back to the Table of Contents. «

UnloadForm
Interfaces: FPFormNET, FPForm

C#:

void UnloadForm()

Visual Basic:

Sub UnloadForm()

Return value:

None.

Parameters:

None.

Description:

This method destroys the dynamic form window (if currently shown) and releases all memory occupied by the active form definition. If a form is not currently loaded via the LoadForm method, this method does nothing.

In addition, this method should always be explicitly called from the application form's "Unload" procedure when the property DesignMode has set to True. This action is necessary so that the user has a chance to save their modified form definition (otherwise any pending changes will be lost).

» Back to the Table of Contents. «


Chapter 10 - FPFileWatcher
Overview
FPFileWatcher can run as a Windows service or as a standalone command-line application that monitors a variable number of file system directories for the creation of files. Based upon the naming patterns of the files created, specific documents can be generated and subsequently emailed to recipients along with links to the generated documents.

If FPFileWatcher is run as a Windows Service, a number of messages will be sent to the system application event log. But regardless of the way FPFileWatcher is run (i.e., as a Windows service or standalone command-line application), an event log file will be created with the name "FPFileWatcher.txt" that resides in the same directory as the FPFileWatcher executable.

When FPFileWatcher is first initialized, it will scan the directory of each FileWatcher element defined in its configuration file. For all files that match a Matcher element Pattern, processing of that file is automatically initiated. This accounts for periods of time when FPFileWatcher may not be running, but in the meantime files have been dropped into their respective directories.

» Back to the Table of Contents. «

Configuration File
The directories monitored for file creation activities are defined by a configuration file named "FPFileWatcher.xml" that resides in the same directory as the FPFileWatcher executable. Within the configuration file, the outermost element is called "FPFileWatcher".

One or more "FileWatcher" elements exist in the "FPFileWatcher" element, with each one corresponding to a directory that will be monitored for file creation. Inside each FileWatcher, one or more "Matcher" elements can be defined, where each matcher has a file name pattern to match, a document that will be generated, and an email specification that will be used when a match occurs. More than one matcher can have the same pattern, which allows multiple different documents to be created from the same match.

SMTP passwords are expected to be in base-64 and encrypted with the .NET class "MachineKey". A command-line program called FPEDTool.exe is supplied that can encrypt or decrypt the passwords for a particular machine. The syntax is:

FPEDTool [encrypt|decrypt]

The tool will wait for a line to be entered from the standard input. It will then encrypt or decrypt the entered text and write the result to the standard output.

FPFileWatcher
The outermost "FPFileWatcher" element is composed of the following elements:

Element
Description
LogControl
The keyword "level" can be followed by 0, 1, or 2. The "level=0" (default) will log the least information while "level=2" will be the most verbose. Any level greater than 0 will cause the configuration to be output to the logfile (but not to system events when run as a Windows Service).
UseService
True to call the FPServicesApp web service. Otherwise False to directly call the FPServices object (default False).
FPServAddr
When UseService is True, this is the address of the FPServicesApp web wervice (default "http://localhost/FPServicesApp/FPService.svc/soap").
Dllx86Dir
FinerEdge Publisher x86 (32-bit) DLL directory.
Dllx64Dir
FinerEdge Publisher x64 (64-bit) DLL directory.
OperatingMode
Can be set to either "Watcher" to rely on FileSystemWatcher events, "Polling" to poll directories for new files to process, or "Both" (default "Watcher"). Note: Files names that are already either queued to be processed or active will not be re-queued.
MaxTasks
Maximum tasks (generated documents) that will simultaneously generated (default 10).
TimerInterval
Number of milliseconds between timer events, which checks for additional tasks to generate (default 2000).
TimerAge
Number of TimerIntervals to age an initially queued or re-queued task. Tasks count down to 0 before they are executed. If dependencies are not satisfied, A pending task will be re-queued (default 3).
TimerPolls
Number of timers events (in TimerInterval milliseconds) that will elapse prior to polling for new files to be queued (default 10). The OperatingMode must be set to either "Polling" or "Both" for polling to occur.
StopTimeout
Number of milliseconds that FPFileWatcher will wait when shutting down to allow current document generation tasks to complete (default 30000).
ProcessTimeout
Number of milliseconds that FPFileWatcher will wait for a TextBlock with a Type of "Execute" to complete (default 30000).
Defaults
Global default values that are used unless overridden by child (i.e., more specific) elements having the same name.
FileWatchers
A list of FileWatcher elements.
EMails
A list of EMail elements.
TextBlocks
A list of TextBlock elements.

Defaults
The "Defaults" element is composed of the following elements:

Element
Description
Host
The global SMTP host name used for EMail specifications that do not designate a SMTP host themselves.
Port
The global SMTP port used for EMail specifications that do not designate a SMTP port themselves (default 25).
Spn
The global SMTP Service Principal Name (SPN) used for EMail specifications that do not designate a SMTP Spn themselves.
User
The global SMTP user name. If the user name is not set or has a length of 0, the email is sent anonymously. When the user name is equal to "DefaultCredentials", the email is sent with the default smtp credientials of the machine, otherwise the email is sent using the supplied usercode, password, and optional Domain element.
Password
The global SMTP password, which is expected to be in base-64 and encrypted with the .NET class "MachineKey". If the decryption of the password fails, it will be used without further transformation.
Domain
The optional global SMTP domain name used for EMail specifications that do not designate a SMTP domain themselves.
FileWatcher
The "FileWatcher" element is composed of the following elements:

Element
Description
Directory
Directory to monitor.
Filter
Optional filter for detecting file creations within the directory. The Filter accepts file oriented wildcards (i.e., not regular expressions).
Matchers
A list of Matcher elements.

Matcher
The "Matcher" element is composed of the following elements:

Element
Description
Pattern
Regular expression pattern to match.
Dependencies
A list of Dependency elements, which are each composed of child elements defined in the topic "PatternReplace". All Dependency elements must be satisfied before the matcher will be processed. Each dependency is satisfied by successfully being able to open at least one applicable file.
Catalog
Catalog file.
DocTypes
A comma separated list of document types to generate. See the FPService documentation for a description of the document types that can be generated.
Document
Document name to generate.
Params
Optional document parameters.

The DocFile parameter contains the name of the file that was created in the FileWatcher directory.

The TaskSeq parameter contains the incrementing task sequence number and is reinitialized to 1 each time the FPFileWatcher is started.

If any Dependency elements are declared, the name of the existing file that satisfies the Dependency element is appended to the parameters with the name "DepFileN", where "N" is a number starting from "1" and is incremented for each Dependency in the order they are declared.
OutputVars
Optional output variable names separated by commas that will be subsequently available as replacement items (i.e., enclosed by double square brackets). During processing, the document must use the "set" tag along with the "external" option to identify output variables that are to be available after document processing has completed.
ResultName
The result name of generated document(s), which is composed of child elements defined in the topic "PatternReplace". The corresponding DocTypes extension will be appended to the result names, hence the ResultName should not include an extension.

The optional parameter 0 can be used to format the current date/time (e.g., "ResultName1_{0:yyyyMMdd}_{0:hhmmss}_{0:fff}").

The optional parameter 1 can be used to format an incremental document generation sequence number, which starts at 1 each time the FPFileWatcher is initialized (e.g., ResultName1_{1}).

The optional parameter 2 can be used to format a unique GUID that varies for each document generation (e.g., ResultName1_{2}).
ResultLink
The optional http address that can be used in a link (e.g., anchor tag), which is composed of child elements defined in the topic "PatternReplace". The name optional parameters can can be used with ResultName can be used with ResultLink.

If the evaluated ResultLink ends with a forward slash, the file name part of the ResultName is automatically appended.
PostRefs
A list of PostRef elements. PostRefs are processed in the order they are declared in this list.

PatternReplace
The "Dependency", "ResultName", and "ResultLink" elements are composed of the following Pattern/Replace child elements:

Element
Description
Pattern
A standard regular expression that is matched against the DocFile name that started the processing. The returned group elements can be used with the Replace when performing substitutions.
Replace
A optional standard replacement regular expression that may utilize subsitutions. If this element is not given or is empty, the pattern is used for matching and simple replacement.

PostRef
The "PostRef" element is composed of the following elements:

Element
Description
Name
Post-processing name, which must correspond to either a declared EMail name (if Type is "EMail") or a TextBlock name (if Type is "Execute").
Type
Type of PostRef, which can be either "EMail" or "Execute". When the type is EMail, email messages containing links to the generated documents are sent. When the type is Execute, the corresponding TextBlock is executed by the command-line processor after replacement items have been resolved in the text.
Error
PostRefs are processed in the order they are declared in the PostRefs list. If an error occurs while processing a particular PostRef, a value of "Continue" will continue to process the rest of the PostRefs list (i.e., the default value). In contrast, a value of "Abort" will not continue processing the rest of the PostRefs list.
Info
Optional text that can be used by the referenced specification.

EMail
The "EMail" element is composed of the following elements:

Element
Description
Name
A name that can be referenced by a PostRef name.
Host
The SMTP host name.
Port
The SMTP port (default 25).
Spn
The SMTP Service Principal Name (SPN).
User
The SMTP user name. If the user name is not set or has a length of 0, the email is sent anonymously. When the user name is equal to "DefaultCredentials", the email is sent with the default smtp credientials of the machine, otherwise the email is sent using the supplied usercode, password, and optional Domain element.
Password
The SMTP password, which is expected to be in base-64 and encrypted with the .NET class "MachineKey". If the decryption of the password fails, it will be used without further transformation.
Domain
The optional SMTP domain name.
From
EMail "from" address.
To
EMail "to" addresses separated by "|".
Cc
EMail "cc" addresses separated by "|".
Subject
The EMail subject name.
BodyRef
A name that must correspond to a declared TextBlock name.
AttachResults
An optional element that specifies a list of file names that are attached to this email separated by "|". Like other PostRef elements, replace items can be used with this element. The order of the file names in the AttachResults list specifies the order that the documents will be attached to this email.

TextBlock
The "TextBlock" element is composed of the following elements:

Element
Description
Name
A name that can be referenced by a PostRef name.
Html
True if the body is HTML (otherwise False).
Text
The TextBlock text.

Replacement Items
Replacement items can be used with most any text field. They begin with "[[" characters and end with "]]" characters. The replacement item text (including the double brackets) is replaced with the descriptions below:

Replacement Item
Description
[[DocFile]]
The file name that started the processing.
[[TaskSeq]]
The incrementing task sequence number and is reinitialized to 1 each time the FPFileWatcher is started.
[[DepFileN]]
If any Dependency elements are declared, this replacement item is declared with a value that is set to the name of the existing file that satisfied the Dependency element. The "N" part of the replacement item is a number starting from "1" and is incremented for each Dependency in the order they are declared.
[[From]]
The from email address.
[[Subject]]
The subject email address.
[[ToStr]]
The "to" email addresses separated by a comma.
[[ToList]]
Each "to" email address on a separate line.
[[CcStr]]
The "cc" email addresses separated by a comma.
[[CcList]]
Each "cc" email address on a separate line.
[[BccStr]]
The "bcc" email addresses separated by a comma.
[[BccList]]
Each "bcc" email address on a separate line.
[[Info]]
The informational text set from the matcher.
[[ResultFileN]]
The result file paths, where N is a number starting from 1. The result file paths correspond to the documents generated by the DocTypes element and are in the same order.
[[ResultLinkN]]
The result http links, where N is a number starting from 1. The result http links correspond to the documents generated by the DocTypes element and are in the same order.
[[<name>]]
An output variable <name> can be used as replacement item. During processing, the document must use the "set" tag along with the "external" option to identify output variables that are to be available after document processing has completed.

» Back to the Table of Contents. «


Appendix A
Syntactical Conventions
The following conventions are used throughout this reference manual to describe the various syntactic elements employed by FinerEdge Publisher.

item

Constant text.

[item]

Optional constant text.

item|item

Conditional constant text (i.e., item "or" item).

[item|item]

Optional conditional constant text.

<item>

Reference to an item or <item>.

<item>|<item>

Reference to a conditional item or <item>.

<item>...

Reference to an item or <item> that can be repeated.

[<item>]

Reference to an optional item or <item>.

[<item>|<item>]

Reference to an optional conditional item or <item>.

[<item>]...

Reference to an optional item or <item> that can be repeated.

[<item>|<item>]...

Reference to an optional conditional item or <item> that can be repeated.

» Back to the Table of Contents. «

Appendix B
Output Format Compatibilities
Precise Output Formats:

These formats have no limitations and employ the full set of styles for precisely formatted outputs. The precise formatted outputs include: PDF, XPS, PS, HTML Paged, Print, and DirectX, GDI+ and GDI viewing.

HTML Standard

This format (i.e., non-paged HTML) ignores any page areas (i.e., headers, footers, left, and right) and any page-relative styles or actions.

EPUB3 and KF8 (Fixed Paging)

This format has no limitations and was verified using the Readium Chrome application and Kindle Previewer. However results may vary while employing other EPUB3 readers.

EPUB3 and KF8 (Reflowable)

This format has many limitations and can vary based upon the EPUB3 reader. Generally, no positioning mode other than normal (flow) should be used and no page areas should be output. Styles properties should also be limited to the standard formatting styles for widest compatibility with EPUB3 readers.

DOCX Format

This format ignores rotation of entire blocks (image rotation is handled), any fixed, absolute, or relative positioning, left and right page areas, table footers, and style properties that have no equivalent.

Text Format

As this mode just outputs text, all formatting is ignored.

» Back to the Table of Contents. «

Appendix C
HTML Import Translation
The import tag translates an external format into valid FPML and inserts the fragment into the document generation flow (i.e., phase II). When the "HTML" types are used, the import tag can translate an entire HTML document or just an HTML fragment. If a DOCTYPE, processing instruction, or html tag is initially detected, a complete HTML document is assumed for input.

The <?xml-stylesheet href = "..." ?> processing instruction is supported for css references. In addition, the "link" tag (discussed below) is also supported as an alternative for declaring css references.

The HTML_Base type supports tag set that is constained to common HTML tags only. In constrast, the HTML_Exp type supports the HTML_Base tag set and all additional document generation (Phase II) tags. Any tags that are not recognized are not processed (i.e., they are discarded) to include all content of those tags.

The following tags are part of the HTML_Base tag set:

A
Anchor tag pair (not currently translated further).
B
Bold tag pair.
BODY
Body tag pair.
BR
Line break tag.
CENTER
Center text tag pair.
COL
Table column tag.
COLGROUP
Column group tag pair containing COL tags.
DIV
Div tag pair.
FONT
Font tag pair.
HEAD
Head tag pair.
HTML
HTML tag pair.
H1,H2,H3,H4
Header tag pairs.
I
Italic tag pair.
IMG
Image tag.
LI
List item tag.
LINK
Link tag containing a css reference.
OL
Ordered list tag pair.
P
Paragraph tag pair.
SPAN
Span tag pair.
STYLE
Style tag pair.
SUB
Subscript tag pair.
SUP
Superscript tag pair.
TABLE
Table tag pair.
TD
Table cell tag pair.
TH
Table header tag pair.
TR
Table row tag pair.
U
Underline tag pair.
UL
Unordered list tag pair.

HTML Import Translation Attributes:

All FPML attributes can be utilized within HTML fragments, which include standard attributes such as id, class, style. In addition, the following HTML attributes and their respective values are also recognized and translated within HTML fragments:

Tag name
Attribute
Attribute values

COL
align
right, center, or justify
 
valign
top, middle, or bottom
 
width
px or %

FONT
face
font-family
 
size
Either "+|- <number>" or xx-small, x-small, small, medium, large, x-large, xx-large
 
color
color

IMG
src
background-image
 
border
px
 
width
px or %
 
height
px or %
 
vspace
px
 
hspace
px

LINK
href
CSS reference uri.

OL
start
<number>
 
type
1, a, A, i, I

TABLE
bgcolor
color
 
border
px
 
cellpadding
px
 
cellspacing
px
 
width
px or %

UL
type
disc, square, circle

» Back to the Table of Contents. «

Appendix D
FPChart Definitions
FPChart definitions are XML files that provide the necessary metadata structure to set the properties, custom properties, and methods of a charting engine to produce resulting images that may be then used throughout FinerEdge Publisher documents. The current charting engine utilized by FinerEdge Publisher is the MSChart control under the Microsoft .NET 4 framework.

As supplimental reference material, a generated file of available MSChart properties has been installed in your FinerEdge documents directory and is called "Docs\FPChartFiles\FPChartDoc.xml".

For additional information regarding the MSChart control under the Microsoft .NET 4 framework, including a downloadable interactive application with over 200 samples, please refer to the following Microsoft web site:

http://code.msdn.microsoft.com/mschart

The following basic syntax elements are used to define FPChart Definitions:

FPChart Definition:

<CHART>
  <element>...
</CHART>

<element>:

<property>|<customprop>|<method>

<property>:

<PROPERTY name = "<string>"
   [ src = "<string>" ] [ index = <number>" ]>
  <element>...
</PROPERTY>

Attributes:

name
The name of this property, which corresponds to the chart rendering engine interface at the declared level in the hierarchy.
src
An optional external file name that supplies the data for a collection element.
index
An optional index (<number>) for a collection element.
<customprop>:

<CUSTOMPROP name = "<string>">
  <element>...
</CUSTOMPROP>

Attributes:

name
The name of this custom property, which corresponds to the chart rendering engine interface at the declared level in the hierarchy.
<method>:

<METHOD name = "<string>"
   [ params = "<parameters>" ]>
  <element>...
</METHOD>

Attributes:

name
The name of this method, which corresponds to the chart rendering engine interface at the declared level in the hierarchy.
params
Optional parameters in the form of <parameters>.
<parameters>:

name = <number>|<float>|"<string>"|<Color>
  [ , name = <number>|<float>|"<string>"|<Color> ]...

Common Property Types:

Property Type
Content Description
Byte
8-bit value.
Boolean
True or False (case-insensitive).
Color
Either a Color enumeration value or the hex representation #RRGGBB, where RR is red, GG is green, and BB is blue.
Double
Double precision floating number.
Single
Single precision floating number.
Font
One or more of the following properties can appear within a Font property type:

Property
Description
Name
Name of the font (e.g., "Times New Roman").
Size
Size of the font in em units (e.g., "16").
Style
One or more FontStyle enumeration values separated by a "|" character (e.g., "FontStyle.Bold | FontStyle.Italic").
Int32
32-bit signed integer number.
Int64, Long
64-bit signed integer number.
Point
The format "X; Y" (not including quotes) where X and Y represent pixels and are integer numbers.
Size
The format "W; H" (not including quotes) where W (width) and H (height) represent pixels and are integer numbers.
String
Unicode string.
MSChart Property Types:

Property Type
Content Description
AnnotationCollection
Collection of text annotations. If the name does not exist, a text annotation is created, added to this collection, and returned (otherwise a reference to the existing text annotation is returned).
Axis
A reference to the axis object is returned.
ChartAreaCollection
Collection of chart areas. If the name does not exist, a chart area is created, added to this collection, and returned (otherwise a reference to the existing chart area is returned).
ChartArea3DStyle
A reference to the area chart 3D style object is returned.
DataPointCollection
Collection of data points. If the name does not exist, a data point is created, added to this collection, and returned (otherwise a reference to the existing data point is returned).
Grid
A grid type such as the axis major and minor grid elements.
LabelStyle
A label style such as the axis label style element.
LegendCollection
Collection of legends. If the name does not exist, a legend is created, added to this collection, and returned (otherwise a reference to the existing legend is returned).
NamedImagesCollection
Collection of named images. If the name does not exist, a named image is created, added to this collection, and returned (otherwise a reference to the existing named image is returned).
PaletteCustomColors
Specifies a custom color palette, which consists of one or more custom colors in the form of:

<Color> [ , <Color> ]...

The "Palette" property must also be set to "ChartColorPalette.None". In addition, this property should be set after all applicable series objects have been declared. The new custom colors will be automatically applied to the data points of each previously declared series.
SeriesCollection
Collection of series objects. If the name does not exist, a series is created, added to this collection, and returned (otherwise a reference to the existing series is returned).
TitleCollection
Collection of title objects. If the name does not exist, a title is created, added to this collection, and returned (otherwise a reference to the existing title is returned).
<default>
A known enumeration value.
MSChart Custom Property Types:

CustomProp Type
Content Description
DataPoint
Custom DataPoint attribute.
Series
Custom Series attribute,
Enumeration Values:

Enumeration values must be in the form of "<enumeration>.<enumeration member>" and are resolved from the following .NET 4.0 assemblies:

System.Windows.Forms.DataVisualization.Charting
System.Drawing

Parameters and Replacement:

Element attributes and element content can contain replacement parameters. Replacement parameters are substituted with the text of their correspondingly named parameters.

Replacement parameters begin with a "@" character followed by one or more alphanumeric characters or an underscore ("_"). If the terminating character of a replacement parameter is a semicolon, it is also discarded.

» Back to the Table of Contents. «

Appendix E
FPChartServer Process
The FinerEdge Publisher Chart Server (FPChartServer) is a separate process that supports multi-threaded environments and handles chart requests issued from the FinerEdge Publisher Engine (FPEngine). The FPEngine automatically handles initiation of the FPChartServer when necessary.

By default (and in most cases) the FPChartServer's window is not shown and the FPChartServer terminates after an adjustable timer expires with no activity (i.e., recently issued chart requests) within that timeframe. However, the behavior of the FPChartServer can be controlled by explicitly setting the FPChartServer parameters (all interfaces support setting the FPChartServer parameters by exposing either a property or method).

The FPChartServer parameters are used when the FPEngine needs to initiate an FPChartServer. If an FPChartServer is already initiated and chart requests can be issued, another FPChartServer will not be initiated. Therefore in a multi-threaded environment, the FPChartServer parameters should always be set (if other than the default is required) in case the FPEngine needs to initiate the FPChartServer.

The FPChartServer parameters are a string in the format (a hyphen "-" can be substituted for the slash character "/"):

[/<parameter>]...

The following table describes each FPChartServer <parameter>:

Parameter
Description
pipename
Must be followed by the simple name of the pipe, which defaults to "FPChartPipe" if not specified. The FPEngine uses this name for chart requests and, in addition, passes this name to the FPChartServer when it's initiated, which correspondingly also uses this name to service its chart requests.
show
Shows the FPChartServer window (otherwise the default is to not show the FPChartServer window).
threads
The number of FPChartServer threads to initiate, which defaults to 1. Each FPChartServer thread can handle a single chart request at a time. Therefore, if 4 FPChartServer threads are available and there 5 chart requests are pending, 4 will immediately be processed and 1 will wait until the next FPChartServer thread becomes available.
timeout
The number of seconds prior to the FPChartServer shutting down when no activity (i.e., chart requests) have been serviced within that timeframe, which defaults to 300 seconds (5 minutes). The FPEngine will automatically initiate the FPChartServer when a chart request is seen and no FPChartServer is currently initiated. An asterisk character indicates an infinite timeout (e.g., "/timeout *").
verbosity
The verbosity of the messages that appear in the FPChartServer's window. The values are "low" (default), "medium", and "high". A value other than "low" should also specify the "show" parameter (otherwise no messages can be seen).