Airdocx Documentation

  • Version: 1.3     Updated: 23 January, 2025

This documentation will guide you on how to use Airdocx according to best practices. If you have any questions that are beyond the scope of this documentation, feel free to email us.

Getting started

Airdocx is a powerful platform for generating professional and complex documents at scale. It works by combining dynamic templates with data, whether through forms or data sources.

Getting started with Airdocx is simple:

  1. Create an account
    Create your account and choose a plan that suits your needs. Airdocx offers both usage-based and subscription-based options.
    See our pricing page for more information.
  2. Create a form
    Use Airdocx's form builder to create a form that matches your document requirements.
    Learn how to create forms in the following sections.
  3. Upload a template
    Upload your template with tags that correspond to the form fields.
    Learn how to create templates with tags in the following sections.
  4. Generate documents
    You can start generating a document using the form or import data sources to generate multiple documents.

Forms

Forms are used to gather information to populate the tags within your document templates. They also contain the field types and tags needed to create your documents. In Airdocx, a form is required to create a document, and you can either generate a document directly from a form or create multiple documents using data sources, without manually entering data into the form.

  • Creating a form
    1. To create a new form, navigate to the Forms section from the sidebar and click on "Create new form" or you can access it from the Dashboard section and click on the icon.
    2. You will be presented with the form builder interface, where you can start adding fields to your form using an intuitive drag-and-drop interface. To create a cleaner layout, especially for forms with many fields, you can organize them into sections and tabs.
    3. Once you've added and customized your fields, click the "Create form" button. The form will be created, saved, assigned its own link, and you can make adjustments to it at any time as needed.
  • Field types
    Airdocx offers a variety of field types to capture different data inputs:
    • Text
      For single-line text input (e.g., names, titles).
    • Textarea
      For multi-line text input (e.g., addresses, descriptions).
    • Number
      For numeric input (e.g., quantities, prices).
    • Checkbox
      For toggle selection (e.g., yes/no options).
    • Radio Buttons
      For single choice selection from a list of options.
    • Dropdown
      For selecting a single option from a dropdown list.
    • Date
      For selecting a date using a date picker. Default format is dd/MM/yyyy (e.g., 18/09/2024).
    • Time
      For selecting a time using a time picker. Default format is hh:mm A (e.g., 04:27 PM).
    • Datetime
      For selecting both date and time. Default format is dd/MM/yyyy hh:mm A (e.g., 18/09/2024 04:27 PM).
    • Area
      For inputting area measurements (Square Foot, Square Meter, Hectare, Acre).
    • Image
      For uploading one or more image files (e.g., logos, property photos, or document scans).
      Airdocx supports .jpg, .jpeg, .png, .gif, .webp, and .bmp file formats.
  • Field settings
    Each form field can be edited with the following settings:
    • Label
      The name that appears next to the field.
    • Tag name
      Names without curly braces (e.g., first_name, sale_price) that are used to replace values in the templates.
    • Hint (optional)
      Additional information to help users fill out the field.
    • Required (optional)
      Mark the field as mandatory (where applicable).
    • List (optional)
      Enable multiple entries for certain fields.
    • Default (optional)
      Pre-fill the field with a default value (where applicable).

Templates

Templates serve as the foundation for generating personalized documents. They contain tags that will be replaced with the data you provide, enabling dynamic and personalized document generation. Each template is linked with its own form, which can be modified at any time.

Airdocx supports templates in the .docx format, which can be created using popular word processing applications like Microsoft Word, LibreOffice Writer, and Google Docs.

Creating a template is straightforward:

  1. Design the layout
    Begin by designing the layout of your document, or use an existing one, and identify where dynamic data will be inserted in a word processor of your choice. This layout can include text, images, tables, headers, footers, and any other necessary formatting for your document.
  2. Insert tags
    In your document, use tags to mark the spots where dynamic data will be inserted. You can copy these tags directly from the form you've created.
    Copy the tag from your form:
    Paste the tag to your template:
    Learn more about tags in the following sections.
  3. Save as .docx
    Once you’ve set up the document and inserted the necessary tags, save it as a .docx file. Airdocx only supports this file format, so it's essential to ensure the document is in the correct format for uploading.
  4. Upload to the form
    After saving the document, navigate to the Templates section in the form and upload the .docx file. This connection between the form and the template allows for seamless document generation using the data from the form fields.
    1. Navigate to the Templates section from the form editor:
    2. Click on Choose a file or drag a file to the upload area.
    3. Your template will then be automatically uploaded, and you can download, replace, preview, or delete it later, or upload another template to the form. Airdocx supports multiple templates for each record submitted using the form.
  5. Test and refine
    Once uploaded, it’s a good practice to generate a test document to ensure that all tags are working as expected and pulling the correct data from the associated form. If any errors or misalignments occur, edit the .docx file and re-upload the updated template.

Tags

Tags in Airdocx are dynamic placeholders used within your document templates to insert data seamlessly. They are defined by names enclosed in curly braces, such as {price}, {address}, or {invoice_date}, and are automatically replaced with corresponding values collected from forms or imported data sources when a document is generated.

  • Using tags
    • Define tags in forms
      Each form field needs to be assigned a unique tag. To define the tag, click the "Edit field" button to open the editor. In the editor, give the Tag name field a descriptive name, which will become the tag used in the template.
      For example, a field labeled "Property Name" might have the tag name property_name (without curly braces).
    • Insert tags in templates
      When designing your template, insert the tags you've defined, such as {property_name} or {sale_price}, wherever you want dynamic content to appear in your document. These tags are just normal text and will follow any styling applied in your document, such as bold, italic, or font size.
      Tags can be used multiple times in a template, calculated using mathematical operators, and formatted with modifiers.
    • Rules and guidelines
      • Naming conventions
        Tag names must start with a letter and can only contain letters (uppercase and lowercase), digits, or underscores. They must not contain spaces, are case-sensitive, and must be enclosed in curly braces ({}) to be used in templates.
      • Unique tag names
        Each tag name in a form must be unique. However, within a template, the same tag can be used multiple times in different locations, pulling the same data where necessary.
      • Calculating values with operators
        Tags can include arithmetic operations, such as {price * tax} or {total_amount - discount}, to perform calculations directly in the document.
        Learn more about operators in the following sections.
      • Formatting values with modifiers
        Tags can have modifiers enclosed in square brackets ([]), allowing additional functionality such as formatting numbers or dates, e.g., {price[round:2]} or {invoice_date[date:j F Y]}.
        Learn more about modifiers in the following sections.
  • Tag types
    Airdocx supports 4 types of tags for dynamically creating personalized documents:
    • Standard
      These tags are simple, user-defined placeholders that correspond to fields in the form. They populate a document with data, such as {first_name}, {sale_price}, or {address}, using values provided in the form or data source.
      If the values of these tags are numbers, the tags can be used with mathematical operators to output calculated results.
      Example
      Template
      Dear {first_name},
      The property sale price is ${sale_price}, but it is ${sale_price - reimbursement} after reimbursement.
      Values
      {first_name} = James
      {sale_price} = 560,000
      {reimbursement} = 60,000
      Result
      Dear James,
      The property sale price is $560,000, but it is $500,000 after reimbursement.
    • Conditional
      These tags enable dynamic content generation based on specific conditions. They begin with {#if:condition} and close with {/}. A condition is a logical statement that evaluates whether certain data meets defined criteria, determining whether content should be included or excluded in the generated document.
      You can use these tags to show or hide sections of a document based on their values. If the condition evaluates to true, the content inside the tags will appear in the document; if false, it will be omitted.
      The usage is straightforward, and there are several ways to implement it to achieve the desired output, as demonstrated below.
      • Simple — A condition based on a single value.
        Example
        Template
        {#if:status == "approve"}The approval is granted.{/}
        Value
        {status} = approve
        Result
        The approval is granted.

        Explanation:
        1. The {#if:status == "approve"}...{/} tag evaluates the condition status == "approve".
        2. In this case, the value of {status} is approve, which makes the condition true.
        3. Since the condition evaluates to true, the text inside the {#if} block, The approval is granted., is included in the generated document.
        4. If the value of {status} had been anything other than approve, the content inside the block would have been omitted.
      • Nested — A condition with another condition inside it.
        Example
        Template
        {#if:property_type == "residential"}The property is a residential unit{#if:sale_price > 500000} with the sale price exceeds $500,000{/}.{/}
        Values
        {property_type} = residential
        {sale_price} = 560,000
        Result
        The property is a residential unit with the sale price exceeds $500,000.

        Explanation:
        1. The outer condition {#if:property_type == "residential"} checks if {property_type} equals residential. In this case, it is true.
        2. Inside the outer block, there is a nested {#if} condition: {#if:sale_price > 500000}. This condition checks if {sale_price} is greater than 500,000.
        3. The value of {sale_price} is 560,000, so the nested condition evaluates to true. As a result, the text with the sale price exceeds $500,000 is included.
        4. Since both the outer and nested conditions are true, the final output is: The property is a residential unit with the sale price exceeds $500,000.
        Alternate scenario (nested condition is false):
        If the value of {sale_price} were 450,000 (not greater than 500,000), the nested condition {#if:sale_price > 500000} would evaluate to false. In that case:
        • The content inside the nested {#if} block, with the sale price exceeds $500,000, would be omitted.
        • The outer condition {#if:property_type == "residential"} would still be true, so the result would be: The property is a residential unit.
      • Math-based — A condition that includes a mathematical operation to evaluate the result.
        Example
        Template
        {#if:(sale_price - down_payment) > limit}The remaining balance after the down payment is greater than ${limit}.{/}
        Values
        {sale_price} = 560,000
        {down_payment} = 200,000
        {limit} = 300,000
        Result
        The remaining balance after the down payment is greater than $300,000.

        Explanation:
        1. The condition {#if:(sale_price - down_payment) > limit} performs a mathematical calculation before evaluation.
        2. The calculation (sale_price - down_payment) results in 560,000 - 200,000 = 360,000.
        3. The condition then checks if 360,000 > 300,000. This is true.
        4. As the condition evaluates to true, the text The remaining balance after the down payment is greater than $300,000. is included in the generated document.
        5. If the calculation or comparison had been false (e.g., if {limit} were 400,000), the content would have been omitted.
    • Iterative
      These tags enable dynamic content generation by repeating a template section for each value in a list provided through a list-enabled field. They begin with {#each:condition} and close with {/}. Similar to {#if}, a condition is a logical statement that evaluates whether certain data meets defined criteria, determining whether content should be included or excluded in the generated document. For {#each}, this condition is optional.
      Rules:
      1. List-enabled field:
        • A field with the "List" option enabled allows users to add multiple values of the same type.
        • These values are grouped under one {tag}, and users can add more using a "+" button below the input field.
        • When this {tag} is placed inside {#each}, a table row, or item list, the values will be repeated in the document.
          Example
          Template
          {#each}{property_name}
          {/}
          Values
          {property_name} =
          1. Sunset Villa West
          2. Sunset Villa East
          Result
          Sunset Villa West
          Sunset Villa East
      2. Index matching:
        • If multiple list-enabled fields are used together, {#each} ensures that values at the same index are paired (e.g., the first input of {tag1} matches the first input of {tag2}, the second input of {tag1} matches the second input of {tag2}).
      3. Optional conditions:
        • The {#each} tag can optionally include a condition to filter the values it iterates over.
        • Similar to {#if}, the condition evaluates each value individually and includes only those that satisfy the condition in the document.
      4. Nested conditional tags:
        • {#if} tags can be placed inside {#each} tags.
      Limitations:
      1. No nesting within itself:
        • {#each} tags cannot be placed inside another {#each} tag.
    • Reserved
      Reserved tags are predefined by Airdocx and are automatically filled when the document is generated. These tags starts with a dollar sign symbol ($). Available tags are:
      • {$document_name}: Displays the name of the document.
      • {$form_name}: Displays the name of the form.
      • {$now}: Displays the current date and time. Default format is d/m/Y h:i A (e.g., 18/09/2024 04:27 PM).
      • {$index}: Displays the index number when put inside a loop, either inside a {#each} tag or repeated row inside a table.

Operators

Airdocx operators are special symbols or characters used within tags to evaluate expressions, define conditions, and manipulate data dynamically during document generation.

  • Mathematical operators
    Used for performing calculations on numeric data.
    • + (Addition) : Adds two values.
    • - (Subtraction) : Subtracts one value from another.
    • * (Multiplication) : Multiplies two values.
    • / (Division) : Divides one value by another.
    • % (Modulus) : Returns the remainder of a division.
    • ^ (Exponentiation) : Raises one value to the power of another.
    • () (Parentheses) : Groups expressions to specify the order of operations.
  • Comparison operators
    Used to compare two values and return a Boolean result (true or false).
    • == (Equals) : Checks if two values are equal.
    • != (Not equal) : Checks if two values are not equal.
    • < (Less than) : Checks if the left value is less than the right.
    • > (Greater than) : Checks if the left value is greater than the right.
    • <= (Less than or equal to) : Checks if the left value is less than or equal to the right.
    • >= (Greater than or equal to) : Checks if the left value is greater than or equal to the right.
  • Logical operators
    Used to combine or negate conditions.
    • && (AND) : true if all conditions are true.
    • || (OR) : true if at least one condition is true.
    • ! (NOT) : Negates the condition (true becomes false, and vice versa).
  • Aggregate operators
    Used to compute summary values.
    These operators perform calculations only on list-enabled fields and are applied as suffixes to tag names.
    • .total or .sum : Calculates the total sum of the list.
    • .avg : Calculates the average value of the list.
    • .min : Retrieves the minimum value from the list.
    • .max : Retrieves the maximum value from the list.
    • .count : Counts the number of elements in the list.
    • .median : Calculates the median value of the list.
    • .range : Calculates the range (difference between max and min) of the list.
    Example
    Template
    The average house price is ${prices.avg}, with the lowest at ${prices.min}.
    Values
    {prices} =
    1. 450,000
    2. 320,000
    3. 280,000
    Result
    The average house price is $350,000, with the lowest at $280,000.

Modifiers

Airdocx modifiers are used to modify or format values within tags in your templates. These modifiers are written in square brackets and applied to the tags, such as {first_name[case:upper]}. They are case-insensitive, meaning [case:upper] and [Case:Upper] would work the same way. Multiple modifiers can be chained and applied to the tags to further format the values (e.g. {price[spellout][case:upper]}).

  • Case conversion
    Modifies text to uppercase, lowercase, title case, proper case, or sentence case.
    This modifier can be applied to Text, Textarea, Radio Buttons, and Dropdown tags, as well as to input that has been converted to alphabetical text (e.g., by using the Number to words modifier [spellout]).
    [case:type]
    • type
      Specifies how conversion occurs.
      • upper: Converts the text to uppercase.
      • lower: Converts the text to lowercase.
      • title: Capitalizes the first letter of each major word.
      • proper: Capitalizes the first letter of every word.
      • sentence: Capitalizes the first letter after each sentence-ending punctuation.
    Example
    Template
    {description[case:upper]}
    Value
    {description} = the property features a garden and a garage.
    Result
    THE PROPERTY FEATURES A GARDEN AND A GARAGE.
  • Date formatting
    Returns date formatted according to given format.
    This modifier can be applied to Date, Time, and Datetime tags.
    [date:format,locale,timezone]
    • format
      Specifies the output format of the date. This format follows the common date symbols listed below:
      • Day: d, D, E, F, e
      • d: Day of the month
        • d = 1 ... 31
        • do = 1st ... 31st
        • dd = 01 ... 31
      • D: Day of the year
        • D = 1 ... 366
        • Do = 1st ... 366th
      • E: Day of the week (text)
        • E = Mon ... Sun
        • EEEE = Monday ... Sunday
      • F: Day of week in month
        • F = 1 ... 5
        • Fo = 1st ... 5th
        • It tells you if a certain weekday is the first, second, third, fourth, or last occurrence in that month. For example, suppose today is Wednesday, September 25, 2024:
          • F would be 4, because it's the fourth Wednesday of September.
      • e: Local day of week
        • e = 1 ... 7
        • eo = 1st ... 7th
        • The numbering starts from 1, but the first day of the week can vary depending on the locale:
          • In most locales, Monday is the first day (Monday = 1, Sunday = 7).
          • In the US locale, Sunday is typically considered the first day (Sunday = 1, Saturday = 7).
      • Week: w, W
      • w: Week of year
        • w = e.g, 6
        • wo = e.g, 6th
        • ww = e.g, 06
      • W: Week of month
        • W = e.g, 2
        • Wo = e.g, 2nd
        • WW = e.g, 02
      • Month: M
      • M: Month in year
        • M = 1 ... 12
        • Mo = 1st ... 12th
        • MM = 01 ... 12
        • MMM = Jan ... Dec
        • MMMM = January ... December
        • MMMMM = J ... D
      • Year: y, Y, Q, G
      • y: Year
        • yy = e.g, 24
        • yyyy = e.g, 2024
      • Y: Week year (transition occurs on a week boundary)
        • YY = e.g, 24
        • YYYY = e.g, 2024
      • Q: Quarter
        • Q = 1 ... 4
        • Qo = 1st ... 4th
        • QQ = 01 ... 04
        • QQQ = Q1 ... Q4
        • QQQQ = 1st quarter ... 4th quarter
      • G: Era designator
        • G = AD
        • GGGG = Anno Domini
        • GGGGG = A
      • Time: h, H, k, K, m, s, a, A, B, z, Z
      • h: Hour in am/pm (1~12)
        • h = 1 ... 12
        • hh = 01 ... 12
      • H: Hour in day (0~23)
        • H = 0 ... 23
        • HH = 00 ... 23
      • k: Hour in day (1~24)
        • k = 1 ... 24
        • kk = 01 ... 24
      • K: Hour in am/pm (0~11)
        • K = 0 ... 11
        • KK = 00 ... 11
      • m: Minute
        • m = 0 ... 59
        • mm = 00 ... 59
      • s: Second
        • s = 0 ... 59
        • ss = 00 ... 59
      • a: Day period
        • a = am or pm
      • A: Day period (capitalized)
        • A = AM or PM
      • B: Flexible day period
        • B = at night, in the morning, in the afternoon, or in the evening
      • z: Time zone name
        • z = e.g., PDT
        • zzzz = e.g., Pacific Daylight Time
      • Z: Time zone
        • Z = e.g., -0800
        • ZZZZ = e.g., GMT-08:00
        • ZZZZZ = e.g., -08:00
      To include literal text (i.e., plain text), wrap the text you want to display literally in single quotes ('), with two single quotes producing one (e.g., hh 'o''clock' A, zzzz outputs 12 o'clock PM, Pacific Daylight Time).
      Common combinations:
      Format Returned values
      Date field = 18/09/2024
      dd/MM/yyyy (default) 18/09/2024
      MMM d, yyyy Sep 18, 2024
      MMMM d, yyyy September 18, 2024
      do 'of' MMMM yyyy 18th of September 2024
      EEEE, MMMM d, yyyy Wednesday, September 18, 2024
      Time field = 04:27 PM
      hh:mm A (default) 04:27 PM
      hh:mm a 04:27 pm
      h:mm A 4:27 PM
      h:mm a 4:27 pm
      HH:mm 16:27
      Datetime field = 18/09/2024 04:27 PM
      dd/MM/yyyy hh:mm A (default) 18/09/2024 04:27 PM
      MMM d, yyyy, HH:mm Sep 18, 2024, 16:27
      MMMM d, yyyy 'at' h:mm A September 18, 2024 at 4:27 PM
      do 'of' MMMM yyyy 'at' h:mm A 18th of September 2024 at 4:27 PM
      EEEE, MMMM d, yyyy 'at' h:mm A Wednesday, September 18, 2024 at 4:27 PM
      Example
      Template
      {sale_date[date:"MMMM d, yyyy"]}
      {closing_time[date:h:mm A]}
      {contract_signed[date:"MMMM d, yyyy 'at' h:mm A"]}
      Values
      {sale_date} = 18/09/2024
      {closing_time} = 04:27 PM
      {contract_signed} = 18/09/2024 04:27 PM
      Result
      September 18, 2024
      4:27 PM
      September 18, 2024 at 4:27 PM
      When the value of the format contains a comma or a quote, we wrap it in double quotation marks.
    • locale (optional)
      Displays dates in a specific language and region. (default follows your own locale setting)
      View the list of locales supported by Airdocx.
      Example
      Template
      {contract_signed[date:"EEEE, MMMM d, yyyy, h:mm A",ja_JP]}
      Value
      {contract_signed} = 18/09/2024 04:27 PM
      Result
      水曜日, 9月 18, 2024, 4:27 午後
    • timezone (optional)
      Adjusts the dates based on a specific timezone. (default follows your own timezone setting)
      View the list of timezones supported by Airdocx.
      Example
      Template
      {contract_signed[date:"EEEE, MMMM d, yyyy, h:mm A",ja_JP,Asia/Tokyo]}
      Value
      {contract_signed} = 18/09/2024 04:27 PM
      Result
      木曜日, 9月 19, 2024, 1:27 午前
  • Date Adjustment
    Adjusts dates by adding or subtracting a specified amount of time.
    This modifier can be applied to Date, Time, and Datetime tags.
    [offset:+/-N unit]
    • N
      A numeric value representing the amount of time to offset.
    • unit
      The time unit to apply the offset. Supported units include:
      • second or seconds
      • minute or minutes
      • hour or hours
      • day or days
      • month or months
      • year or years
    Example
    Template
    {sale_date[offset:-3 days]}
    {closing_time[offset:+2 hours]}
    {contract_signed[offset:+1 month +15 days]}
    Values
    {sale_date} = 18/09/2024
    {closing_time} = 04:27 PM
    {contract_signed} = 18/09/2024 04:27 PM
    Result
    15/09/2024
    06:27 PM
    02/11/2024 04:27 PM
  • Number formatting
    Modifies the appearance of numbers by adjusting decimal places, and separators for decimals and thousands.
    This modifier can be applied to Number and Area tags.
    [number:decimals,decimal_separator,thousands_separator]
    • decimals
      The number of decimal places you want to display (default is empty). If left empty, it will follow the original number's decimal places.
    • decimal_separator (optional)
      The symbol used for the decimal point (default is a dot (.)).
    • thousands_separator (optional)
      The symbol used to separate thousands (default is a comma (,)).
    Example
    Template
    {total[number:2,",",.]}
    {total[number:4]}
    Value
    {total} = 1,234.567
    Result
    1.234,57
    1,234.5670
    When the value of the parameters contains a comma, we need to wrap it in quotation marks (single quotes or double quotes).
  • Number rounding
    Adjusts a number's precision by rounding it to a specified decimal place or significant digit, with customizable rounding modes.
    This modifier can be applied to Number and Area tags.
    [round:precision,mode]
    • precision (optional)
      Positive number to round digits after the decimal; negative number to round significant digits before the decimal (default is 0).
    • mode (optional)
      Specifies how rounding occurs (default is up).
      • up: Rounds number away from zero when it is half way there, making 1.5 into 2 and -1.5 into -2.
      • down: Rounds number towards zero when it is half way there, making 1.5 into 1 and -1.5 into -1.
      • even: Rounds number towards the nearest even value when it is half way there, making both 1.5 and 2.5 into 2.
      • odd: Rounds number towards the nearest odd value when it is half way there, making 1.5 into 1 and 2.5 into 3.
    Example
    Template
    {total[round:2]}
    {total[round:-2]}
    {tax[round:2,down]}
    Values
    {total} = 1,234.567
    {tax} = 5.285
    Result
    1,234.57
    1,200
    5.28
  • Number abbreviation
    Converts large numbers into abbreviated forms.
    This modifier can be applied to Number and Area tags.
    [abbr:precision]
    • precision (optional)
      Specifies the number of decimal places to show in the abbreviated number (default is 2).
    Example
    Template
    {price[abbr]}
    {price[abbr:0]}
    {property_value[abbr:1]}
    {total_amount[abbr:1]}
    {annual_revenue[abbr:1]}
    Values
    {price} = 52,822
    {property_value} = 900,234
    {total_amount} = 2,500,000
    {annual_revenue} = 1,300,000,000
    Result
    52.82k
    53k
    900.2k
    2.5M
    1.3B
  • Number to words
    Converts numerical values into their word equivalents.
    This modifier can be applied to Number and Area tags.
    [spellout:locale]
    • locale (optional)
      Displays words in a specific language and region. (default follows your own locale setting)
      View the list of locales supported by Airdocx.
    Example
    Template
    {price[spellout]}
    {price[spellout:fr_FR]}
    Value
    {price} = 500,000
    Result
    five hundred thousand
    cinq cent mille
  • Alphabetic conversion
    Converts numbers into alphabetic characters.
    This modifier is suitable for converting the {$index} number into its alphabetic equivalent.
    [alpha]
    Example
    Template
    {$index[alpha]}
    Value
    {$index} = 2
    Result
    b
  • Roman conversion
    Converts numbers into Roman numerals.
    This modifier is suitable for converting the {$index} number into its roman numeral equivalent.
    [roman]
    Example
    Template
    {$index[roman]}
    Value
    {$index} = 2
    Result
    ii
  • Area unit conversion
    Convert area values from square feet (sqft) to other units like hectares (ha), acres (ac), and square meters (sqm).
    This modifier can be applied to Area tags.
    [area:unit]
    • unit
      Specifies the target unit for conversion. Supported units include:
      • ha: Converts square feet to hectares
      • ac: Converts square feet to acres
      • sqm: Converts square feet to square meters
    Example
    Template
    {land_size[area:ha]}
    Value
    {land_size} = 13,000
    Result
    0.1208
  • Image dimensions
    Resize images to specific dimensions.
    These modifiers can only be applied to Image tags and allow you to control the dimensions of images dynamically while maintaining the original aspect ratio.
    • [size:width,height]
      • width
        Specifies the width in pixels. The value must be greater than 0.
        Standalone version: [width:width]
      • height
        Specifies the height in pixels. The value must be greater than 0.
        Standalone version: [height:height]
      If both the width and height are equal, the modifier can be simplified to [size:value], where the value is either the width or height, and the image will be square.
    • [minSize:width,height]
      • width
        Specifies the minimum width in pixels. The value must be greater than 0.
        Standalone version: [minWidth:width]
      • height
        Specifies the minimum height in pixels. The value must be greater than 0.
        Standalone version: [minHeight:height]
      If both the width and height are equal, the modifier can be simplified to [minSize:value], where the value is either the width or height.
    • [maxSize:width,height]
      • width
        Specifies the maximum width in pixels. The value must be greater than 0.
        Standalone version: [maxWidth:width]
      • height
        Specifies the maximum height in pixels. The value must be greater than 0.
        Standalone version: [maxHeight:height]
      If both the width and height are equal, the modifier can be simplified to [maxSize:value], where the value is either the width or height.
    Example
    Template
    {image[maxWidth:75]}
    Value
    {image} = 
    Width = 150px, Height = 100px
    Result
    Width = 75px, Height = 50px