Skip to content
View in the app

A better way to browse. Learn more.

FMForums.com

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Create PDF/UA with DynaPDF in FileMaker

Featured Replies

Accessible PDF documents are becoming increasingly important for government agencies, educational institutions, and companies that want to ensure their documents can be used by everyone, including people using assistive technologies like screen readers.

With the MBS FileMaker Plugin and the integrated DynaPDF library, you can create PDF/UA compliant documents directly from FileMaker.

What is PDF/UA?

PDF/UA stands for “PDF Universal Accessibility”. It is an ISO standard (ISO 14289) that defines how to create accessible PDF documents.

A normal PDF often contains only visual information. A human reader can see headings, paragraphs, tables, or image captions, but a screen reader cannot automatically understand the structure unless the PDF also contains semantic information.

PDF/UA solves this problem by adding structure information and accessibility metadata to the PDF document.

A PDF/UA document typically includes:

  • A document language

  • A structure tree

  • Tagged content

  • Accessible reading order

  • Alternative text for images

  • Proper heading hierarchy

  • Unicode text mapping

  • Metadata and viewer preferences

In practice this means a screen reader can identify whether text is:

  • A heading

  • A paragraph

  • A list

  • A table

  • A quotation

  • A figure

  • A label

  • Or other semantic content

Instead of just placing text visually on a page, you describe the meaning of the content.

Creating PDF/UA in FileMaker

The MBS FileMaker Plugin provides access to the DynaPDF library, which supports Tagged PDF and PDF/UA generation.

Compared to creating a normal PDF, only a few additional steps are required:

  • Enable the document title display

  • Define the document language

  • Create the structure tree

  • Use the PDF/UA version

  • Add semantic tags around content

The most important concept is tagging content with OpenTag and CloseTag.

For example:

  • Headings use H1, H2, H3…

  • Paragraphs use P

  • Lists use L

  • Table structures use Table, TR, TH, and TD

Without these tags, the PDF may still look correct visually, but it will not be accessible.

Simple PDF/UA Example

Here is a minimal example for generating a tagged PDF/UA document in FileMaker:

Set Variable [ $pdf ; Value: MBS( "DynaPDF.New" ) ]

Set Variable [ $path ; Value: MBS( "Path.AddPathComponent"; MBS( "Folders.UserDesktop" ); "Create PDF.pdf" ) ]

Set Variable [ $r ; Value: MBS( "DynaPDF.CreateNewPDF"; $pdf; $path ) ]

# We want to use top-down coordinates
Set Variable [ $r ; Value: MBS( "DynaPDF.SetPageCoords"; $pdf; "TopDown" ) ]

# Required: Display document title
Set Variable [ $r ; Value:
    MBS( "DynaPDF.SetViewerPreferences";
        $pdf;
        "DisplayDocTitle";
        "None"
    )
]

# Required: Set document language
Set Variable [ $r ; Value:
    MBS( "DynaPDF.SetLanguage";
        $pdf;
        "en-EN"
    )
]

# Required for Tagged PDF
Set Variable [ $r ; Value:
    MBS( "DynaPDF.CreateStructureTree";
        $pdf
    )
]

# Enable PDF/UA mode
Set Variable [ $r ; Value:
    MBS( "DynaPDF.SetPDFVersion";
        $pdf;
        "PDF/UA-1"
    )
]

Set Variable [ $r ; Value:MBS( "DynaPDF.AppendPage"; $pdf ) ]

Set Variable [ $pageWidth ; Value:
    MBS( "DynaPDF.GetPageWidth"; $pdf )
]

Set Variable [ $pageHeight ; Value:
    MBS( "DynaPDF.GetPageHeight"; $pdf )
]

Set Variable [ $r ; Value:
    MBS( "DynaPDF.SetTextRect";
        $pdf;
        50;
        50;
        $pageWidth - 100;
        $pageHeight - 100
    )
]

# Set font
Set Variable [ $r ; Value:
    MBS( "DynaPDF.SetFont";
        $pdf;
        "Arial";
        0;
        12;
        True
    )
]

# Open paragraph tag
Set Variable [ $r ; Value:
    MBS( "DynaPDF.OpenTag";
        $pdf;
        "P";
        "";
        "";
        ""
    )
]

# Write tagged text
Set Variable [ $r ; Value:
    MBS( "DynaPDF.WriteFText";
        $pdf;
        "Left";
        "Hello World" & ¶ & "Second line"
    )
]

# Close paragraph tag
Set Variable [ $r ; Value:
    MBS( "DynaPDF.CloseTag";
        $pdf
    )
]

# Close page, then file and free memory
Set Variable [ $r ; Value:
    MBS( "DynaPDF.EndPage";
        $pdf
    )
]

Set Variable [ $r ; Value:
    MBS( "DynaPDF.CloseFile";
        $pdf
    )
]

Set Variable [ $r ; Value:
    MBS( "DynaPDF.Release";
        $pdf
    )
]

Understanding the Structure Tree

A Tagged PDF internally contains a structure tree. This tree defines the logical structure of the document.

For example:

  • Document

    • H1

    • P

    • P

    • H2

    • P

    • Table

Each visible element on the page is connected to a semantic tag.

The call to:

MBS( "DynaPDF.CreateStructureTree"; $pdf )

creates the root structure node for the document.

After that, every OpenTag/CloseTag pair adds content into this structure hierarchy.

Adding Headings

For accessibility, headings are very important because screen readers use them for navigation.

Example:

# Heading level 1
Set Variable [ $r ; Value:
    MBS( "DynaPDF.OpenTag";
        $pdf;
        "H1";
        "";
        "";
        ""
    )
]

Set Variable [ $r ; Value:
    MBS( "DynaPDF.WriteText";
        $pdf;
        50;
        50;
        "Invoice"
    )
]

Set Variable [ $r ; Value:
    MBS( "DynaPDF.CloseTag";
        $pdf
    )
]

You should use heading levels in the correct order:

  • H1 for the main title

  • H2 for sections

  • H3 for subsections

Avoid skipping heading levels.

Alternative Text for Images

Images should include alternative descriptions so screen readers can explain their meaning.

For decorative images, you may mark them as artifacts instead.

Example image tag structure:

MBS( "DynaPDF.OpenTag"; $pdf; "Figure"; ""; ""; "" )

Then attach alternative text to the structure element.

This becomes especially important for charts, logos, diagrams, and icons.

Debugging PDF/UA Files

While developing accessible PDFs, debugging can help a lot.

For example, disabling compression makes it easier to inspect the PDF source code in a text editor:

MBS( "DynaPDF.SetCompressionLevel"; $pdf; 0 )

You can then search for:

  • Structure tags

  • Marked content

  • Metadata

  • Language definitions

Validation Tools

Creating a Tagged PDF does not automatically guarantee PDF/UA compliance.

You should validate your generated files with accessibility checking tools such as:

  • PAC (PDF Accessibility Checker)

  • Adobe Acrobat accessibility tools

  • veraPDF

These tools can identify:

  • Missing tags

  • Invalid reading order

  • Missing alternative text

  • Incorrect metadata

  • Font encoding problems

Things to Watch Out For Some common PDF/UA issues include:

  • Missing document language

  • Untagged content

  • Missing Unicode mappings

  • Incorrect reading order

  • Tables without TH cells

  • Images without alt text

  • Decorative elements not marked as artifacts

Accessibility is often less about visual appearance and more about semantic structure.

Conclusion

With only a few additional function calls, DynaPDF allows you to generate accessible PDF/UA documents directly from FileMaker.

The key steps are:

  • Create the structure tree

  • Set PDF/UA mode

  • Define language and viewer preferences

  • Add semantic tags around content

Once you start thinking in terms of document structure instead of only page layout, generating accessible PDFs becomes quite straightforward.

See an example script in Create Text as PDF/A example database.

Please try it and let us know if you have questions.

Create an account or sign in to comment

Important Information

By using this site, you agree to our Terms of Use.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.